Module:Infobox regtemp: Difference between revisions

Lériendil (talk | contribs)
porting changes over from Infobox RT
Lériendil (talk | contribs)
deploying changes live
Line 63: Line 63:
local equave_letter
local equave_letter
local cot = tonumber(lowermap[1])
local cot = tonumber(lowermap[1])
if equave == "3" then
local referent = string.char(string.byte(subgroup, 3))
local suffix = "cleft"
if tonumber(equave) == 3 then
equave_letter = "t"
equave_letter = "t"
if tonumber(string.char(string.byte(subgroup, 3))) == 5 then
if tonumber(string.char(string.byte(subgroup, 3))) == 5 then
if tonumber(string.char(string.byte(subgroup, 5))) == 7 then
if tonumber(string.char(string.byte(subgroup, 5))) == 7 then
cot = tonumber(lowermap[2])
cot = tonumber(lowermap[2])
suffix = "gem"
end
end
elseif tonumber(string.char(string.byte(subgroup, 3))) == 2 then -- edf
elseif tonumber(string.char(string.byte(subgroup, 3))) == 2 then -- edf
equave_letter = "f"
equave_letter = "f"
equave = "3/2"
equave = "3/2"
referent = string.char(string.byte(subgroup, 5))
end
end
elseif equave == "2" then
if referent == "7" then
suffix = "gem"
end
elseif tonumber(equave) == 2 then
equave_letter = "o"
equave_letter = "o"
if tonumber(string.char(string.byte(subgroup, 3))) == 3 then
suffix = "cot"
elseif tonumber(string.char(string.byte(subgroup, 3))) == 5 then
suffix = "seph"
end
else
else
equave_letter = equave
equave_letter = equave
end
if suffix == "cleft" then
suffix = referent .. suffix
end
local ploidnum = math.log(tonumber(equave))*(1200/math.log(2))/tonumber(ploid)
local tuningnum = tonumber(tuning)
if cot < 0 then
tuningnum = math.log(tonumber(equave))*(1200/math.log(2)) - tuningnum
cot = math.abs(cot)
end
local shear = math.floor(tuningnum*cot/ploidnum)
shear = math.floor(cot*(shear/cot - math.floor(shear/cot)))
if cot > 2 then
if shear == cot-1 then
shear = -1
end
end
suffix = p.num2greek(ploid,"ploid") .. "ploid " .. p.num2greeklet(tostring(shear)) .. p.num2greek(tostring(cot), "cot") .. suffix
if ploidacot == "cleft" then
ploidacot = suffix
end
end
Line 116: Line 151:
return result
return result
end
function p.digit2greek(number, purpose)
local greek
if number == "1" then
if purpose == "ploid" then
greek = "ha"
elseif purpose == "cot" then
greek = "mono"
elseif purpose == "decade" then
greek = "deca"
else
greek = "hen"
end
elseif number == "2" then
if purpose == "decade" then
greek = "icosa"
elseif purpose == "unit" then
greek = "do"
else
greek = "di"
end
elseif number == "0" then
if purpose == "unit" then
greek = ""
else
greek = "a"
end
else
if number == "3" then
if purpose == "decade" then
greek = "tria"
else
greek = "tri"
end
elseif number == "4" then
greek = "tetra"
elseif number == "5" then
greek = "penta"
elseif number == "6" then
greek = "hexa"
elseif number == "7" then
greek = "hepta"
elseif number == "8" then
greek = "octa"
elseif number == "9" then
greek = "ennea"
end
if purpose == "decade" then
greek = greek .. "conta"
end
end
return greek
end
function p.num2greek(number, purpose)
local greek
if string.len(number) == 1 then
greek = p.digit2greek(number, purpose)
elseif string.len(number) == 2 then
local unit = string.char(string.byte(number, 2))
local decade = string.char(string.byte(number, 1))
greek = p.digit2greek(unit, "unit") .. p.digit2greek(decade, "decade")
end
return greek
end
function p.digit2greeklet(number, purpose)
local greek
if number == "1" then
if purpose == "decade" then
greek = "iota-"
elseif purpose == "unit" then
greek = "alpha-"
end
elseif number == "2" then
if purpose == "decade" then
greek = "kappa-"
elseif purpose == "unit" then
greek = "beta-"
end
elseif number == "3" then
if purpose == "decade" then
greek = "lambda-"
elseif purpose == "unit" then
greek = "gamma-"
end
elseif number == "4" then
if purpose == "decade" then
greek = "mu-"
elseif purpose == "unit" then
greek = "delta-"
end
elseif number == "5" then
if purpose == "decade" then
greek = "nu-"
elseif purpose == "unit" then
greek = "epsilon-"
end
elseif number == "6" then
if purpose == "decade" then
greek = "xi-"
elseif purpose == "unit" then
greek = "wau-"
end
elseif number == "7" then
if purpose == "decade" then
greek = "omicron-"
elseif purpose == "unit" then
greek = "zeta-"
end
elseif number == "8" then
if purpose == "decade" then
greek = "pi-"
elseif purpose == "unit" then
greek = "eta-"
end
elseif number == "9" then
if purpose == "decade" then
greek = "qoppa-"
elseif purpose == "unit" then
greek = "theta-"
end
elseif number == "0" then
greek = ""
elseif number == "-1" then
greek = "omega-"
end
return greek
end
function p.num2greeklet(number)
local greek
if string.len(number) == 1 then
greek = p.digit2greeklet(number, "unit")
elseif string.len(number) == 2 then
local unit = string.char(string.byte(number, 2))
local decade = string.char(string.byte(number, 1))
greek = p.digit2greeklet(decade, "decade") .. p.digit2greeklet(unit, "unit")
end
return greek
end
end


return p
return p