Module:MOS scalesig: Difference between revisions

From Xenharmonic Wiki
Jump to navigation Jump to search
ArrowHead294 (talk | contribs)
mNo edit summary
ArrowHead294 (talk | contribs)
mNo edit summary
Line 8: Line 8:
local is_long = yesno(is_long, false)
local is_long = yesno(is_long, false)
if is_link then
return (is_link == true
return is_long and mos.as_long_link(input_mos) or mos.as_link(input_mos)
and (is_long and mos.as_long_link(input_mos) or mos.as_link(input_mos))
else
or (is_long and mos.as_long_string(input_mos) or mos.as_string(input_mos)))
return is_long and mos.as_long_string(input_mos) or mos.as_string(input_mos)
end
end
end


Line 27: Line 25:


function p.tester()
function p.tester()
local input_mos = mos.new(5,2)
local input_mos = mos.new(5, 2)
return p._mos_scalesig(input_mos, true, true)
return p._mos_scalesig(input_mos, true, true)
end
end


return p
return p

Revision as of 13:19, 12 March 2025

Module documentation[view] [edit] [history] [purge]
Note: Do not invoke this module directly; use the corresponding template instead: Template:MOS scalesig.

This module formats a string into a mos scale signature, with non-breaking spaces. Scale signatures can optionally be formatted as a link to the scale's wiki page.

To include this module in other modules, use local mos_scalesig = require("Module:MOS scalesig")._mos_scalesig.

local mos = require("Module:MOS")
local yesno = require("Module:Yesno")
local getArgs = require("Module:Arguments").getArgs
local p = {}

function p._mos_scalesig(input_mos, is_link, is_long)
	local is_link = yesno(is_link, false)
	local is_long = yesno(is_long, false)
	
	return (is_link == true
		and (is_long and mos.as_long_link(input_mos) or mos.as_link(input_mos))
		or (is_long and mos.as_long_string(input_mos) or mos.as_string(input_mos)))
end

-- Wrapper function
function p.mos_scalesig(frame)
	local args = getArgs(frame)
	
	local input_mos = mos.parse(args["scalesig"])
	local is_link = yesno(args["link"], false)
	local is_long = yesno(args["long"], false)
	
	return p._mos_scalesig(input_mos, is_link, is_long)
end

function p.tester()
	local input_mos = mos.new(5, 2)
	return p._mos_scalesig(input_mos, true, true)
end

return p