?- idx1 := newVector([]);
?- fileName := "_";
main() :-
dirs := newFileReader("metaf.txt"),
curVec := newVector([]),
directories(getName())
;
directories(null) :- !, converted;
directories(Name) :-
make(Name),
createTable(Name),
fail
;
directories(Name) :-
curVec := newVector([]),
directories(getName())
;
mainn(X, Dir1, Dir2) :-
XML = readXML("files/"+X+".xml"),
Items = eXElem(XML, "//webster/item"),
itemsNext := eXElem(XML, "//webster/item/item"),
createFiles(Items, Dir1, Dir2)
;
/*------генерация HTML файла первого item уровня---------*/
createFiles(Enum, _, _) :- exhausted(Enum), !;
createFiles(Enum, Dir1, Dir2) :-
It = eValue(Enum),
Word = sTrim(getXText(It, "//title")),
Namef = correctName(Word),
Namelinks =Dir2+"_Index.html",
ItemsEnum = eXElem(It, "/item/item"),
HTML =
TeaCode Webster
,
writeHTML("webster/"+Dir1+"/"+Dir2+"/"+ Namef +".html", HTML, "w"), !,
vAdd(^curVec, Namef),
write(Namef+nl()),!,
createFiles(eNext(Enum), Dir1, Dir2)
;
createFile(ItemEnum) :- exhausted(ItemEnum), !, [];
createFile(ItemEnum) :-
It = eValue(ItemEnum),
Spell = sTrim(getXText(It, "//spell")),
Type = sTrim(getXText(It, "//type")),
Source = sTrim(getXText(It, "//Source")),
Date = sTrim(getXText(It, "//Date")),
Description = getXText(It, "//description"),
TABLE =
|
_trLine("Произношение:", Spell, "#404040");
_trLine("Часть речи:", Type, "#606060");
_trLine("Происхождение:", Source, "#606060");
_trLine("Появление:", Date, "#A0A0A0");
_trLine("Определение:", Description, "#c0c0c0");
|
|
,
[TABLE | createFile(eNext(ItemEnum))]
;
trLine(_, "") :- !, [];
trLine(Title, Content) :-
| _Title; |
|
_Content; |
;
trLine(_, "", _) :- !, [];
trLine(Title, Content, Color) :-
| _Title; |
|
_Content; |
;
correctName(Str) :- V = sToU(Str), corr(V, vLength(V)-1), uToS(V);
corr(_, -1) :- true;
corr(V, I) :- C = vGet(V, I), (C ='.'## C = ':' ## C = '/' ## C = 39 ## C = '?'), !, vSet(V, I, '_'), corr(V, I-1);
corr(V, I) :- corr(V, I-1);
/*Создание новой директории с последующим копированием XML файлов в эту директорию*/
make(null) :- !;
/* однобуквенные директории */
make(Name) :-
sLength(Name)=1, !,
writeHTML("webster/"+^fileName+"/"+^fileName+".html", createIndexHTML(^fileName, ^idx1, "../index.html#TABLE", "../index.html"), "w"),
fileName := Name,
idx1 := newVector([_Name; | ]),
mkDir("webster/"+Name),
mkDir("webster/"+Name+"/"+Name),
mainn(Name, Name, Name)
;
/* двухбуквенные директории */
make(Name) :-
CurrentSingle = subString(Name, 0, 1),
vAdd(^idx1, _Name; | ),
mkDir("webster/"+CurrentSingle+"/"+Name),
mainn(Name, CurrentSingle, Name)
;
getName() :- readLine(^dirs);
createTable(Name) :-
Dir = subString(Name, 0, 1),
newlink :="../"+Dir+"/"+Name+"/",
numbertd:=0,
List = cT(enum(^curVec)),
HTML = createIndexHTML(Name, List, "../"+Dir+".html", "../../index.html#TABLE"),
writeHTML("webster/"+Dir+"/"+Name+"/"+Name+"_Index.html", HTML, "w")
;
cT(Enum) :- exhausted(Enum), !, [];
cT(Enum) :-
El = eValue(Enum),
setNumtd(),
Ell = getTr(^numbertd),
[_El; | , Ell | cT(eNext(Enum))];
/*cT(Enum) :- El = eValue(Enum),[ _El; | | cT(eNext(Enum))];*/
getLinks(Str1,Str2):-NewStr=Str1+Str2+"/"+Str2+".html",NewStr;
getTr(Tr):-Tr !=6, "";
getTr(Tr):-Tr=6,Gtr=(
),numbertd:=0,
;
setNumtd():-numbertd:=^numbertd+1,numbertd;
/* ************** createIndexHTML ********************* */
createIndexHTML(Name, List, Back, Home) :-
TeaCode Webster
;
t(X) :- trace("level", X);