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.")