Модуль:Su
Зовнішній вигляд

Цей модуль впроваджує шаблон {{su}}. Він використовується, щоб створювати дві менші рядка тексту на одному справжньому рядку.
Використання з вікітексту
[ред. код]Цей модуль не можу бути використаний напряму з вікітексту. Його можна використати лише через використання шаблону, зазвичай шаблону {{su}}. Будь ласка, дивіться докумантацію на сторінці шаблону.
Використання в модулях Lua
[ред. код]Щоб використати модуль в інших модулях Lua, спершу завантажте модуль.
local mSu = require('Module:Su')
Тоді ви можете згенерувати рядки su, використавши функцію _main.
mSu._main(sup, sub, options)
sup містить вміст верхнього рядка та sub містить вміст нижнього рядка. options є таблицею, що містить наступні поля:
align
— можна встановити значення «r» або «right» для вирівнювання справа та «c» або «center» для вирівнювання по центру. Будь-яке інше значення вирівняє вивід ліворуч. Значення повинно бути рядком (string).fontSize
— розмір шрифту тексту, наприклад «90%». Якщо встановити «f» або «fixed», то модуль виведе шрифт фіксованої ширини з розміром 80%. Значення повинно бути рядком (string).lineHeight
— відстань від верху до низу (включно з верхнім символом). Стандартне значення — 1.2em. Значення повинно бути рядком (string).verticalAlign
— Вирівнювання основи від низу. Стандартне значення залежить від наявностіsub
; -0.4em, якщо наявне, 0.8em, якщо ні. Значення повинно бути рядком (string).
Всі аргументи є необов'язковими.
Приклади
[ред. код]Код | Результат |
---|---|
mSu._main('верхній рядок тексту', 'нижній рядок тексту')
|
верхній рядок тексту нижній рядок тексту |
mSu._main('верхній рядок тексту', 'нижній рядок тексту', {fontSize = '100%'})
|
верхній рядок тексту нижній рядок тексту |
mSu._main('верхній рядок тексту', 'нижній рядок тексту', {fontSize = 'f'})
|
верхній рядок тексту нижній рядок тексту |
mSu._main('верхній рядок тексту', 'нижній рядок тексту', {align = 'r'})
|
верхній рядок тексту нижній рядок тексту |
mSu._main('верхній рядок тексту', 'нижній рядок тексту', {align = 'c'})
|
верхній рядок тексту нижній рядок тексту |
mSu._main('12', '8', {align = 'c', lineHeight = '0.8em'})
|
12 8 |
mSu._main('верхній рядок тексту')
|
верхній рядок тексту |
mSu._main(nil, 'нижній рядок тексту')
|
нижній рядок тексту |
Документація вище включена з Модуль:Su/документація. (ред. | історія) Дописувачі можуть експериментувати на підсторінках пісочниці (ред. | різн.) та тести (створити) цього модуля. Будь ласка, додавайте категорії до підсторінки /документація. Підсторінки цієї сторінки. |
-- This module implements {{su}}.
local p = {}
function p.main(frame)
-- Use arguments from the parent frame only, and remove any blank arguments.
-- We don't need to trim whitespace from any arguments, as this module only
-- uses named arguments, and whitespace is trimmed from them automatically.
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
if v ~= '' then
args[k] = v
end
end
-- Define the variables to pass to luaMain.
local sup = args.p
local sub = args.b
local options = {
align = args.a,
fontSize = args.w,
lineHeight = args.lh,
verticalAlign = args.va
}
return p._main(sup, sub, options)
end
function p.invoke_main(frame)
-- entry point for invocation using frame arguments
local origArgs = frame.args
local args = {}
for k, v in pairs(origArgs) do
if v ~= '' then
args[k] = v
end
end
-- Define the variables to pass to luaMain.
local sup = args.p
local sub = args.b
local options = {
align = args.a,
fontSize = args.w,
lineHeight = args.lh,
verticalAlign = args.va
}
return p._main(sup, sub, options)
end
function p._main(sup, sub, options)
options = options or {}
local span = mw.html.create('span')
-- Set the styles.
span:css{
['display'] = 'inline-block',
['margin-bottom'] = '-0.3em',
['vertical-align'] = options.verticalAlign or sub and '-0.4em' or '0.8em',
['line-height'] = options.lineHeight or '1.2em'
}
if options.fontSize == 'f' or options.fontSize == 'fixed' then
span:css{
['font-family'] = 'monospace',
['font-size'] = '80%'
}
else
span:css('font-size', options.fontSize or '80%')
end
if options.align == 'r' or options.align == 'right' then
span:css('text-align', 'right')
elseif options.align == 'c' or options.align == 'center' then
span:css('text-align', 'center')
else
span:css('text-align', 'left')
end
-- Add the wikitext.
span
:tag('sup')
:css('font-size', 'inherit')
:css('line-height', 'inherit')
:css('vertical-align', 'baseline')
:wikitext(sup)
:done()
:tag('br', {selfClosing = true}):done()
:tag('sub')
:css('font-size', 'inherit')
:css('line-height', 'inherit')
:css('vertical-align', 'baseline')
:wikitext(sub)
return '<span class="nowrap">' .. tostring(span) .. '</span>'
end
return p