Difference between revisions of "Module:Clade/sequential"
Jump to navigation
Jump to search
blackwiki>Jts1882 (add inverse) |
blackwiki>Jts1882 (invert) |
||
| Line 20: | Line 20: | ||
end | end | ||
| − | function p.clade(frame,i,max) | + | function p.clade(frame,i,max) -- |1= is basal at top |
local args = {} | local args = {} | ||
| Line 36: | Line 36: | ||
return frame:expandTemplate{ title = "Clade", args = args } | return frame:expandTemplate{ title = "Clade", args = args } | ||
end | end | ||
| − | function p.inverseClade(frame,i,max) | + | function p.inverseClade(frame,i,max) -- |1= innermost at bottom |
| + | local args = {} | ||
| + | |||
| + | args[2] = pargs [i] | ||
| + | args['label2'] = pargs ['label'..tostring(i)] | ||
| + | if i-1 == 1 then | ||
| + | args[1] = pargs [i-1] | ||
| + | args['label1'] = pargs ['label'..tostring(i-1)] | ||
| + | else | ||
| + | args[1] = p.inverseClade(frame,i-1,max) -- or the result of the next pair | ||
| + | end | ||
| + | |||
| + | return frame:expandTemplate{ title = "Clade", args = args } | ||
| + | end | ||
| + | function p.inverseClade2(frame,i,max) -- |1= is innermost at bottom | ||
local args = {} | local args = {} | ||
| Line 47: | Line 61: | ||
args[2] = p.inverseClade(frame,i-1,max) -- or the result of the next pair | args[2] = p.inverseClade(frame,i-1,max) -- or the result of the next pair | ||
end | end | ||
| − | + | ||
| − | |||
| − | |||
return frame:expandTemplate{ title = "Clade", args = args } | return frame:expandTemplate{ title = "Clade", args = args } | ||
end | end | ||
Revision as of 09:25, 31 October 2019
Documentation for this module may be created at Module:Clade/sequential/doc
local p = {}
local pargs
function p.main(frame)
pargs = frame:getParent().args
local args = {}
local i=1
local contentString = ""
local max = getMax()
if pargs['inverse'] then
contentString = p.inverseClade(frame,max,max)
else
contentString = p.clade(frame,1,max)
end
return contentString
end
function p.clade(frame,i,max) -- |1= is basal at top
local args = {}
args[1] = pargs [i]
args['label1'] = pargs ['label'..tostring(i)]
if i+1 == max then
args[2] = pargs [i+1]
args['label2'] = pargs ['label'..tostring(i+1)]
else
args[2] = p.clade(frame,i+1,max) -- or the result of the next pair
end
return frame:expandTemplate{ title = "Clade", args = args }
end
function p.inverseClade(frame,i,max) -- |1= innermost at bottom
local args = {}
args[2] = pargs [i]
args['label2'] = pargs ['label'..tostring(i)]
if i-1 == 1 then
args[1] = pargs [i-1]
args['label1'] = pargs ['label'..tostring(i-1)]
else
args[1] = p.inverseClade(frame,i-1,max) -- or the result of the next pair
end
return frame:expandTemplate{ title = "Clade", args = args }
end
function p.inverseClade2(frame,i,max) -- |1= is innermost at bottom
local args = {}
args[1] = pargs [i]
args['label1'] = pargs ['label'..tostring(i)]
if i-1 == 1 then
args[2] = pargs [i-1]
args['label2'] = pargs ['label'..tostring(i-1)]
else
args[2] = p.inverseClade(frame,i-1,max) -- or the result of the next pair
end
return frame:expandTemplate{ title = "Clade", args = args }
end
function getMax()
local i=1
local max
while i<50 do
if pargs [i] then
max = i
i=i+1
else
break
end
end
return max
end
return p