문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. local p = {} --============ tree root ================ function p.main(frame) local i = 0 local str, gene = {}, {} local code = {} local codeinput = string.gsub(string.gsub(frame.args[1], "[\n]+", "\n"), "\n", "", 1) -- 입력한 코드 local rootClass = frame.args[2] local nodestyle = frame.args[3] -- 노드 스타일 local nodeClass = frame.args[4] -- 노드 클래스 local linkstyle = frame.args[5] -- 링크 스타일 local linkclass = frame.args[6] -- 링크 클래스 -- make tree node, link local function link() -- link return tostring(mw.html.create("div"):addClass(linkclass):cssText(linkstyle):done()) end local function node(text) -- node return '<li>' .. link() .. tostring( mw.html.create("span") :addClass('node ' .. nodeClass) :cssText(nodestyle):wikitext(link() .. text):done()) end local function repeats(str, cha) local _, n = string.gsub(str, cha, "") return n end for line in string.gmatch(codeinput, "([^\n]*)\n+") do str[i] = string.gsub(string.gsub(line, "*%s*", "*"), "*", "") gene[i] = repeats(line, "*") i = i + 1 end --==================================== local rootBox = "<ul " .. rootClass .. ">" .. link() i = -1 while str[i + 1] do i = i + 1 local cont = node(str[i]) if i == 0 then table.insert(code, rootBox .. cont) -- 앞에보다 뒤에가 작다 elseif gene[i - 1] < gene[i] then local times = gene[i] - gene[i - 1] for _ = 1, times do cont = '<ul>' .. link() .. cont end table.insert(code, cont) elseif gene[i - 1] == gene[i] then table.insert(code, '</li>' .. cont) elseif gene[i - 1] > gene[i] then local times = gene[i - 1] - gene[i] for _ = 1, times do cont = '</ul></li>' .. cont end table.insert(code, cont) end end return table.concat(code) end return p 이 문서에서 사용한 틀: 모듈:Tree diagram/설명문서 (원본 보기) 모듈:Tree diagram 문서로 돌아갑니다.