Постоянно защищенный модуль
Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]

Этот модуль реализует:

- [[-------------------------- <NIHONGO _ ERROR> --------------- -------------------------------------создает сообщение об ошибке для {{nihongo}}, {{nihongo3}} и nihongo foot}}, когда эти шаблоны отсутствуют <japanese>или <romaji> входы; называет проблемный шаблон, ссылается на страницу шаблона и добавляет статью в категорию: ошибки шаблона Nihongo]]локальная  функция  nihongo_error  ( шаблон )local  msg  =  { '<span class = "error" style = "font-size: 100%"> error: {{' };table.insert  ( сообщение ,  шаблон );table.insert  ( msg ,  '}}: требуется текст на японском языке или ромадзи ([[Template:' );table.insert  ( сообщение ,  шаблон );table.insert  ( msg ,  '| помощь]]) </span>' );если  0  ==  mw . название . getCurrentTitle (). пространство имен  тогдаtable.insert  ( msg ,  '[[Категория: ошибки шаблона Nihongo]]' );конецвернуть  table.concat  ( msg );конец- [[-------------------------- <NIHONGO _ RENDERER> --------------- -------------------------------общая функция поддержки для nihingo (), nihongo3 () и nihongo_foot (). Вычисляет индекс форматирования {}из установленных / неустановленных параметров:args [1] (английский) имеет значение 8 (установлено) или 0 (не установлено)args [2] (японский) имеет значение 4args [3] (ромадзи) имеет значение 2args [4] (extra) имеет значение 1index, сумма этих значений, получает соответствующую строку формата из таблицы форматирования {} со связанными значениямииз таблицы форматирования [index] [2]]]локальная  функция  nihongo_renderer  ( аргументы ,  форматирование ,  extra2 )локальный  выход ;локальный  индекс  =  0 ; - индексировать в форматирование {}локальный  param_weight  =  { 8 ,  4 ,  2 ,  1 }; - веса двоичных параметров: [1] = английский (8), [2] = японский (4), [3] = ромадзи (2), [4] = дополнительный (1)для  i = 1 ,  5  do - перебирать args [1] - args [4]index  =  index  +  ( args [ i ]  и  param_weight [ i ]  или  0 ); - вычислить индекс форматирования {}конецoutput  =  ( 0  ~ =  index )  и  string.format  ( форматирование [ индекс ] [ 1 ]  и  форматирование [ индекс ] [ 1 ],  форматирование [ индекс ] [ 2 ] [ 1 ],  форматирование [ индекс ] [ 2 ] [ 2 ] ,  форматирование [ индекс ] [ 2 ] [ 3 ],  форматирование [ индекс ] [ 2 ] [4 ])  или  ноль ;если  extra2,  то - всегда просто присоединяется к концу (если есть конец), поэтому не является частью форматирования {}output  =  output  and  ( output  ..  ''  ..  extra2 )  или  '<5p4n>'  ..  extra2 ; - <5p4n> и </5p4n>: заполнители для интервалов стиля font-weight; похожи на стрип-маркеры, подлежат заменеконец - (нихонго и нихонго3) или удален (нихонго стопа)вернуть  вывод  и  ( вывод  ..  '</5p4n>' )  или  '' ; - там, где есть вывод, добавить секретный тег закрытьконец- [= [------------------------- <НИХОНГО> ----------------- -----------------------------------------------Эксперимент по реализации {{nihongo}} с использованием Module: Lang для языковой разметки и транслитерации.{{Nihongo | <English> | <japanese> | <romaji> | <extra> | <extra2> | lead = yes}}<English>, <japanese> и <romaji> - позиционные параметры.<Английский>: отображается так, как представлено; Предполагается, что это английский перевод <kanji / kana><japanese>: текст на японском языке с использованием японского шрифта; ТОДО: требуется?<romaji>: романизация (транслитерация) Хепберн; TODO: в модуле: текст всплывающей подсказки об изменении языка / данных на «романизацию Хепберн»?<extra> и <extra2> позиционные или именованные: | extra = и | extra2 =; смешивание может быть проблематичным<extra> отображается так, как представлено перед ним <запятая> <пробел><extra2> отображается так, как представлено перед ним <space>| lead =: принимает одно значение «да»; отображает имя языка так же, как {{lang-ja}}, но также добавляет [[Хепберн романизация | Хепберн]]: <пробел> перед латинизацией; ЗАДАЧА: в модуле: Lang отключить всплывающую подсказку для перевода, когда | lead = yesзнак равнолокальная  функция  нихонго  ( фрейм )local  lang_module  =  require  ( 'Module: Lang'  ..  ( frame : getTitle (): match  ( '/ sandbox' )  or  '' )); - если этот модуль является песочницей, используйте Module: lang / sandbox; Модуль: Lang elselocal  args  =  require  ( 'Модуль: аргументы' ). getArgs  ( кадр );местный  английский ,  японский ,  ромадзи ,  extra ,  extra2  =  args [ 1 ],  args [ 2 ],  args [ 3 ],  args . extra  или  args [ 4 ],  args . extra2  или  args [ 5 ]; - значащие именаargs [ 4 ]  =  extra  или  args [ 4 ]; - убедитесь, что extra является "позиционным" для использования nihongo_renderer ()local  lead  =  'yes'  ==  args . свинец ; - сделать логическимесли  нет  ( японский  или  ромадзи ),  то - нет, вернуть сообщение об ошибкеreturn  nihongo_error  ( 'нихонго' );конецесли  японский,  тояпонский  =  ведущий  и  lang_module . _lang_xx_inherit  ({[ 'code' ] = 'ja' ,  японский ,  [ 'template' ] = 'nihongo' })  или  lang_module . _lang  ({ 'ja' ,  японский ,  [ 'template' ] = 'nihongo' }); - добавить скрипт ja с языковым префиксом / без языкового префиксаконецесли  ромадзи  тогдаromaji  =  ( ведущий  и  английский  и  '[[романизация Хепберн | Хепберн]]:'  или  '' )  ..  lang_module . _transl  ({ 'JA' ,  'Хепберн' ,  ромадзи })  или  ноль ;конецlocal  formatting  =  { - <5p4n> и </5p4n>: заполнители для интервалов стиля шрифта; сродни полосовым маркерам, заменяются перед возвратом функции{ '<5p4n> (% s)' ,  { extra }},  - 1 - (дополнительно){ '% s <5p4n>' ,  { romaji }}, - 2 - romaji{ '% s <5p4n> (% s)' ,  { romaji ,  extra }}, - 3 - romaji (extra){ '<5p4n> (% s)' ,  { japanese }}, - 4 - японский{ '<5p4n> (% s,% s)' ,  { японский ,  дополнительный }}, - 5 - (японский, дополнительный){ '% s <5p4n> (% s)' ,  { ромадзи ,  японский }}, - 6 - ромадзи (японский){ '% s <5p4n> (% s,% s)' ,  { ромадзи ,  японский ,  дополнительный }}, - 7 - ромадзи (японский, дополнительный){ '% s <5p4n>' ,  { english }}, - 8 - английский{ '% s <5p4n> (% s)' ,  { английский ,  дополнительный }}, - 9 - английский (дополнительный){ '% s <5p4n> (% s)' ,  { английский ,  ромадзи }}, - 10 - английский (ромадзи){ '% s <5p4n> (% s,% s)' ,  { английский ,  ромадзи ,  дополнительный }}, - 11 - английский (ромадзи, дополнительный){ '% s <5p4n> (% s)' ,  { английский ,  японский }}, - 12 - английский (японский){ '% s <5p4n> (% s,% s)' ,  { английский ,  японский ,  дополнительный }}, - 13 - английский (японский, дополнительный){ '% s <5p4n> (% s,% s)' ,  { английский ,  японский ,  ромадзи }}, - 14 - английский (японский, ромадзи){ '% s <5p4n> (% s,% s,% s)' ,  { английский ,  японский ,  ромадзи ,  экстра }}, - 15 - английский (японский, ромадзи, экстра)}local  ret_string  =  nihongo_renderer  ( аргументы ,  форматирование ,  extra2 )ret_string  =  ret_string : gsub  ( '<5p4n>' ,  '<span style = "font-weight: normal">' ): gsub  ( '</5p4n>' ,  '</span>' ); - заменить «секретные» теги на правильные тегивернуть  ret_string ; - потому что gsub возвращает количество произведенных замен как второе возвращаемое значениеконец- [= [------------------------- <NIHONGO 3> ---------------- ----------------------------------------------Эксперимент, чтобы увидеть, как реализовать {{nihongo3}} с помощью Module: Lang для языковой разметки и транслитерации.Подобно {{nihongo}}, но меняет порядок рендеринга и не поддерживает | lead ={{Nihongo3 | <английский> | <японский> | <romaji> | <extra> | <extra2>}}<English>, <japanese> и <romaji> - позиционные параметры.<Английский>: отображается так, как представлено; Предполагается, что это английский перевод <kanji / kana><japanese>: текст на японском языке с использованием японского шрифта; ТОДО: требуется?<romaji>: романизация (транслитерация) Хепберн; TODO: в модуле: текст всплывающей подсказки об изменении языка / данных на «романизацию Хепберн»?<extra> и <extra2> позиционные или именованные: | extra = и | extra2 =; смешивание может быть проблематичным<extra> отображается так, как представлено перед ним <запятая> <пробел><extra2> отображается так, как представлено перед ним <space>знак равнолокальная  функция  nihongo3  ( фрейм )local  lang_module  =  require  ( 'Module: Lang'  ..  ( frame : getTitle (): match  ( '/ sandbox' )  or  '' )); - если этот модуль является песочницей, используйте Module: lang / sandbox; Модуль: Lang elselocal  args  =  require  ( 'Модуль: аргументы' ). getArgs  ( кадр );местный  английский ,  японский ,  ромадзи ,  extra ,  extra2  =  args [ 1 ],  args [ 2 ],  args [ 3 ],  args . extra  или  args [ 4 ],  args . extra2  или  args [ 5 ]; - значащие именаargs [ 4 ]  =  extra  или  args [ 4 ]; - убедитесь, что extra является "позиционным" для использования nihongo_renderer ()если  нет  ( японский  или  ромадзи ),  то - нет, вернуть сообщение об ошибкевернуть  nihongo_error  ( 'nihongo3' );конецjapanese  =  japanese  и  lang_module . _lang  ({ 'ja' ,  яп. })  или  ноль ;ромадзи  =  ромадзи  и  lang_module . _transl  ({ 'JA' ,  'Хепберн' ,  ромадзи })  или  ноль ;local  formatting  =  { - <5p4n> и </5p4n>: заполнители для интервалов стиля шрифта; сродни полосовым маркерам, заменяются перед возвратом функции{ '<5p4n> (% s)' ,  { extra }},  - 1 - (дополнительно){ '% s <5p4n>' ,  { romaji }}, - 2 - romaji{ '% s <5p4n> (% s)' ,  { romaji ,  extra }}, - 3 - romaji (extra){ '<5p4n> (% s)' ,  { japanese }}, - 4 - японский{ '<5p4n> (% s,% s)' ,  { японский ,  дополнительный }}, - 5 - (японский, дополнительный){ '% s <5p4n> (% s)' ,  { ромадзи ,  японский }}, - 6 - ромадзи (японский){ '% s <5p4n> (% s,% s)' ,  { ромадзи ,  японский ,  дополнительный }}, - 7 - ромадзи (японский, дополнительный){ '% s <5p4n>' ,  { english }}, - 8 - английский{ '% s <5p4n> (% s)' ,  { английский ,  дополнительный }}, - 9 - английский (дополнительный){ '% s <5p4n> (% s)' ,  { romaji ,  english }}, - 10 - romaji (английский){ '% s <5p4n> (% s,% s)' ,  { ромадзи ,  английский ,  дополнительный }}, - 11 - ромадзи (английский, дополнительный){ '% s <5p4n> (% s)' ,  { английский ,  японский }}, - 12 - английский (японский){ '% s <5p4n> (% s,% s)' ,  { английский ,  японский ,  дополнительный }}, - 13 - английский (японский, дополнительный){ '% s <5p4n> (% s,% s)' ,  { ромадзи ,  японский ,  английский }}, - 14 - ромадзи (японский, английский){ '% s <5p4n> (% s,% s,% s)' ,  { ромадзи ,  японский ,  английский ,  дополнительный }}, - 15 - ромадзи (японский, английский, дополнительный)}local  ret_string  =  nihongo_renderer  ( аргументы ,  форматирование ,  extra2 )ret_string  =  ret_string : gsub  ( '<5p4n>' ,  '<span style = "font-weight: normal">' ): gsub  ( '</5p4n>' ,  '</span>' ); - заменить «секретные» теги на правильные тегивернуть  ret_string ; - потому что gsub возвращает количество произведенных замен как второе возвращаемое значениеконец- [= [------------------------- <NIHONGO _ FOOT> --------------- ---------------------------------------Эксперимент, чтобы увидеть, как реализовать {{nihongo_foot}} с помощью Module: Lang для разметки языка и транслитерации{{Нихонго стопа | <английский> | <японский> | <romaji> | <extra> | <extra2> | <post> | lead = yes | group}}<English>, <japanese> и <romaji> - позиционные параметры.<Английский>: отображается так, как представлено; Предполагается, что это английский перевод <kanji / kana><japanese>: текст на японском языке с использованием японского шрифта; ТОДО: требуется?<romaji>: романизация (транслитерация) Хепберн; TODO: в модуле: текст всплывающей подсказки об изменении языка / данных на «романизацию Хепберн»?<extra> и <extra2> позиционные или именованные: | extra = и | extra2 =; смешивание может быть проблематичным<extra> отображается так, как представлено перед ним <запятая> <пробел><extra2> отображается так, как представлено перед ним <space><post> позиционный или именованный: | post = - это символ постскриптума, предшествующий тегу <ref> .. </ref> (после <English>)| lead =: принимает одно значение «да»; отображает имя языка так же, как {{lang-ja}}, но также добавляет [[Хепберн романизация | Хепберн]]: <пробел> перед латинизацией;ЗАДАЧА: в модуле: Lang отключить всплывающую подсказку для перевода, когда | lead = yesв живом шаблоне | lead = также добавляет ссылку Справка: Установка наборов символов японского языка; это не поддерживается в этом коде (nihongo и nihongo3 не имеют такой поддержки)| group =: атрибут группы в <ref group = "..."> и в {{reflist}}знак равнолокальная  функция  nihongo_foot  ( кадр )local  lang_module  =  require  ( 'Module: Lang'  ..  ( frame : getTitle (): match  ( '/ sandbox' )  or  '' )); - если этот модуль является песочницей, используйте Module: lang / sandbox; Модуль: Lang elselocal  args  =  require  ( 'Модуль: аргументы' ). getArgs  ( кадр );местный  английский ,  японский ,  ромадзи ,  extra ,  extra2  =  args [ 1 ],  args [ 2 ],  args [ 3 ],  args . extra  или  args [ 4 ],  args . extra2  или  args [ 5 ]; - значащие именаargs [ 4 ]  =  extra  или  args [ 4 ]; - убедитесь, что extra является "позиционным" для использования nihongo_renderer ()local  post  =  args [ 6 ]  или  args . сообщение ;локальная  группа  =  аргументы . группа ;локальное  ref_name  =  args . ref_namelocal  lead  =  'yes'  ==  args . свинец ; - сделать логическимесли  нет  ( японский  или  ромадзи ),  то - нет, вернуть сообщение об ошибкеreturn  nihongo_error  ( 'нихонго стопа' );конецесли  японский,  тояпонский  =  ведущий  и  lang_module . _lang_xx_inherit  ({[ 'code' ] = 'ja' ,  японский })  или  lang_module . _lang  ({ 'джа' ,  яп. }); - добавить скрипт ja с языковым префиксом / без языкового префиксаконецесли  ромадзи  тогдаromaji  =  ( свинец  и  '[[романизация Хепберн | Хепберн]]:'  или  '' )  ..  lang_module . _transl  ({ 'JA' ,  'Хепберн' ,  ромадзи })  или  ноль ;конецлокальное  форматирование  =  {{ '% s' ,  { extra }},  - 1 - дополнительно{ '% s' ,  { romaji }}, - 2 - romaji{ '% s,% s' ,  { romaji ,  extra }}, - 3 - romaji, extra{ '% s' ,  { japanese }}, - 4 - японский{ '% s,% s' ,  { japanese ,  extra }}, - 5 - японский, extra{ '% s,% s' ,  { japanese ,  romaji }}, - 6 - японские ромадзи{ '% s,% s,% s' ,  { japanese ,  romaji ,  extra }}, - 7 - японские romaji, extra- отсюда английский язык используется в отображении, но не отображается nihongo_renderer, поэтому не включен в таблицу{ '' ,  { '' }}, - 8 - английский{ '% s' ,  { extra }}, - 9 - дополнительно{ '% s' ,  { romaji }}, - 10 - romaji{ '% s,% s' ,  { romaji ,  extra }}, - 11 - romaji, extra{ '% s' ,  { japanese }}, - 12 - японский{ '% s,% s' ,  { japanese ,  extra }}, - 13 - японский, extra{ '% s,% s' ,  { japanese ,  romaji }}, - 14 - японские ромадзи{ '% s,% s,% s' ,  { japanese ,  romaji ,  extra }}, - 15 - японские romaji, extra}если  английский  и  отправить,  то - перепишите английский, чтобы включить | post =english  =  english  ..  post ; - если в английском есть значение, добавьте сообщение, иначе просто отправьте сообщениеelseif  пост  тогдаenglish  =  post ; - английский не установлен, используйте сообщениеиначе, если  не  английский,  то - ни то, ни другое не установленоenglish  =  '' ; - сделать english пустой строкой для конкатенацииконецесли  японский  или  ромадзи  или  extra  или  extra2,  тогда - тег ref не установлен, если ни один из них не установлен (он будет пустым)локальный  контент  =  nihongo_renderer  ( аргументы ,  форматирование ,  extra2 );content  =  content : gsub  ( '<5p4n>' ,  '' ): gsub  ( '</5p4n> $' ,  '' ,  1 ); - убрать секретные теги <5p4n> и </5p4n>, добавленные nihongo_renderer (); промежутки, не используемые в этом шаблоневернуть  английский  ..  frame : extensionTag  ({ name = 'ref' ,  args = { group = group ,  name = ref_name },  content = content }); - английский с прикрепленным ссылочным тегомещевернуть  английский ; - внутри тега ref ничего не должно быть, поэтому просто верните английскийконецконец- [[-------------------------- <ЭКСПОРТИРУЕМЫЕ ФУНКЦИИ> ----------------- -------------------------]]return  {нихонго  =  нихонго ,nihongo3  =  nihongo3 ,nihongo_foot  =  nihongo_foot ,}