Этот модуль Lua используется примерно на 9700 страницах , и изменения могут быть широко замечены. Тестируйте изменения на подстраницах модуля /sandbox или /testcases или в собственной песочнице модуля . Рассмотрите возможность обсуждения изменений на странице обсуждения перед их реализацией. |
Реализует Template:Tree chart ; Полная документация по синтаксису диаграмм находится по адресу Template:Tree chart/doc
Этот модуль использует библиотеку mw.html для создания строк ячеек таблицы, границы которых рисуют линии, показывающие отношения между элементами. Когда неименованный параметр совпадает с ключом в Module:Tree chart/data , модуль создаст блок со стилями, определенными в таблице. Каждый ключ в таблице имеет подтаблицу с 0, 1 или 2 собственными ключами: t
для «верхней» строки и b
для «нижней» строки. Любой неименованный параметр, значение которого отсутствует в таблице, будет использоваться для создания элементов на диаграмме, и будут искаться дополнительные именованные параметры для этого значения.
require ( ' strict' ) local p = { } local cells = mw.loadData ( ' Module : Tree chart/ data ' ) function p._main ( cell_args ) local ret = mw.html . создать () локальный верх = ret : тег ( 'tr' ) : css { высота = '1px' , [ 'text-align' ] = 'center' } локальный низ = ret : тег ( 'tr' ) : css { высота = '1px' , [ 'text-align' ] = 'center' } for _ , v in ipairs ( cell_args ) do if type ( v ) == 'string' then top : wikitext ( cells [ v ]. t ) bottom : wikitext ( cells [ v ]. b ) else top : тег ( 'td' ) : attr { colspan = v . colspan или cell_args . colspan или 6 , rowspan = v . rowspan или cell_args . rowspan или 2 } : css { padding = '0.2em' , border = ( v . border или cell_args . border или '2' ) .. 'px solid' } : cssText ( v . boxstyle или cell_args . boxstyle ) : wikitext ( v.text ) end end return tostring ( ret ) end function p.main ( frame ) local args = require ( ' Module: Arguments ' ) . getArgs ( frame , { wrappers = ' Template : Tree chart ' , trim = false , removeBlanks = false } ) local cell_args = { colspan = args.colspan , rowspan = args.rowspan , border = args.border , boxstyle = args . boxstyle } for _ , val in ipairs ( args ) do local trimmedVal = val : match ( '^%s*(.-)%s*$' ) if trimmedVal == '' then trimmedVal = '$' end if cells [ trimmedVal ] then table.insert ( cell_args , trimmedVal ) else -- Неназванные параметры ведут себя странно -- пробел в начале учитывается для param_{{{1}}}, но не пробел в конце, поэтому удалите его local rightTrimmedVal = val : gsub ( '%s+$' , '' ) table.insert ( cell_args , { text = args [ trimmedVal ] or ( '{{{' .. trimmedVal .. '}}}' ), colspan = args [ 'colspan_' .. rightTrimmedVal ], rowspan = args [ 'rowspan_' .. rightTrimmedVal ], border = args [ 'border_' .. rightTrimmedVal ], boxstyle = args [ 'boxstyle_' .. rightTrimmedVal ] }) конец конец возврат p . _main ( cell_args ) конец возврат p