< Модуль: Navbox
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]
Этот модуль реализует шаблон {{ Navbox }}. Пожалуйста, ознакомьтесь с инструкциями по использованию на странице шаблона .
Категории отслеживания / обслуживания
- Категория: Навбоксы для детей-сирот (13)
- Категория: Навигационные блоки без горизонтальных списков (1,948)
- Категория: Навбоксы с использованием цветов фона (64,288)
- Категория: Возможно неразборчивые навигационные блоки (7,539)
- Категория: Навбоксы с использованием границ (1,905)
-- Этот модуль реализует {{Navbox}}-местный p = {}local navbar = require ( 'Модуль: Navbar' ). _navbarlocal getArgs - лениво инициализируетсялокальный cfg = mw . loadData ( 'Модуль: Navbox / конфигурация' )местные аргументыместная границаместные спискиместный ODD_EVEN_MARKER = ' \ 127 _ODDEVEN_ \ 127 'местный RESTART_MARKER = ' \ 127 _ODDEVEN0_ \ 127 'локальный REGEX_MARKER = ' \ 127 _ODDEVEN (% d?) _ \ 127 ' полосатая локальная функция ( вики-текст )- Вернуть викитекст с замененными маркерами на нечетное / четное чередование.- Дочерние (подгруппы) навигационные блоки помечаются категорией, которая удаляется- родительскими навигационными блоками. В результате в категории отображаются все страницы.- если дочерний навигационный блок не содержится в родительском навигационном блоке.если граница == cfg . ключевое слово . border_subgroup и args [ cfg . арг . сирота ] ~ = cfg . ключевое слово . orphan_yes, тогда-- Без изменений; чередование происходит во внешнем навигационном блоке.вернуть wikitext .. cfg . категория . сиротаконецлокальный первый , второй = cfg . класс . navbox_odd_part , cfg . класс . navbox_even_partесли аргументы [ cfg . арг . evenodd ] тогдаесли аргументы [ cfg . арг . evenodd ] == cfg . ключевое слово . evenodd_swap тогдапервый , второй = второй , первыйещеfirst = args [ cfg . арг . evenodd ]второй = первыйконецконецместный сменщикесли первый == второй, точейнджер = первыйещелокальный индекс = 0changer = функция ( код ) - где установлен код ???если code == '0' тогда- Текущее вхождение для группы перед вложенной таблицей.- Установите его на первое место как допустимый, хотя и бессмысленный класс.- Следующим вхождением будет первая строка после заголовка.- в подгруппе и тоже будет первым.индекс = 0вернуться первымконециндекс = индекс + 1 индекс возврата % 2 == 1 и первый или второйконецконецлокальное регулярное выражение = cfg . категория . сирота : gsub ( '([% [%]])' , '%%% 1' )return ( wikitext : gsub ( regex , '' ): gsub ( REGEX_MARKER , changer )) - () опускает счетчик gsubконецлокальная функция processItem ( item , nowrapitems )если элемент : sub ( 1 , 2 ) == '{|' тогда- Применение nowrap к строкам в таблице не имеет смысла.- Добавьте новые строки, чтобы компенсировать обрезку x в | parm = x в шаблоне.вернуть ' \ n ' .. элемент .. ' \ n 'конецесли nowrapitems == cfg . ключевое слово . nowrapitems_yes тогдаместные линии = {}для строки в ( item .. ' \ n ' ): gmatch ( '([^ \ n ] *) \ n ' ) doлокальный префикс , content = line : match ( '^ ([*:; #] +)% s * (. *)' )если префикс, а не содержимое : совпадение ( cfg . pattern . nowrap ), тоline = mw . ustring . формат ( cfg . nowrap_item , префикс , содержимое )конецtable.insert ( строки , строка )конецitem = table.concat ( строки , ' \ n ' )конецесли item : match ( '^ [*:; #]' ), товернуть ' \ n ' .. элемент .. ' \ n 'конецвернуть товарконецлокальная функция renderNavBar ( titleCell )если аргументы [ cfg . арг . навигационная панель ] ~ = cfg . ключевое слово . navbar_off иargs [ cfg . арг . навигационная панель ] ~ = cfg . ключевое слово . navbar_plain и( args [ cfg . arg . name ], а не mw . getCurrentFrame (): getParent (): getTitle (): gsub ( cfg . pattern . sandbox , '' ) == cfg . pattern . navbox ), затемtitleCell : wikitext ( navbar {args [ cfg . арг . имя ],[ cfg . навигационная панель . mini ] = 1 ,[ cfg . навигационная панель . fontstyle ] = ( args [ cfg . arg . basestyle ] или '' ) .. ';' ..( аргументы [ cfg . arg . titlestyle ] или "" ) ..'; фон: непрозрачный; граница: нет; тень окна: нет; отступ: 0;'})конецконец-- Заголовок строки-локальная функция renderTitleRow ( tbl )если не аргументы [ cfg . арг . title ] затем верните конецлокальный titleRow = tbl : tag ( 'tr' )если аргументы [ cfg . арг . titlegroup ] тогдаtitleRow: tag ( 'th' ): attr ( 'область' , 'строка' ): addClass ( cfg . class . navbox_group ): addClass ( args [ cfg . arg . titlegroupclass ]): cssText ( аргументы [ cfg . arg . basestyle ]): cssText ( аргументы [ cfg . arg . groupstyle ]): cssText ( args [ cfg . arg . titlegroupstyle ]): wikitext ( аргументы [ cfg . arg . titlegroup ])конецлокальный titleCell = titleRow : tag ( 'th' ): attr ( 'scope' , 'col' )если аргументы [ cfg . арг . titlegroup ] тогдаtitleCell: css ( 'border-left' , '2px solid #fdfdfd' ): css ( 'ширина' ; '100%' )конецместный titleColspan = 2если аргументы [ cfg . арг . imageleft ], затем titleColspan = titleColspan + 1 конецесли аргументы [ cfg . арг . изображение ], затем titleColspan = titleColspan + 1 конецесли аргументы [ cfg . арг . titlegroup ], затем titleColspan = titleColspan - 1 конецtitleCell: cssText ( аргументы [ cfg . arg . basestyle ]): cssText ( аргументы [ cfg . arg . titlestyle ]): addClass ( cfg . class . navbox_title ): attr ( 'colspan' , titleColspan )renderNavBar ( titleCell )titleCell: tag ( 'div' )- идентификатор атрибута aria-labelledby: attr ( 'id' , mw . uri . anchorEncode ( args [ cfg . arg . title ])): addClass ( args [ cfg . arg . titleclass ]): css ( 'размер шрифта' ; '114%' ): css ( 'маржа' , '0 4em' ): Вики - текст ( processItem ( арг [ CFG . Arg . Название ]))конец-- Верхние / нижние ряды-локальная функция getAboveBelowColspan ()местный ret = 2если аргументы [ cfg . арг . imageleft ], затем ret = ret + 1 endесли аргументы [ cfg . арг . изображение ], затем ret = ret + 1 endвозвращение в отставкеконецлокальная функция renderAboveRow ( tbl )если не аргументы [ cfg . арг . выше ] затем верните конецtbl : tag ( 'tr' ): tag ( 'td' ): addClass ( cfg . class . navbox_abovebelow ): addClass ( args [ cfg . arg . aboveclass ]): cssText ( аргументы [ cfg . arg . basestyle ]): cssText ( args [ cfg . arg . abovestyle ]): attr ( 'colspan' , getAboveBelowColspan ()): tag ( 'div' )- id атрибута aria-labelledby, если нет заголовка: attr ( 'id' , args [ cfg . arg . title ] и nil или mw . uri . anchorEncode ( args [ cfg . arg . выше ])): Вики - текста ( processItem ( арг [ CFG . Arg . Выше ], арг [ CFG . Arg . Nowrapitems ]))конецлокальная функция renderBelowRow ( tbl )если не аргументы [ cfg . арг . ниже ] затем верните конецtbl : tag ( 'tr' ): tag ( 'td' ): addClass ( cfg . class . navbox_abovebelow ): AddClass ( арг [ CFG . Arg . Belowclass ]): cssText ( аргументы [ cfg . arg . basestyle ]): cssText ( args [ cfg . arg . understyle ]): attr ( 'colspan' , getAboveBelowColspan ()): tag ( 'div' ): Вики - текста ( processItem ( арг [ CFG . Arg . Ниже ], арг [ CFG . Arg . Nowrapitems ]))конец-- Список строк-локальная функция renderListRow ( tbl , index , listnum )локальная строка = tbl : tag ( 'tr' )если index == 1 и args [ cfg . арг . imageleft ] затемстрока: tag ( 'td' ): addClass ( cfg . class . noviewer ): addClass ( cfg . класс . изображение ): addClass ( args [ cfg . arg . imageclass ]): css ( 'width' , '1px' ) - Уменьшить ширину: css ( 'заполнение' , '0 2px 0 0' ): cssText ( args [ cfg . arg . imageleftstyle ]): attr ( 'rowspan' , # списки ): tag ( 'div' ): Вики - текст ( processItem ( арг [ CFG . Arg . Imageleft ]))конецесли аргументы [ cfg . арг . group_part .. listnum ], затемlocal groupCell = row : tag ( 'th' )- id для атрибута aria-labelledby, если группа одинока без заголовка или вышеесли listnum == 1, а не ( args [ cfg . arg . title ] или args [ cfg . arg . выше ] или args [ cfg . arg . group2 ]), тоgroupCell: attr ( 'id' , mw . uri . anchorEncode ( args [ cfg . arg . group1 ]))конецgroupCell: attr ( 'область' , 'строка' ): addClass ( cfg . class . navbox_group ): addClass ( args [ cfg . arg . groupclass ]): cssText ( аргументы [ cfg . arg . basestyle ]): css ( 'width' , args [ cfg . arg . groupwidth ] или '1%' ) - Если ширина группы не указана, минимизировать ширинуgroupCell: cssText ( аргументы [ cfg . arg . groupstyle ]): cssText ( args [ cfg . arg . group_part .. listnum .. cfg . arg . style_part ]): wikitext ( args [ cfg . arg . group_part .. listnum ])конецлокальный listCell = row : tag ( 'td' )если аргументы [ cfg . арг . group_part .. listnum ], затемlistCell: css ( 'выравнивание текста' , 'влево' ): css ( 'ширина левой границы' , '2 пикселя' ): css ( 'граница-левый стиль' , 'сплошной' )ещеlistCell : attr ( 'colspan' , 2 )конецесли не аргументы [ cfg . арг . groupwidth ] тогдаlistCell : css ( 'ширина' , '100%' )конецlocal rowstyle - обычно nil, поэтому cssText (rowstyle) обычно ничего не добавляетесли индекс % 2 == 1, тоrowstyle = args [ cfg . арг . oddstyle ]ещеrowstyle = args [ cfg . арг . evenstyle ]конецlocal listText = args [ cfg . арг . list_part .. listnum ]местный oddEven = ODD_EVEN_MARKERесли listText : sub ( 1 , 12 ) == '
, чтобы сбалансировать родительский
res : wikitext ( ''
) еще local nav = res : tag ( 'div' ) : attr ( 'роль' , 'навигация' ) : addClass ( cfg . class . navbox ) : addClass ( args [ cfg . arg . navboxclass ]) : cssText ( аргументы [ cfg . arg . bodystyle ]) : cssText ( аргументы [ cfg . arg . style ]) : css ( 'отступ' , '3 пикселя' ) : узел ( табл. ) - aria-labelledby title, в противном случае выше, в противном случае - lone group если аргументы [ cfg . арг . title ] или args [ cfg . арг . выше ] или ( args [ cfg . arg . group1 ], а не args [ cfg . arg . group2 ]), то nav : attr ( 'aria-labelledby' , mw . uri . anchorEncode ( args [ cfg . arg . title ] или args [ cfg . arg . выше ] или args [ cfg . arg . group1 ])) еще нав : атр ( 'ария-метка' , CFG . ARIA_LABEL ) конец конец if ( args [ cfg . arg . nocat ] или cfg . keyword . nocat_false ): lower () == cfg . ключевое слово . nocat_false тогда renderTrackingCategories ( res ) конец возврат в полоску ( tostring ( res ))конецфункция p . navbox ( фрейм ) если не getArgs, то getArgs = require ( 'Модуль: аргументы' ). getArgs конец args = getArgs ( кадр ) - Прочтите аргументы в том порядке, в котором они будут выводиться, чтобы номера ссылок были в правильном порядке. местный _ _ = args [ cfg . арг . название ] _ = args [ cfg . арг . выше ] для i = 1 , 20 сделать _ = args [ cfg . арг . group_part .. tostring ( i )] _ = args [ cfg . арг . list_part .. tostring ( i )] конец _ = args [ cfg . арг . ниже ] возврат п . _navbox ( аргументы )конецвернуть p