diff options
Diffstat (limited to 'html/wb/wb_build.lua')
-rw-r--r-- | html/wb/wb_build.lua | 364 |
1 files changed, 364 insertions, 0 deletions
diff --git a/html/wb/wb_build.lua b/html/wb/wb_build.lua new file mode 100644 index 0000000..1963158 --- /dev/null +++ b/html/wb/wb_build.lua @@ -0,0 +1,364 @@ + +dofile("wb_usr.lua") + +lngCount = nil +lngSuffix = nil +lngIndex = nil +lngNext = nil +linkCount = 1 + +function readFile(filename) + local file = io.open(filename) + local text = file:read("*a") + file:close() + return text +end + +function writeFile(filename, text) + local file = io.open(filename, "w") + file:write(text) + file:close() +end + +-- ##################################################################### + +htmlFiles = {} + +function addHtmlFile(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 + + htmlFiles[f] = f + end +end + +-- ##################################################################### + +function writeIndexFile() + print("Writing \"../index"..lngSuffix..".html\".") + + local wb_index = readFile("template_index.html") + + wb_index = string.gsub(wb_index, "WB_TITLE", wb_usr.messages[lngIndex].title) + wb_index = string.gsub(wb_index, "WB_START_SIZE", wb_usr.start_size) + wb_index = string.gsub(wb_index, "WB_START_PAGE", lngIndex.."/"..wb_usr.tree.link) + if (lngCount > 1) then + wb_index = string.gsub(wb_index, "WB_LNG", lngSuffix) + else + wb_index = string.gsub(wb_index, "WB_LNG", "") + end + + writeFile("../index"..lngSuffix..".html", wb_index) +end + +-- ##################################################################### + +function writeTitleFile() + print("Writing \"../wb_title"..lngSuffix..".html\".") + + local wb_title = readFile("template_wb_title.html") + + wb_title = string.gsub(wb_title, "WB_BAR_TITLE", wb_usr.messages[lngIndex].bar_title) + wb_title = string.gsub(wb_title, "WB_TITLE_BGCOLOR", wb_usr.title_bgcolor) + wb_title = string.gsub(wb_title, "WB_SEARCH_LINK", wb_usr.search_link) + wb_title = string.gsub(wb_title, "WB_COPYRIGHT_LINK", wb_usr.copyright_link) + wb_title = string.gsub(wb_title, "WB_COPYRIGHT_NAME", wb_usr.copyright_name) + wb_title = string.gsub(wb_title, "WB_CONTACT", wb_usr.contact) + + if (lngCount > 1) then + wb_title = string.gsub(wb_title, "WB_LNG", lngSuffix) + else + wb_title = string.gsub(wb_title, "WB_LNG", "") + end + + writeFile("../wb_title"..lngSuffix..".html", wb_title) +end + +-- ##################################################################### + +function writeIndent(file, level) + -- base identation + file:write(" ") + + for i = 1, level*2, 1 do + file:write(" ") + end +end + +function getNodeName(node) + local name = nil + if (node.name[lngIndex]) then + name = node.name[lngIndex] + else + name = node.name["nl"] + end + + if not name then + error("Name not found.") + end + + return name +end + +function writeNode(file, node, opened, level, folder_index, folder_suffix, node_suffix, child_prefix) + if (node.folder) then -- folder + -- box image + writeIndent(file, level) + file:write("<p>") + + folder_suffix = folder_suffix .. "." .. folder_index + + file:write(child_prefix.."<img name=\"imgfolder"..folder_suffix.."\" ") + + if (opened) then + file:write("src=\"wb_img/minusnode"..node_suffix..".png\" ") + else + file:write("src=\"wb_img/plusnode"..node_suffix..".png\" ") + end + + file:write("onclick=\"toggleFolder('folder"..folder_suffix.."')\">") + + if (node.link) then + file:write("<a name=\"link"..linkCount.."folder"..folder_suffix.."\" class=\"el\" href=\""..lngIndex.."/"..node.link.."\">"..getNodeName(node).."</a>") + addHtmlFile(node.link) + linkCount = linkCount + 1 + else + file:write(" "..getNodeName(node)) + end + + file:write("</p>\n") + + -- folder div + writeIndent(file, level) + if (opened) then + file:write("<div id=\"folder"..folder_suffix.."\" style=\"display:block\">\n") + else + file:write("<div id=\"folder"..folder_suffix.."\">\n") + end + + local n = #(node.folder) + local next_folder_index = 0 + local next_node_suffix = "" + local next_child_prefix = "<img src=\"wb_img/vertline.png\">" + if (node_suffix == "last") then + next_child_prefix = "<img src=\"wb_img/blank.png\">" + end + for i = 1, n, 1 do + if (i == n) then + next_node_suffix = "last" + end + if (node.folder[i].folder) then + next_folder_index = next_folder_index + 1 + end + writeNode(file, node.folder[i], false, level+1, next_folder_index, folder_suffix, next_node_suffix, child_prefix..next_child_prefix) + end + + writeIndent(file, level) + file:write("</div>\n") + else -- leaf + if (node.link and node.link ~= "") then -- normal leaf + writeIndent(file, level) + file:write("<p>"..child_prefix.."<img src=\"wb_img/node"..node_suffix..".png\"><a class=\"el\" name=\"link"..linkCount.."folder"..folder_suffix.."\" href=\""..lngIndex.."/"..node.link.."\">"..getNodeName(node).."</a></p>\n") + addHtmlFile(node.link) + linkCount = linkCount + 1 + else -- separator leaf + writeIndent(file, level) + file:write("<p class=\"sep\">") + + local sep_child_prefix = string.gsub(child_prefix, "/vertline", "/sepvertline") + sep_child_prefix = string.gsub(sep_child_prefix, "/blank", "/sepblank") + + file:write(sep_child_prefix.."<img src=\"wb_img/sepnode.png\"></p>\n") + end + end +end + +function writeTree(file) + -- root node + file:write(" <h3><a name=\"link0folder.0\" class=\"el\" href=\""..lngIndex.."/"..wb_usr.tree.link.."\">"..getNodeName(wb_usr.tree).."</a></h3>\n") + addHtmlFile(wb_usr.tree.link) + + local folder = wb_usr.tree.folder + local n = #folder + local node_suffix = "" + local folder_index = 0 + for i = 1, n, 1 do + if (i == n) then + node_suffix = "last" + end + if (folder[i].folder) then + folder_index = folder_index + 1 + end + if (i == 1 and wb_usr.start_open) then + writeNode(file, folder[i], true, 1, folder_index, "", node_suffix, "") + else + writeNode(file, folder[i], false, 1, folder_index, "", node_suffix, "") + end + end +end + +function writeTreeFile() + print("Writing \"../wb_tree"..lngSuffix..".html\".") + + local file = io.open("../wb_tree"..lngSuffix..".html", "w") + + -- Write Header + local wb_tree = readFile("template_wb_tree.html") + file:write(wb_tree) + + -- Write Tree Nodes and Leafs + writeTree(file) + + -- Write Footer + file:write(" </div>\n") + file:write("</body>\n") + file:write("</html>\n") + + file:close() +end + +-- ##################################################################### + +lngMessages = +{ + search= { + en= "Simple Search", + pt= "Busca Simples", + es= "Busca Simples", + }, + exp_all= { + en= "Expand All Nodes", + pt= "Expande Todos os Nós", + es= "Ensanchar Todos Nodos", + }, + cont_all= { + en= "Contract All Nodes", + pt= "Contrai Todos os Nós", + es= "Contrato Todos Nodos", + }, + sync= { + en= "Sync Tree with Contents", + pt= "Sincroniza Árvore com Conteúdo", + es= "Sincroniza Árbol con el Contenido", + }, + lang= { + en= "Switch Language", + pt= "Troca Idioma", + es= "Cambie Idioma", + }, + next= { + en= "Next Link", + pt= "Próximo Link", + es= "Próximo Link", + }, + prev= { + en= "Previous Link", + pt= "Link Anterior", + es= "Link Anterior", + }, +} + +function writeBarFile() + print("Writing \"../wb_bar"..lngSuffix..".html\".") + + local file = io.open("../wb_bar"..lngSuffix..".html", "w") + + local wb_bar = readFile("template_wb_bar.html") + + wb_bar = string.gsub(wb_bar, "WB_EXPALL_ALT", lngMessages.exp_all[lngIndex]) + wb_bar = string.gsub(wb_bar, "WB_CONTALL_ALT", lngMessages.cont_all[lngIndex]) + wb_bar = string.gsub(wb_bar, "WB_SYNC_ALT", lngMessages.sync[lngIndex]) + wb_bar = string.gsub(wb_bar, "WB_NEXT_ALT", lngMessages.next[lngIndex]) + wb_bar = string.gsub(wb_bar, "WB_PREV_ALT", lngMessages.prev[lngIndex]) + + if (lngCount > 1) then + local lng_button = "<img src=\"wb_img/barlineright.png\">" + lng_button = lng_button .. "<a target=\"_top\" href=\"index_"..lngNext..".html\"><img alt=\""..lngMessages.lang[lngIndex].."\" src=\"wb_img/lng"..lngSuffix..".png\" onmouseover=\"this.src='wb_img/lng"..lngSuffix.."_over.png'\" onmouseout=\"this.src='wb_img/lng"..lngSuffix..".png'\" style=\"border-width: 0px\"></a>" + wb_bar = string.gsub(wb_bar, "WB_LNG_BUTTON", lng_button) + else + wb_bar = string.gsub(wb_bar, "WB_LNG_BUTTON", "") + end + + file:write(wb_bar) + file:close() +end + +-- ##################################################################### + +function writeSearchFile() + print("Writing \"../ssSearch"..lngSuffix..".html\".") + + local file = io.open("../ssSearch"..lngSuffix..".html", "w") + + local wb_search = readFile("template_ssSearch.html") + + wb_search = string.gsub(wb_search, "WB_SEARCH", lngMessages.search[lngIndex]) + + if (lngCount > 1) then + wb_search = string.gsub(wb_search, "WB_LNG", lngSuffix) + else + wb_search = string.gsub(wb_search, "WB_LNG", "") + end + + file:write(wb_search) + file:close() +end + +function writeSearchIndexFile() + print("Writing \"../wb_search"..lngSuffix..".txt\".") + + local file = io.open("../wb_search"..lngSuffix..".txt", "w") + + local v = next(htmlFiles, nil) + while v ~= nil do + file:write(lngIndex.."/"..v.."\n") + v = next(htmlFiles, v) + end + + file:close() +end + +-- ##################################################################### + +lngCount = 0 +local first_name = nil +local prev_elem = nil +for name, elem in pairs(wb_usr.messages) do + if (lngCount == 0) then + first_name = name + end + lngCount = lngCount + 1 + if (prev_elem) then + prev_elem.next = name + end + prev_elem = elem +end +prev_elem.next = first_name + +print("Building...") + +for name, elem in pairs(wb_usr.messages) do + lngIndex = name + lngNext = elem.next + + if (lngCount > 1) then + lngSuffix = "_"..lngIndex + else + lngSuffix = "" + end + + writeIndexFile() + writeTitleFile() + writeBarFile() + writeTreeFile() + writeSearchFile() + writeSearchIndexFile() +end + +print("Done.") |