summaryrefslogtreecommitdiff
path: root/html/wb/make_hh.lua
diff options
context:
space:
mode:
Diffstat (limited to 'html/wb/make_hh.lua')
-rw-r--r--html/wb/make_hh.lua274
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&reg; 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.")
+