(* Index file sorted by full classification line *) maintainIndexf := ( Print["Running maintainIndexf ..."]; filesample = ToFileName[{dirwork, "templates"}, "indexf.htm"]; checkfile[filesample]; text = Import[filesample, "Text"]; spanRead[text]; spanNew["topline"] = toplinefix[spanOld["topline"]]; line0 = linef0 = ""; type0 = ""; spanNew["items"] = Table[ {{itype, kingdom, phylum, class, order, family, name, type, sciname, synonyms, link}, name} = namedata; (* see maintain-sort.m *) {kingdom, phylum, class, order, family} = If[# === "zzzUndefined", "Not assigned", #] &/@ {kingdom, phylum, class, order, family}; type1 = Replace[type, {"mushroom" -> "Fungi", "lichen" -> "Lichens", "slime mold" -> "Slime molds", "unknown" -> "Other categories"}]; namehtml = sciname; familyen = ToUpperCase[family]; nofamily = "not assigned"; familyL = ToLowerCase[family]; If[familyL === nofamily, familyen = "NOT ASSIGNED to a family"]; line1 = classlinefix["kingdom > phylum > class > order"]; classlinefull = classlinefix["kingdom > phylum > class > order > family > species"]; nameL = ToLowerCase[name]; nameUnd = StringReplace[name, " " -> "_"]; nameLUnd = ToLowerCase[nameUnd]; nameen0 = commonName[name]; nameen = If[nameen0 === "", name, capitalize[nameen0] <> " (" <> name <> ")"]; nameen1 = If[nameen0 === "", name, name <> " " <> longdash <> " " <> nameen0]; usynonyms = usedSynonyms[name]; msynonyms = Length[synonyms]; synonyms = If[MemberQ[usynonyms, #], "" <> # <> "", #] &/@ synonyms; synline = If[msynonyms == 0, "", If[msynonyms == 1, synonyms[[1]], StringJoin[Riffle[synonyms, ", "]] ]]; synlineen = If[msynonyms == 0, "", If[msynonyms == 1, "

Synonym: " <> synline <> ".

", "

Synonyms: " <> synline <> ".

" ]]; spanNew["type"] = If[type1 === type0, "", noPrint[type," - starts from: ",name]; StringReplace[spanOld["type"], "TYPE" -> "

ToString[itype] <> "\">" <> type1 <> "

"]]; type0 = type1; spanNew["order"] = If[line1 === line0, "", StringReplace[spanOld["order"], "LINEORDER" -> line1]]; line0 = line1; linef1 = familyen; If[familyL =!= nofamily, linef1 = " family <> "\">" <> linef1 <> ""]; spanNew["family"] = If[linef1 === linef0, "", StringReplace[spanOld["family"], "FAMILYTR" -> linef1]]; linef0 = linef1; spanNew["species"] = StringReplace[spanOld["species"], "NAMETR" -> nameen]; spanNew["synonyms"] = If[synline === "", "", StringReplace[spanOld["synonyms"], "SYNONYMS" -> synline]]; (* cnames = translatename[idname, "en"]; *) spanNew["common"] = ""; (* show it only on individual mushroom pages *) spanNew["wiki"] = ""; spanNew["pictures"] = StringReplace[spanOld["pictures"], "amanita_muscaria.htm" -> nameLUnd <> ".htm"]; set = picSet[name]; set = {toyear[#[[1]]], #[[1]], #[[2]]} &/@ set; If[Length[set] > 1, spanNew["pictures"] = StringReplace[spanNew["pictures"], "amanita_muscaria.jpg" -> nameLUnd <> ".jpg"], {year, roll, pic} = set[[1]]; urljpg = "asergeev/pictures/archives/compress/" <> year <> "/" <> roll <> "/" <> "/jpeg/" <> pic <> "t.jpg"; spanNew["pictures"] = StringReplace[spanNew["pictures"], "pic/amanita_muscaria.jpg" -> urljpg], Print["Error: No pictures for the name: ", name]; spanNew["pictures"] = ""; ]; spanReplace[spanOld["items"]], {namedata, namesData}] // StringJoin; spanNew["familylist"] = Table[ StringReplace[spanOld["familylist"], "FamilyName" -> family], {family, familyList}] // StringJoin; epilog = StringReplace[epilog0, {"SCRIPTNAME" -> "indexf", RegularExpression["(?i)\\s*
  • .*?\"indexf.htm\".*"] -> ""}]; spanNew["epilog"] = epilog; text = spanReplace[text]; file = ToFileName[dir0, "indexf.htm"]; Export[file, text, "Text"]; );