Перейти к навигации Перейти к поиску
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]
Этот модуль оценен как бета-версия и готов к широкому использованию. Он все еще новый, и его следует использовать с некоторой осторожностью, чтобы гарантировать ожидаемые результаты. |
Этот модуль Lua используется примерно на 2000 страницах, и изменения могут быть широко заметны. Протестируйте изменения на подстраницах модуля / sandbox или / testcases или в собственной изолированной программной среде модуля . Обсудите изменения на странице обсуждения, прежде чем внедрять их. |
Этот модуль зависит от следующих других модулей: |
Этот модуль реализует Template: Excerpt .
- См. Template: Excerpt для документации по параметрам шаблона.
- См. Mw: Module: Excerpt для документации по этому модулю.
- См. Module: Excerpt / config для настройки этого модуля.
Порталы
Порталы по-прежнему используют предыдущую версию этого модуля:
- Модуль: Excerpt / portals / sandbox - Используется:
- {{ Включить отрывок из лида }} / sandbox / testcases
- {{ Включить связанный отрывок }} / sandbox / testcases
- {{ Включить отрывок из списка }} / sandbox / testcases
- {{ Включить случайный отрывок }} / sandbox / testcases
- {{ Включить выбранный отрывок }} / sandbox / testcases
- Модуль: Отрывок из слайд-шоу / песочница - Использует модуль: Отрывок / порталы и используется:
- {{ Включить отрывки как случайное слайд-шоу }} / sandbox / testcases
- {{ Включить связанные отрывки как случайное слайд-шоу }} / sandbox / testcases
- {{ Включить отрывки из элементов списка как случайное слайд-шоу }} / sandbox / testcases
- Модуль: Случайное слайд-шоу / песочница - Использует модуль: Отрывок / порталы и используется:
- {{ Случайное слайд-шоу }} / песочница / testcases
- {{ Включить файлы как случайное слайд-шоу }} / sandbox / testcases
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