The Gundam Wiki
The Gundam Wiki
(Created page with "local a={}local b=require("Module:TableTools")local c=require("Module:Json")local d="([;~\[].*)"function a.grow(e,f,g,h)f=f or''g=g or{}h=h or{}local i={}for j,k in pairs(e)do...")
 
No edit summary
Line 1: Line 1:
local a={}local b=require("Module:TableTools")local c=require("Module:Json")local d="([;~\[].*)"function a.grow(e,f,g,h)f=f or''g=g or{}h=h or{}local i={}for j,k in pairs(e)do if k.parent==f then i[j]=k end end;if b.size(i)>0 then if f==''then h=i else table.insert(g,i)end;for j,k in pairs(i)do a.grow(e,j,k)end end;return h end;function a.to_csv(h,l)local m=""local n=0;if l==nil then return a.to_csv(h,0)end;for o=0,l do n=n+1 end;for j,k in pairs(h)do if type(k)=="table"then if type(j)=="number"then m=m..a.to_csv(k,l)else local p=j..","if k["extra"]~=nil then p=j..k["extra"]..","end;m=m..l.."_"..p..a.to_csv(k,l+1)end end end;return m end;function a.to_mw(h,frame,l)local m=""local r=""if l==nil then return a.to_mw(h,frame,0)end;for o=0,l do r=r.."*"end;for j,k in pairs(h)do if type(k)=="table"then if type(j)=="number"then m=m..string.sub(r,1,-l-2)..a.to_mw(k,frame,l)else local p=j;if k["extra"]~=nil then p=j..k["extra"]end;p=frame:preprocess("{{SemanticInputParser|value="..p.."}}").."\n"m=m..r..p..a.to_mw(k,frame,l+1)end end end;return m end;function a.from_csv(frame)local s=a.from_csv0(frame)if type(s)=="table"then return a.to_csv(s)else return""end end;function a.from_csv0(frame)local t=function(u)return mw.text.trim(string.gsub(u,d,''),"\t\r\n\f ")end;if#t(frame.args[1])<1 then return''end;local v=frame.args[2]local w=mw.text.split(frame.args[1],'%s*,%s*')local e={}for x,y in ipairs(w)do local z=t(y)if#z>0 then local A=string.match(y,d)local B=frame:preprocess("{{#show:"..z.."|?"..v.."|+index=1|format=array}}")local C=mw.text.split(B,"<MANY>")s_available_parent=''for o,D in ipairs(C)do for E,F in ipairs(w)do if D==t(F)then s_available_parent=D end end end;e[z]={["parent"]=s_available_parent,["extra"]=A}end end;return a.grow(e)end;function a.from_csv2(frame)local s=a.from_csv0(frame)if type(s)=="table"then return a.to_mw(s,frame)else return""end end;return a
+
local a={}local b=require("Module:TableTools")local d="([;~\[].*)"function a.grow(e,f,g,h)f=f or''g=g or{}h=h or{}local i={}for j,k in pairs(e)do if k.parent==f then i[j]=k end end;if b.size(i)>0 then if f==''then h=i else table.insert(g,i)end;for j,k in pairs(i)do a.grow(e,j,k)end end;return h end;function a.to_csv(h,l)local m=""local n=0;if l==nil then return a.to_csv(h,0)end;for o=0,l do n=n+1 end;for j,k in pairs(h)do if type(k)=="table"then if type(j)=="number"then m=m..a.to_csv(k,l)else local p=j..","if k["extra"]~=nil then p=j..k["extra"]..","end;m=m..l.."_"..p..a.to_csv(k,l+1)end end end;return m end;function a.to_mw(h,frame,l)local m=""local r=""if l==nil then return a.to_mw(h,frame,0)end;for o=0,l do r=r.."*"end;for j,k in pairs(h)do if type(k)=="table"then if type(j)=="number"then m=m..string.sub(r,1,-l-2)..a.to_mw(k,frame,l)else local p=j;if k["extra"]~=nil then p=j..k["extra"]end;p=frame:preprocess("{{SemanticInputParser|value="..p.."}}").."\n"m=m..r..p..a.to_mw(k,frame,l+1)end end end;return m end;function a.from_csv(frame)local s=a.from_csv0(frame)if type(s)=="table"then return a.to_csv(s)else return""end end;function a.from_csv0(frame)local t=function(u)return mw.text.trim(string.gsub(u,d,''),"\t\r\n\f ")end;if#t(frame.args[1])<1 then return''end;local v=frame.args[2]local w=mw.text.split(frame.args[1],'%s*,%s*')local e={}for x,y in ipairs(w)do local z=t(y)if#z>0 then local A=string.match(y,d)local B=frame:preprocess("{{#show:"..z.."|?"..v.."|+index=1|format=array}}")local C=mw.text.split(B,"<MANY>")s_available_parent=''for o,D in ipairs(C)do for E,F in ipairs(w)do if D==t(F)then s_available_parent=D end end end;e[z]={["parent"]=s_available_parent,["extra"]=A}end end;return a.grow(e)end;function a.from_csv2(frame)local s=a.from_csv0(frame)if type(s)=="table"then return a.to_mw(s,frame)else return""end end;return a

Revision as of 18:37, 27 October 2020

Documentation for this module may be created at Module:Tri/doc

local a={}local b=require("Module:TableTools")local d="([;~\[].*)"function a.grow(e,f,g,h)f=f or''g=g or{}h=h or{}local i={}for j,k in pairs(e)do if k.parent==f then i[j]=k end end;if b.size(i)>0 then if f==''then h=i else table.insert(g,i)end;for j,k in pairs(i)do a.grow(e,j,k)end end;return h end;function a.to_csv(h,l)local m=""local n=0;if l==nil then return a.to_csv(h,0)end;for o=0,l do n=n+1 end;for j,k in pairs(h)do if type(k)=="table"then if type(j)=="number"then m=m..a.to_csv(k,l)else local p=j..","if k["extra"]~=nil then p=j..k["extra"]..","end;m=m..l.."_"..p..a.to_csv(k,l+1)end end end;return m end;function a.to_mw(h,frame,l)local m=""local r=""if l==nil then return a.to_mw(h,frame,0)end;for o=0,l do r=r.."*"end;for j,k in pairs(h)do if type(k)=="table"then if type(j)=="number"then m=m..string.sub(r,1,-l-2)..a.to_mw(k,frame,l)else local p=j;if k["extra"]~=nil then p=j..k["extra"]end;p=frame:preprocess("{{SemanticInputParser|value="..p.."}}").."\n"m=m..r..p..a.to_mw(k,frame,l+1)end end end;return m end;function a.from_csv(frame)local s=a.from_csv0(frame)if type(s)=="table"then return a.to_csv(s)else return""end end;function a.from_csv0(frame)local t=function(u)return mw.text.trim(string.gsub(u,d,''),"\t\r\n\f ")end;if#t(frame.args[1])<1 then return''end;local v=frame.args[2]local w=mw.text.split(frame.args[1],'%s*,%s*')local e={}for x,y in ipairs(w)do local z=t(y)if#z>0 then local A=string.match(y,d)local B=frame:preprocess("{{#show:"..z.."|?"..v.."|+index=1|format=array}}")local C=mw.text.split(B,"<MANY>")s_available_parent=''for o,D in ipairs(C)do for E,F in ipairs(w)do if D==t(F)then s_available_parent=D end end end;e[z]={["parent"]=s_available_parent,["extra"]=A}end end;return a.grow(e)end;function a.from_csv2(frame)local s=a.from_csv0(frame)if type(s)=="table"then return a.to_mw(s,frame)else return""end end;return a