mirror of
https://github.com/elua/elua.git
synced 2025-01-08 20:56:17 +08:00
396 lines
12 KiB
Lua
Executable File
396 lines
12 KiB
Lua
Executable File
|
|
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 loadSearch()
|
|
local searchHTML = readFile("template_wb_search.html")
|
|
|
|
if(wb_usr.enable_search == true)then
|
|
searchHTML = string.gsub(searchHTML, "WB_SEARCH_LABEL", wb_usr.search_label or "")
|
|
searchHTML = string.gsub(searchHTML, "WB_SEARCH_LINK", wb_usr.search_link)
|
|
else
|
|
searchHTML = ""
|
|
end
|
|
return searchHTML
|
|
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, "TITLE_BAR_HEIGHT", wb_usr.title_bar_height or 51)
|
|
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")
|
|
if(wb_usr.logo_image_file ~= nil and wb_usr.logo_image_file ~= "")then
|
|
wb_title = string.gsub(wb_title, "WB_LOGO", [[<img src="wb_img/]]..wb_usr.logo_image_file..[[" border="0">]])
|
|
else
|
|
wb_title = string.gsub(wb_title, "WB_LOGO","")
|
|
end
|
|
|
|
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_FORM",loadSearch())
|
|
|
|
local copyrightHTML = ""
|
|
if (wb_usr.copyright_link ~= nil and wb_usr.copyright_name ~= nil and wb_usr.copyright_link ~= "" and wb_usr.copyright_name ~= "")then
|
|
copyrightHTML = [[<a class="contact" target="_blank" href="WB_COPYRIGHT_LINK">© WB_COPYRIGHT_NAME</a>]]
|
|
copyrightHTML = string.gsub(copyrightHTML, "WB_COPYRIGHT_LINK", wb_usr.copyright_link)
|
|
copyrightHTML = string.gsub(copyrightHTML, "WB_COPYRIGHT_NAME", wb_usr.copyright_name)
|
|
end
|
|
wb_title = string.gsub(wb_title, "WB_COPYRIGHT", copyrightHTML)
|
|
|
|
local contactHTML = ""
|
|
if wb_usr.contact ~= nil and wb_usr.contact ~= "" then
|
|
contactHTML = string.gsub([[<a class="contact" href="mailto:WB_CONTACT">(WB_CONTACT)</a>]], "WB_CONTACT", wb_usr.contact)
|
|
end
|
|
wb_title = string.gsub(wb_title, "WB_CONTACT", contactHTML)
|
|
|
|
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")
|
|
if wb_usr.tree.footer then
|
|
file:write(wb_usr.tree.footer)
|
|
end
|
|
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.")
|