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

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

Порталы

Порталы по-прежнему используют предыдущую версию этого модуля:

local  Transcluder  =  require ( 'Модуль: Transcluder' )local  yesno  =  require ( 'Модуль: Да нет' )local  ok ,  config  =  pcall ( требуется ,  'Module: Excerpt / config' )если  не в  порядке ,  то  конфигурационный  =  {}  конецместный  p  =  {}- Вспомогательная функция для получения аргументовместные  аргументыфункция  getArg ( ключ , по  умолчанию )значение  =  аргументы [ ключ ]если  значение  и  mw . текст . trim ( value )  ~ =  '',  затемвозвращаемое  значениеконецвернуть по  умолчаниюконец- Вспомогательная функция для обработки ошибокфункция  getError ( сообщение ,  значение )если  type ( message )  ==  'string',  тоmessage  =  Transcluder . getError ( сообщение ,  значение )конецесли  config . категории  и  конфиг . категории . ошибки  и  mw . название . getCurrentTitle (). isContentPage,  тогдасообщение : узел ( '[[Категория:'  ..  конфиг . категория . ошибки  ..  ']]' )конецответное  сообщениеконец- Вспомогательная функция для получения локализованных сообщенийфункция  getMessage ( ключ )локально  нормально ,  TNT  =  pcall ( требуется ,  'Модуль: TNT' )если  не в  порядке ,  то  вернуть  ключ  конецвернуть  TNT . формат ( 'I18n / Module: Excerpt.tab' ,  ключ )конецфункция  p . основной ( фрейм )args  =  Transcluder . parseArgs ( кадр )- Убедитесь, что запрошенная страница существуетлокальная  страница  =  getArg ( 1 ,  getArg ( 'статья' )  )если  не  страница,  то  верните  getError ( 'no-page' )  endместное  название  =  mw . название . новый ( страница )если  не  заголовок,  то  верните  getError ( 'no-page' )  endесли  заголовок . isRedirect,  затем  title  =  title . redirectTarget  endесли  не  заголовок . существует,  затем  верните  getError ( 'page-not-found' ,  page )  endстраница  =  заголовок . prefixedText- Установить переменныелокальный  фрагмент  =  getArg ( 'фрагмент' )local  section  =  fragment  или  getArg ( 2 ,  getArg ( 'section' ,  mw . ustring . match (  getArg ( 1 ,  getArg ( 'article' )  ),  '[^ #] + # ([^ #] +)' )  )  )местная  шляпа  =  дано (  getArg ( 'шляпа' ,  правда )  )локальное  редактирование  =  дано (  getArg ( 'редактировать' ,  правда )  )местные  это  =  getArg ( 'это' ) только  локальные =  getArg ( 'только' )локальные  файлы  =  getArg ( 'файлы' ,  getArg ( 'файл' ,  (  только  ==  'файл'  и  1  )  )  )локальные  списки  =  getArg ( 'списки' ,  getArg ( 'список' ,  (  только  ==  'список'  и  1  )  )  )локальные  таблицы  =  getArg ( 'таблицы' ,  getArg ( 'таблица' ,  (  только  ==  'таблица'  и  1  )  )  )локальные  шаблоны  =  getArg ( 'шаблоны' ,  getArg ( 'шаблон' ,  (  только  ==  'шаблон'  и  1  )  )  )локальные  абзацы  =  getArg ( 'абзацы' ,  getArg ( 'абзац' ,  (  только  ==  'абзац'  и  1  )  )  )локальные  ссылки  =  getArg ( 'ссылки' ,  getArg ( 'ссылка' ,  (  только  ==  'ссылка'  и  1  )  )  )локальные  разделы  =  нет  да нет (  getArg ( 'разделы' )  )местный  noBold  =  not  yesno (  getArg ( 'bold' )  )локальный  встроенный  =  yesno (  getArg ( 'встроенный' )  )местная  цитата  =  дано (  getArg ( 'цитата' )  )local  more  =  yesno (  getArg ( 'больше' )  )локальный  класс  =  getArg ( 'класс' )локальный  черный список  =  table.concat (( config . templates  или  {}),  ',' )- Создайте шляпную сноскуесли  шляпа,  а  не  строчка,  тоесли  это  тошляпа  =  этоelseif  цитата  тогдашляпа  =  getMessage ( 'это' )ElseIf  только  тогдаhat  =  getMessage ( только )ещешляпа  =  getMessage ( 'раздел' )конецшляпа  =  шляпа  ..  ''  ..  getMessage ( 'отрывок' )  ..  ''если  раздел,  а  не  фрагмент,  тошляпа  =  шляпа  ..  '[[:'  ..  страница  ..  '#'  ..  мв . uri . anchorEncode ( раздел )  ..  '|'  ..  страница..  '§'  ..  мв . ustring . gsub ( section ,  '% [% [([^] |] +) |? [^]] *%]%]' ,  '% 1' )  ..  ']]'  - удалить вложенные ссылкиещешляпа  =  шляпа  ..  '[[:'  ..  страница  ..  '|'  ..  страница  ..  ']]'конецесли  редактировать  тоhat  =  hat  ..  "''"  ..  '<span class = "mw-editsection-like plainlinks"> <span class = "mw-editsection-скобка"> [</span> ['шляпа  =  шляпа  ..  название : fullUrl ( 'действие = редактировать' )  ..  ''  ..  mw . сообщение . новый ( 'редактировать раздел' ): простой ()шляпа  =  шляпа  ..  '] <span class = "mw-editsection-скобка">] </span> </span>'  ..  "''"конецесли  config . шляпа  тогдашляпа  =  конфиг . шляпа  ..  шляпа  ..  '}}'шляпа  =  кадр : препроцесс ( шляпа )конецшляпа  =  mw . html . create ( 'div' ): addClass ( 'выдержка dablink-шляпа' ): wikitext ( шляпа )ещешляпа  =  нольконец- Создайте ссылку "Подробнее"если  больше  и  не  встроено,  тоmore  =  "'' '[["  ..  page  ..  ' # '  ..  ( section  или  ' ' )  ..  "|"  ..  getMessage ( 'еще' )  ..  "]] '' '"больше  =  mw . html . create ( 'div' ): addClass ( 'noprint exrpt-more' ): wikitext ( подробнее )ещебольше  =  нольконец- Создайте параметры для Module: Transcluder из аргументов шаблона и желаемых значений по умолчанию.local  options  =  {files  =  файлы ,списки  =  списки ,таблицы  =  таблицы ,параграфы  =  параграфы ,templates  =  templates  или  '-'  ..  черный список ,разделы  =  разделы ,категории  =  0 ,ссылки  =  ссылки ,only  =  only  и  mw . текст . обрезать ( только ,  's' )  ..  's' ,noBold  =  noBold ,noSelfLinks  =  true ,noNonFreeFiles  =  true ,noBehaviorSwitches  =  true ,fixReferences  =  true ,linkBold  =  true ,}- Получите сам отрывокlocal  title  =  page  ..  '#'  ..  ( раздел  или  '' )local  ok ,  выдержка  =  pcall ( Transcluder . get ,  title ,  options )если  не в  порядке ,  то  вернуть  GetError ( отрывок )  конецесли  мв . текст . обрезать ( отрывок )  ==  ''  и  не  только  тогдаесли  раздел,  то  вернуть  getError ( 'section-empty' ,  section )  else  return  getError ( 'lead-empty' )  endконец- Добавить разрыв строки на случай, если отрывок начинается с таблицы или спискавыдержка  =  ' \ n '  ..  выдержка- Если файл не найден, попробуйте извлечь его из удаленных инфобоксов.местное  fileNamespaces  =  Transcluder . getNamespaces ( 'Файл' )if  ((( only  ==  'file'  или  только  ==  'files' )  or  ( не  только  and  ( files  ~ =  '0'  or  not  files )))  и  - вызывающий абонент запросил файлыне  Transcluder . matchAny ( отрывок ,  '% [% [' ,  fileNamespaces ,  ':' )  и  - и в выводе Transcluder нет файловconfig . подписи  - и у нас есть опция конфигурации, необходимая, чтобы попытаться найти файлы в шаблонахтогдалокальные  шаблоны  =  Transcluder . get ( title ,  {  only  =  'templates' ,  templates  =  blacklist ,  fixReferences  =  true  }  )локальные  параметры  =  Transcluder . getParameters ( шаблоны )локальный  файл ,  подписи ,  подписьдля  _ ,  пара  в  парах ( конфиг . Подпись )  делатьфайл  =  пара [ 1 ]файл  =  параметры [ файл ]если  файл  и  Transcluder . matchAny ( file ,  '^. *%.' ,  { '[Jj] [Pp] [Ee]? [Gg]' , '[Pp] [Nn] [Gg]' , '[Gg] [Ii] [Ff ] ' , ' [Ss] [Vv] [Gg] ' },  '. * ' ),  Тофайл  =  mw . ustring . совпадение ( файл ,  '% [?% [? .-: ([^ {|] +)%]?%]?' )  или  файл  - [[File: Example.jpg {{!}} upright = 1.5] ] в Example.jpgподписи  =  пара [ 2 ]для  _ ,  р  в  паре ( подписи )  делатьесли  параметры [ p ],  то  подпись  =  параметры [ p ]  break  endконецвыдержка  =  '[[Файл:'  ..  файл  ..  '| большой палец |'  ..  ( подпись  или  '' )  ..  ']]'  ..  отрывоквыдержка  =  Transcluder . removeNonFreeFiles ( отрывок )перерывконецконецконец- Удалить вложенные категориивыдержка  =  кадр : препроцесс ( отрывок )местные  категории ,  выдержка  =  Transcluder . getCategories ( выдержка ,  опции . категории )- Добавить категории отслеживанияесли  config . категории  тогдаlocal  contentCategory  =  config . категории . содержаниеесли  contentCategory  и  mw . название . getCurrentTitle (). isContentPage,  тогдавыдержка  =  выдержка  ..  '[[Категория:'  ..  contentCategory  ..  ']]'конецlocal  namespaceCategory  =  config . категории [  mw . название . getCurrentTitle (). пространство имен  ]если  namespaceCategory,  товыдержка  =  выдержка  ..  '[[Категория:'  ..  namespaceCategory  ..  ']]'конецконец- Загрузите стилиместные  стилиесли  config . стили  тогдаstyles  =  frame : extensionTag (  'templatestyles' ,  '' ,  {  src  =  config . styles  }  )конец- Объедините и верните элементылокальный  тег1  =  'div'локальный  tag2  =  'div'если  встроенный,  тоtag1  =  'диапазон'tag2  =  'диапазон'elseif  цитата  тогдаtag2  =  'цитата'конецвыдержка  =  mw . html . create ( tag1 ): addClass ( 'отрывок' ): wikitext ( отрывок )локальный  блок  =  mw . html . create ( tag2 ): addClass ( 'блок-отрывок' ): addClass ( класс ) блок возврата : узел ( стили ): узел ( шляпа ): узел ( отрывок ): узел ( подробнее )конец- Точки входа для обратной совместимостифункция  p . вывод ( рамка )  возврат  п . основной ( каркасный )  конецфункция  p . выдержка ( кадр )  возврат  стр . основной ( каркасный )  конецвернуть  p