mirror of
https://github.com/elua/elua.git
synced 2025-01-08 20:56:17 +08:00
6137c01714
Please read file readme.txt on /doc for more info.
365 lines
10 KiB
Lua
Executable File
365 lines
10 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 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 <20>rvore com Conte<74>do",
|
||
es= "Sincroniza <20>rbol con el Contenido",
|
||
},
|
||
lang= {
|
||
en= "Switch Language",
|
||
pt= "Troca Idioma",
|
||
es= "Cambie Idioma",
|
||
},
|
||
next= {
|
||
en= "Next Link",
|
||
pt= "Pr<EFBFBD>ximo Link",
|
||
es= "Pr<EFBFBD>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.")
|