Module:Infobox MOS: Difference between revisions

Ganaram inukshuk (talk | contribs)
m cleanup todo
Ganaram inukshuk (talk | contribs)
Simplified code for adjacent links
Line 74: Line 74:
-- Creates adjacent links for mos, found by +/-1 large or +/- small steps
-- Creates adjacent links for mos, found by +/-1 large or +/- small steps
function p.adjacent_links(input_mos)
function p.adjacent_links(input_mos)
local input_mos = input_mos or mos.new(5, 2)
local input_mos = input_mos or mos.new(1, 1)
local equave_as_long_string = ""
local adjacent_mosses = {
local equave_as_string = ""
mos.new(input_mos.nL - 1, input_mos.ns - 1, input_mos.equave),
if not rat.eq(input_mos.equave, 2) then
mos.new(input_mos.nL    , input_mos.ns - 1, input_mos.equave),
equave_as_long_string = string.format(" (%s-equivalent)", rat.as_ratio(input_mos.equave))
mos.new(input_mos.nL + 1, input_mos.ns - 1, input_mos.equave),
equave_as_string = string.format("⟨%s⟩", rat.as_ratio(input_mos.equave))
mos.new(input_mos.nL - 1, input_mos.ns    , input_mos.equave),
end
mos.new(input_mos.nL + 1, input_mos.ns    , input_mos.equave),
mos.new(input_mos.nL - 1, input_mos.ns + 1, input_mos.equave),
mos.new(input_mos.nL    , input_mos.ns + 1, input_mos.equave),
mos.new(input_mos.nL + 1, input_mos.ns + 1, input_mos.equave),
}
local adjacent_links = {
local adjacent_links = {
string.format("[[%dL %ds%s|↖ %dL %ds%s]]", input_mos.nL - 1, input_mos.ns - 1, equave_as_long_string, input_mos.nL - 1, input_mos.ns - 1, equave_as_string),
mos.is_valid_mos(adjacent_mosses[1]) and string.format("[[%s|↖ %s]]", mos.as_long_string(adjacent_mosses[1]), mos.as_string(adjacent_mosses[1])) or "",
string.format("[[%dL %ds%s|↑%dL %ds%s]]", input_mos.nL , input_mos.ns-1, equave_as_long_string, input_mos.nL, input_mos.ns - 1, equave_as_string),
mos.is_valid_mos(adjacent_mosses[2]) and string.format("[[%s|↑ %s]]", mos.as_long_string(adjacent_mosses[2]), mos.as_string(adjacent_mosses[2])) or "",
string.format("[[%dL %ds%s|%dL %ds%s ↗]]", input_mos.nL + 1, input_mos.ns - 1, equave_as_long_string, input_mos.nL + 1, input_mos.ns - 1, equave_as_string),
mos.is_valid_mos(adjacent_mosses[3]) and string.format("[[%s|%s ↗]]", mos.as_long_string(adjacent_mosses[3]), mos.as_string(adjacent_mosses[3])) or "",
string.format("[[%dL %ds%s|← %dL %ds%s]]", input_mos.nL - 1, input_mos.ns, equave_as_long_string, input_mos.nL - 1, input_mos.ns, equave_as_string),
mos.is_valid_mos(adjacent_mosses[4]) and string.format("[[%s|← %s]]", mos.as_long_string(adjacent_mosses[4]), mos.as_string(adjacent_mosses[4])) or "",
string.format("[[%dL %ds%s|%dL %ds%s →]]", input_mos.nL + 1, input_mos.ns, equave_as_long_string, input_mos.nL + 1, input_mos.ns, equave_as_string),
mos.is_valid_mos(adjacent_mosses[5]) and string.format("[[%s|%s →]]", mos.as_long_string(adjacent_mosses[5]), mos.as_string(adjacent_mosses[5])) or "",
string.format("[[%dL %ds%s|↙ %dL %ds%s]]", input_mos.nL - 1, input_mos.ns + 1, equave_as_long_string, input_mos.nL - 1, input_mos.ns + 1, equave_as_string),
mos.is_valid_mos(adjacent_mosses[6]) and string.format("[[%s|↙ %s]]", mos.as_long_string(adjacent_mosses[6]), mos.as_string(adjacent_mosses[6])) or "",
string.format("[[%dL %ds%s|↓%dL %ds%s]]", input_mos.nL, input_mos.ns + 1, equave_as_long_string, input_mos.nL, input_mos.ns + 1, equave_as_string),
mos.is_valid_mos(adjacent_mosses[7]) and string.format("[[%s|↓ %s]]", mos.as_long_string(adjacent_mosses[7]), mos.as_string(adjacent_mosses[7])) or "",
string.format("[[%dL %ds%s|%dL %ds%s ↘]]", input_mos.nL + 1, input_mos.ns + 1, equave_as_long_string, input_mos.nL + 1, input_mos.ns + 1, equave_as_string),
mos.is_valid_mos(adjacent_mosses[8]) and string.format("[[%s|%s ↖]]", mos.as_long_string(adjacent_mosses[8]), mos.as_string(adjacent_mosses[8])) or ""
}
}
-- Links that contain either "0L" or "0s" when the parent's L/s-count is 1
-- refer to degenerate mosses (either 0L or 0s), whose links should be made
-- blank instead.
for i = 1, #adjacent_links do
local is_null_large = string.find(adjacent_links[i], "0L") and input_mos.nL == 1
local is_null_small = string.find(adjacent_links[i], "0s") and input_mos.ns == 1
if is_null_large or is_null_small then
adjacent_links[i] = ""
end
end
return adjacent_links
return adjacent_links