Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]
Это реализация {{ Navbar }} на Lua . Он используется в модуле: Navbox .
местный p = {}локальный cfg = mw . loadData ( 'Модуль: панель навигации / конфигурация' )локальная функция get_title_arg ( is_collapsible , шаблон )местный title_arg = 1если is_collapsible, то title_arg = 2 endесли шаблон, то title_arg = 'template' endвернуть title_argконецлокальная функция choose_links ( шаблон , аргументы )- В таблице показаны элементы, отображаемые по умолчанию.- просмотр, обсуждение, редактирование, история, перемещение, просмотр- TODO: перейти к конфигурации.local show = { истина , истина , истина , ложь , ложь , ложь }если шаблон, топоказать [ 2 ] = ложьпоказать [ 3 ] = ложьлокальный индекс = { t = 2 , d = 2 , e = 3 , h = 4 , m = 5 , w = 6 ,talk = 2 , edit = 3 , hist = 4 , move = 5 , watch = 6 }- ЗАДАЧИ: рассмотрите возможность удаления зависимости TableTools.for _ , v в ipairs ( require ( 'Module: TableTools' ). compressSparseArray ( args )) doместный номер = индекс [ v ]если число, то показать [ число ] = истина конецконецконецлокальный remove_edit_link = аргументы . нетесли remove_edit_link, тогда показать [ 3 ] = false endвозвращение шоуконецлокальная функция add_link ( link_description , ul , is_mini , font_style )местный lесли link_description . url тогдаl = { '[' , '' , ']' }ещеl = { '[[' , '|' , ']]' }конецul : tag ( 'ли' ): addClass ( 'nv-' .. link_description . full ): wikitext ( l [ 1 ] .. link_description . link .. l [ 2 ]): tag ( is_mini и abbr или span ): attr ( 'название' , link_description . html_title ): cssText ( стиль_ шрифта ): wikitext ( is_mini и link_description . mini или link_description . full ): сделано (): wikitext ( l [ 3 ]): сделано ()конецлокальная функция make_list ( title_text , has_brackets , displayed_links , is_mini , font_style )местное название = mw . название . новый ( mw . text . trim ( title_text ), cfg . title_namespace )если не титул, тоошибка ( cfg . invalid_title .. title_text )конецместная страница обсуждения = название . talkPageTitle и заголовок . talkPageTitle . fullText или ''- ЗАДАЧИ: получить link_descriptions и отобразить в модуле конфигурации.- link_descriptions должно быть проще ...local link_descriptions = {{ [ 'mini' ] = 'v' , [ 'full' ] = 'view' , [ 'html_title' ] = 'Просмотреть этот шаблон' ,[ 'ссылка' ] = заголовок . fullText , [ 'url' ] = false },{ [ 'mini' ] = 't' , [ 'full' ] = 'talk' , [ 'html_title' ] = 'Обсудить этот шаблон' ,[ 'link' ] = страница обсуждения , [ 'url' ] = false },{ [ 'mini' ] = 'e' , [ 'full' ] = 'edit' , [ 'html_title' ] = 'Изменить этот шаблон' ,[ 'link' ] = title : fullUrl ( 'action = edit' ), [ 'url' ] = true },{ [ 'mini' ] = 'h' , [ 'full' ] = 'hist' , [ 'html_title' ] = 'История этого шаблона' ,[ 'link' ] = title : fullUrl ( 'action = history' ), [ 'url' ] = true },{ [ 'mini' ] = 'm' , [ 'full' ] = 'move' , [ 'html_title' ] = 'Переместить этот шаблон' ,[ 'ссылка' ] = мв . название . new ( 'Special: Movepage' ): fullUrl ( 'target =' .. title . fullText ), [ 'url' ] = true },{ [ 'mini' ] = 'w' , [ 'full' ] = 'watch' , [ 'html_title' ] = 'Посмотреть этот шаблон' , [ 'link' ] = title : fullUrl ( 'action = watch' ), [ 'url' ] = true }}местный ul = mw . html . создать ( 'ul' )если has_brackets, тоуль : addClass ( CFG . классы . кронштейны ): cssText ( стиль_ шрифта )конецдля i , _ в ipairs ( отображаемые_ссылки ) делаемесли displayed_links [ я ] , то add_link ( link_descriptions [ я ], ул , is_mini , font_style ) конецконецreturn ul : done ()конецфункция p . _navbar ( аргументы )- TODO: нам, вероятно, не нужны и стиль шрифта, и цвет шрифта ...локальный font_style = аргументы . стиль шрифталокальный font_color = args . Цвет шрифталокальный is_collapsible = аргументы . складнойлокальный is_mini = аргументы . минилокальный is_plain = аргументы . простойlocal collapsible_class = нольесли is_collapsible, тоcollapsible_class = cfg . классы . складнойесли не is_plain, то is_mini = 1 конецесли font_color, тоfont_style = ( font_style или '' ) .. '; цвет: ' .. font_color .. '; 'конецконецместный navbar_style = args . стильместный div = mw . html . create (): тег ( 'div' )div: addClass ( cfg . классы . навигационная панель ): addClass ( cfg . классы . plainlinks ): addClass ( cfg . classes . horizontal_list ): AddClass ( collapsible_class ) - мы сделали вывод о ранее: cssText ( стиль навигации )если is_mini, то div : addClass ( cfg . classes . mini ) endlocal box_text = ( args . text или cfg . box_text ) .. '' - объединенное пространство гарантирует, что текст поля разделенесли нет ( is_mini или is_plain ), тоdiv: tag ( 'диапазон' ): addClass ( cfg . classes . box_text ): cssText ( стиль_ шрифта ): wikitext ( box_text )конецлокальный шаблон = аргументы . шаблонлокальные отображаемые_ссылки = select_links ( шаблон , аргументы )локальные has_brackets = args . кронштейныlocal title_arg = get_title_arg ( is_collapsible , шаблон )local title_text = args [ title_arg ] или ( ':' .. mw . getCurrentFrame (): getParent (): getTitle ())локальный список = make_list ( заголовок_текст , has_brackets , отображаемые_ссылки , is_mini , font_style )div : узел ( список )если is_collapsible, томестный title_text_classесли is_mini, тоtitle_text_class = cfg . классы . collapsible_title_miniещеtitle_text_class = cfg . классы . collapsible_title_fullконецdiv : сделано (): tag ( 'div' ): addClass ( title_text_class ): cssText ( стиль_ шрифта ): wikitext ( args [ 1 ])конецвернуть мв . getCurrentFrame (): extensionTag {name = 'templatestyles' , args = { src = cfg . templatestyles }} .. tostring ( div : done ())конецфункция p . панель навигации ( рамка )возврат п . _navbar ( требуется ( 'Модуль: аргументы' ). getArgs ( кадр ))конецвернуть p