Module:Infobox MOS: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 42: | Line 42: | ||
'LLLsLLs' | 'LLLsLLs' | ||
}) | }) | ||
table.insert(infobox_data, { | |||
'Period', | |||
'2/1' | |||
}) | |||
table.insert(infobox_data, { | |||
'Range for [[bright]] [[generator]]', | |||
'' | |||
}) | |||
table.insert(infobox_data, { | |||
'Range for [[dark]] [[generator]]', | |||
'' | |||
}) | |||
table.insert(infobox_data, { | |||
'Parent MOS', | |||
'[[3L 2s]]' | |||
}) | |||
table.insert(infobox_data, { | |||
'Daughter MOSes', | |||
'[[5L 7s]], [[7L 5s]]' | |||
}) | |||
table.insert(infobox_data, { | |||
'[[Operations on MOSes#Sistering|Sister MOS]]', | |||
'[[2L 5s]]' | |||
}) | |||
table.insert(infobox_data, { | |||
'[[Operations on MOSes#Neutralization|Neutralized MOS]]', | |||
'[[3L 4s]]' | |||
}) | |||
table.insert(infobox_data, { | |||
'[[TAMNAMS#Mos pattern names|TAMNAMS name]]', | |||
'diatonic' | |||
}) | |||
result = infobox.build( | result = infobox.build( | ||
tuning, | tuning, | ||
Revision as of 17:53, 31 March 2023
- This module should not be invoked directly; use its corresponding template instead: Template:Infobox MOS.
This module generates an infobox providing information about a given moment of symmetry (MOS) scale.
| Introspection summary for Module:Infobox MOS | |||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| ||||||||||||||||||||||||||||||
No function descriptions were provided. The Lua code may have further information.
local p = {}
local i = require('Module:Interval')
local u = require('Module:Utils')
local rat = require('Module:Rational')
local l = require('Module:Limits')
local MOS = require('Module:MOS')
local ET = require('Module:ET')
local infobox = require('Module:Infobox')
function p.infobox_MOS(frame)
-- debug mode
local debug_mode = frame.args['debug'] ~= nil
local categories = ''
local tuning = frame.args['tuning']
local mos = MOS.parse(tuning) or MOS.parse('5L 2s')
assert(mos, "failed to parse variable mos")
-- category of the main article
categories = categories .. '[[Category:' .. tuning .. '| ]]'
local equave_link = ' (' .. mos.equave .. '-equivalent)'
local equave_disp = ' <' .. mos.equave .. '>'
if rat.eq(mos.equave, 2) then
equave_link = ''
equave_disp = ''
end
local prev_L, prev_s = '', ''
if mos.nL > 1 then
prev_L = '[[' .. (mos.nL - 1) .. 'L ' .. mos.ns .. 's' .. equave_link .. '|← ' .. (mos.nL - 1) .. 'L' .. mos.ns .. 's' .. equave_disp .. ']]'
end
local next_L = '[[' .. (mos.nL + 1) .. 'L ' .. mos.ns .. 's' .. equave_link .. '|' .. (mos.nL + 1) .. 'L' .. mos.ns .. 's' .. equave_disp .. '→]]'
if mos.ns > 1 then
prev_s = '[[' .. mos.nL .. 'L ' .. (mos.ns - 1) .. 's' .. equave_link .. '|↑' .. mos.nL .. 'L' .. (mos.ns - 1) .. 's' .. equave_disp .. ']]'
end
local next_s = '[[' .. mos.nL .. 'L ' .. (mos.ns + 1) .. 's' .. equave_link .. '|↓' .. mos.nL .. 'L' .. (mos.ns + 1) .. 's' .. equave_disp .. '\n]]'
local infobox_data = {}
table.insert(infobox_data, {
'Brightest mode',
'LLLsLLs'
})
table.insert(infobox_data, {
'Period',
'2/1'
})
table.insert(infobox_data, {
'Range for [[bright]] [[generator]]',
''
})
table.insert(infobox_data, {
'Range for [[dark]] [[generator]]',
''
})
table.insert(infobox_data, {
'Parent MOS',
'[[3L 2s]]'
})
table.insert(infobox_data, {
'Daughter MOSes',
'[[5L 7s]], [[7L 5s]]'
})
table.insert(infobox_data, {
'[[Operations on MOSes#Sistering|Sister MOS]]',
'[[2L 5s]]'
})
table.insert(infobox_data, {
'[[Operations on MOSes#Neutralization|Neutralized MOS]]',
'[[3L 4s]]'
})
table.insert(infobox_data, {
'[[TAMNAMS#Mos pattern names|TAMNAMS name]]',
'diatonic'
})
result = infobox.build(
tuning,
infobox_data,
prev_L,
next_L,
prev_s,
next_s
)
if not debug_mode then
result = result .. categories
end
return result
end
return p