diff options
Diffstat (limited to 'html/wb/make_hh.lua')
-rw-r--r-- | html/wb/make_hh.lua | 274 |
1 files changed, 274 insertions, 0 deletions
diff --git a/html/wb/make_hh.lua b/html/wb/make_hh.lua new file mode 100644 index 0000000..c7a5b6c --- /dev/null +++ b/html/wb/make_hh.lua @@ -0,0 +1,274 @@ +--------------------------------------------------------------------- +-- This program converts from Tecgraf's WebBook to HTML Help Project Files. +-- by Mark Stroetzel Glasberg and Antonio Scuri +-- 09 Dec, 2004 +--------------------------------------------------------------------- + +languages_description = { + en = "0x0409 English - United States", + es = "0x040A Spanish - Standard", + fr = "0x040C French - Standard", + de = "0x0407 German - Standard", +-- pt = "0x0816 Portuguese - Standard", + pt = "0x0416 Portuguese - Brazil", + it = "0x0410 Italian - Standard" +} + +-- INITIALIZATION --------------------------------------------------- + +function isinlist(lng, list) + local i = 1 + local n = #list + while i <= n do + if list[i] == lng then + return 1 + end + i = i + 1; + end + return nil +end + +-- BASIC FUNCTIONS -------------------------------------------------- + +function out(string) + file:write(string) +end + +function outln(string) + local i = ident + 1 + while i>0 do + file:write(" ") + i = i - 1 + end + file:write(string.."\n") +end + +-- HHP FILE FUNCTIONS ------------------------------------------------ + +files = {} + +function add2files(v) + if v then + -- only up to "#" + local j = string.find(v, "#") + if j then + f = string.sub(v, 0, j-1) + else + f = v + end + + files[f] = f + end +end + +function writehhpheader() + out("[OPTIONS]\n") + outln("Binary Index=No") + outln("Compatibility=1.0") + outln("Compiled file=" .. wb_usr.file_title .. "_" .. lng .. ".chm") + outln("Contents file=wb_tree" .. "_" .. lng .. ".hhc") + outln("Default topic=" .. lng .. "/" .. wb_usr.tree.link) + outln("Display compile notes=Yes") + outln("Display compile progress=Yes") + outln("Full-text search=Yes") + outln("Language="..languages_description[lng]) + outln("Title="..wb_usr.messages[lng].title) + out("\n") + out("[FILES]\n") + outln(lng .. "/" .. wb_usr.tree.link) +end + +function writehhpfooter() + local tmp = [[ +[INFOTYPES] + ]] + out(tmp) +end + +function writehhpcenter() + if (not files) then return end + + local v = next(files, nil) + while v ~= nil do + outln(dir..v) + v = next(files, v) + end +end + +function writehhp() + writehhpheader() + writehhpcenter() + writehhpfooter() +end + + +-- HHC FILE FUNCTIONS ------------------------------------------------ + +function writeheader() + out("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n") + out("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n") + out("<HTML>\n") + out("<HEAD>\n") + out("<meta name=\"GENERATOR\" content=\"Microsoft® HTML Help Workshop 4.1\">\n") + out("<!-- Sitemap 1.0 -->\n") + out("<!-- Generated by WebBook -->\n") + out("</HEAD><BODY>\n") + out(" <UL>\n") + out(" <LI> <OBJECT type=\"text/sitemap\">\n") + out(" <param name=\"Name\" value=\""..wb_usr.messages[lng].title.."\">\n") + out(" <param name=\"Local\" value=\""..lng .. "/" .. wb_usr.tree.link .. "\">\n") + out(" </OBJECT>\n") +end + +function type_string (o) + return type(o) == "string" +end + +function writeend() + out(" </UL>\n") + out("</BODY>\n") + out("</HTML>\n") +end + +function writesubitems(tree, mainlink) + if (not tree) then + return + end + local i = 1 + local n = #tree + while i <= n do + writetopic(tree[i], mainlink) + i = i + 1 + end + ident = ident - 1 +end + +-- mainlink is the link of the father -> if no link is specified +-- this is the one that is used. +function writetopic(t, mainlink) + local link + local topic_name + + add2files(mainlink) + + if t.name == nil then + print("ERROR: Title is nil.") + return + end + + if (t.name[lng]) then + topic_name = t.name[lng] + else + topic_name = t.name["nl"] + end + + if topic_name == nil then + print("ERROR: Title is nil in language [" .. lng .. "].") + return + end + + if t.link and t.link ~= "" then + link = t.link + else + link = nil + end + + add2files(link) + + if t.bookmark then + if link == nil and mainlink == nil then + print("Error saving bookmark!!!") + return + end + + if link then + linkB = link .. "#" .. t.bookmark + else + linkB = mainlink .. "#" .. t.bookmark + end + else + linkB = nil + end + + outln("<LI> <OBJECT type=\"text/sitemap\">") + outln("<param name=\"Name\" value=\""..topic_name.."\">") + if linkB then + outln("<param name=\"Local\" value=\""..dir..linkB.."\">") + else + if link then + outln("<param name=\"Local\" value=\""..dir..link.."\">") + end + end + if useimage == 1 then + if t.folder then + if ident == 0 then + outln("<param name=\"ImageNumber\" value=\"1\">") + else + outln("<param name=\"ImageNumber\" value=\"6\">") + end + else + outln("<param name=\"ImageNumber\" value=\"11\">") + end + end + outln("</OBJECT>") + + -- Write folder -- + if t.folder then + ident = ident + 1 + outln("<UL>") + if link == nil then + writesubitems(t.folder, mainlink) + else + writesubitems(t.folder, link) + end + outln("</UL>") + end + +end + +function writetopics(tree) + if (not tree) then return end + local i = 1; + local n = #tree + while i <= n do + outln("<UL>") + writetopic(tree[i], nil) + outln("</UL>") + i = i + 1 + end +end + +-- MAIN ------------------------------------------------------------- + +-- lng -> from the command line + +dofile("wb_usr.lua") + +if (not arg[1]) then + error("Missing language parameter.") +end + +lng = arg[1] +dir = lng.."/" +ident = 0 +useimage = 1 -- Use images based on given information +file = nil + +print("Writing \"wb_tree" .. "_" .. lng .. ".hhc\" file.") +file = io.open("wb_tree" .. "_" .. lng .. ".hhc", "w") +writeheader() +writetopics(wb_usr.tree.folder) +writeend() +file:close() + +if ident ~= 0 then + print("Ident not correct!") +end + +print("Writing \"wb" .. "_" .. lng .. ".hhp\" file.") +file = io.open("wb" .. "_" .. lng .. ".hhp", "w") +writehhp() +file:close() + +print("done.") + |