(* Added data for names missing in gbif.org *) maintainDataAdded[name_String] := Module[{x, nameul, file, match, tag, data, fullname, name0, key, link, synonyms, exclusions, taxonomy, m}, dirAdd = FileNameJoin[{dirwork, "data", "search", "added"}]; checkdir[dirAdd]; nameul = StringReplace[name, " " -> "_"]; file = FileNameJoin[{dirAdd, nameul <> ".txt"}]; If[FileExistsQ[file], Print["Reading data from added file ", file]; lines = Import[file, "Lines"]; match := WhitespaceCharacter ... ~~ tag ~~ ":" ~~ WhitespaceCharacter ... ~~ x__ ~~ WhitespaceCharacter ...; tag = "EXCLUDE"; data = Select[lines, StringMatchQ[#, match] &]; If[data =!= {}, data = StringReplace[Last[data], match :> x]; data = StringSplit[data, ","]; data = StringTrim /@ data; exclusions = Select[data, StringMatchQ[#, matchName2] &]; If[exclusions =!= data, Print["Error: Added data: file ", file, ": wrong format of exclusions: ", data]]; addNameData[name, "exclusions"] = exclusions; ]; tag = "COMMONNAMES"; data = Select[lines, StringMatchQ[#, match] &]; If[data =!= {}, data = StringReplace[Last[data], match :> x]; data = StringSplit[data, ","]; data = StringTrim /@ data; (*data = {"Added", #}&/@ data;*) addNameData[name, "commonNames"] = Union[data]; ]; (* name *) tag = "FULLNAME"; data = Select[lines, StringMatchQ[#, match] &]; If[data =!= {}, data = StringReplace[Last[data], match :> x]; fullname = data; data = StringSplit[data]; If[Length[data] > 1, name0 = data[[1]] <> " " <> data[[2]]; If[name === name0, (* Main body *) addNameData[name, "ifexists"] = True; addNameData[name, "fullname"] = fullname; addNameData[name, "synonym"] = False; tag = "LINK"; data = Select[lines, StringMatchQ[#, match] &]; If[data =!= {}, data = StringReplace[Last[data], match :> x]; addNameData[name, "link"] = data; ]; tag = "SYNONYMS"; data = Select[lines, StringMatchQ[#, match] &]; If[data =!= {}, data = StringReplace[Last[data], match :> x]; data = StringSplit[data, ","]; data = StringTrim /@ data; synonyms = Select[data, StringMatchQ[#, matchName2] &]; If[synonyms =!= data, Print["Error: Added data: file ", file, ": wrong format of synonyms: ", data]]; addNameData[name, "synonyms"] = Union[synonyms]; ]; tag = "TAXONOMY"; data = Select[lines, StringMatchQ[#, match] &]; If[data =!= {}, data = StringReplace[Last[data], match :> x]; data = StringSplit[data, ("," | " ") ..]; data = StringTrim /@ data; taxonomy = Select[data, StringMatchQ[#, matchName1] &]; m = Length[taxonomy]; If[taxonomy =!= data || !(m == 6 || m == 9), Print["Error: Added data: file ", file, ": wrong format of taxonomy: ", data]]; If[m == 9, taxonomy = taxonomy[[{1, 3, 5, 7, 8, 9}]]; ]; If[Length[taxonomy] == 6, {addNameData[name, "kingdom"], addNameData[name, "phylum"], addNameData[name, "class"], addNameData[name, "order"], addNameData[name, "family"], addNameData[name, "genus"]} = taxonomy; ]; ], (* End of main body *) Print["Warning: name mismatch in file ", file]; addNameData[name, "ifexists"] = False; ]; ]; ]; ]; ];