Module:Step vis: Difference between revisions
Jump to navigation
Jump to search
ArrowHead294 (talk | contribs) m Note down Unicode code points and HTML entities |
ArrowHead294 (talk | contribs) mNo edit summary |
||
| Line 17: | Line 17: | ||
local step_visualization = "" | local step_visualization = "" | ||
local previous_step_size = 0 | |||
-- For each step size of k, print a single border, followed by k-1 no-border symbols | -- For each step size of k, print a single border, followed by k-1 no-border symbols | ||
| Line 41: | Line 42: | ||
if current_step_size == 0 then | if current_step_size == 0 then | ||
current_step_vis = double_border | current_step_vis = double_border | ||
elseif step_pattern[i-1] == 0 then | elseif step_pattern[i - 1] == 0 then | ||
current_step_vis = string.rep(no_border, current_step_size - 1) | current_step_vis = string.rep(no_border, current_step_size - 1) | ||
else | else | ||
| Line 48: | Line 49: | ||
end | end | ||
step_visualization = step_visualization .. current_step_vis | if not (current_step_size == 0 and previous_step_size == 0) then | ||
step_visualization = step_visualization .. current_step_vis | |||
end | |||
previous_step_size = current_step_size | |||
end | end | ||
return step_visualization | return step_visualization | ||
end | end | ||
Revision as of 16:42, 27 February 2025
- This module may be invoked by templates using its corresponding template Template:Step vis, or used directly from other modules.
Generates a visual representation of a scale based on predefined step sizes.
| Introspection summary for Module:Step vis | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| |||||||||||||||
No function descriptions were provided. The Lua code may have further information.
--local mosinedo = require("Module:MOS in EDO")
local tip = require("Module:Template input parse")
local p = {}
-- Helper function
-- Create a step visualization that's based on the table on the diasem page
function p.step_pattern_to_visualization(step_pattern)
local step_pattern = step_pattern or { 5, 2, 5, 0, 5, 2, 0 }
local left_border = "├" -- U+251C ("├")
local right_border = "┤" -- U+2524 ("┤")
local no_border = "─" -- U+2500 ("─")
local double_border = "╫" -- U+256B ("╫")
local double_border_left = "╟" -- U+255F ("╟")
local double_border_right = "╢" -- U+2562 ("╢")
local single_border = "┼" -- U+253C ("┼")
local step_visualization = ""
local previous_step_size = 0
-- For each step size of k, print a single border, followed by k-1 no-border symbols
-- If this is the first step, print the left border instead
-- If the step size is 0, print a double border only; if this happens, the next step should start with a border character
-- If this is the last step, add a right border after the entire sequence
for i = 1, #step_pattern do
local current_step_vis = ""
local current_step_size = step_pattern[i]
if i == 1 then
if current_step_size == 0 then
current_step_vis = double_border_left
else
current_step_vis = left_border .. string.rep(no_border, current_step_size - 1)
end
elseif i == #step_pattern then
if current_step_size == 0 then
current_step_vis = double_border_right
else
current_step_vis = single_border .. string.rep(no_border, current_step_size - 1) .. right_border
end
else
if current_step_size == 0 then
current_step_vis = double_border
elseif step_pattern[i - 1] == 0 then
current_step_vis = string.rep(no_border, current_step_size - 1)
else
current_step_vis = single_border .. string.rep(no_border, current_step_size - 1)
end
end
if not (current_step_size == 0 and previous_step_size == 0) then
step_visualization = step_visualization .. current_step_vis
end
previous_step_size = current_step_size
end
return step_visualization
end
-- Wrapper function for step visualization
function p.step_vis_frame(frame)
local step_pattern = tip.parse_numeric_entries(frame.args["Step Pattern"], " ")
return p.step_pattern_to_visualization(step_pattern)
end
return p