---------------------------------------------------------------------
-- 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("\n")
out("\n")
out("\n")
out("
\n")
end
function type_string (o)
return type(o) == "string"
end
function writeend()
out("
\n")
out("\n")
out("\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("
")
-- Write folder --
if t.folder then
ident = ident + 1
outln("
")
if link == nil then
writesubitems(t.folder, mainlink)
else
writesubitems(t.folder, link)
end
outln("
")
end
end
function writetopics(tree)
if (not tree) then return end
local i = 1;
local n = #tree
while i <= n do
outln("
")
writetopic(tree[i], nil)
outln("
")
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.")