Модуль:URL

Для документации этого модуля может быть создана страница Модуль:URL/doc

function startsWith( source, substring )if mw.ustring.len( substring ) > mw.ustring.len( source ) thenreturn falseendreturn mw.ustring.sub( source, 1, mw.ustring.len( substring ) ) == substringendp = {}function formatUrlImpl( source, title, length )local scheme, host, pathlocal postfix = ''local arg1, arg2 = source, titlelocal isTestPage = mw.title.getCurrentTitle().prefixedText == 'Модуль:URL'-- Две квадратные скобки подряд — [[вики-ссылка]] вместо [ссылки] — возвращаем вход как есть.if string.find( arg1, "[[", 1, true ) thenlocal result = arg1if not isTestPage thenresult = result .. '[[Категория:Википедия:Статьи с вики-ссылкой, переданной в Модуль:URL]]'if arg2 then-- Если есть arg2, а мы распарсить ссылку не смогли, и значит заменить title не сможем корректно, это есть ошибка.result = result .. '[[Категория:Википедия:Статьи с ошибочной работой Модуль:URL]]'endendreturn resultend-- Более одной квадратной скобки — скорее всего, задано более одного URL — тоже возвращаем как есть.if select(2, string.gsub( arg1, "%[", "" )) > 1 thenlocal result = arg1if not isTestPage thenresult = result .. '[[Категория:Википедия:Статьи со сложным входом в Модуль:URL]]'if arg2 then-- Если есть arg2, а мы распарсить ссылку не смогли, и значит заменить title не сможем корректно, это есть ошибка.result = result .. '[[Категория:Википедия:Статьи с ошибочной работой Модуль:URL]]'endendreturn resultendsource = mw.text.trim( source, "%[%] " )local titleDelimeterPosition = mw.ustring.find( source, " ", 1 )if titleDelimeterPosition thenif not title or title == "" thentitle = mw.ustring.sub( source, titleDelimeterPosition + 1 )local postfixDelimeterPosition = mw.ustring.find( title, "%]", 1 )if postfixDelimeterPosition thenpostfix = mw.ustring.sub( title, postfixDelimeterPosition + 1 )title = mw.ustring.sub( title, 1, postfixDelimeterPosition - 1 )endendsource = mw.ustring.sub( source, 1, titleDelimeterPosition - 1 )endlocal hostStartPositionlocal schemeDelimeterPosition = mw.ustring.find( source, "://", 1, true )if schemeDelimeterPosition thenscheme = mw.ustring.sub( source, 1, schemeDelimeterPosition + 2)hostStartPosition = schemeDelimeterPosition + 3elseif mw.ustring.find( source, "^//", 1 ) thenscheme = "//"hostStartPosition = 3elseif mw.ustring.find( source, "^mailto:", 1 ) thenscheme = "mailto:"hostStartPosition = 8elseif mw.ustring.find( source, "@", 1 ) thenscheme = "mailto:"source = scheme .. sourcehostStartPosition = 8elsescheme = "http://"source = scheme .. sourcehostStartPosition = 8endif title thenlocal finds = mw.ustring.find( arg1, "[", 1, true )if titleDelimeterPosition and finds and finds > titleDelimeterPosition + 1 then-- Если titleDelimeterPosition промазал мимо скобки и нашел пробел раньше неё, к примеру "a [b  c]",-- то свернуть всю нашу хиромантию и выдать первый аргумент без изменений.if arg2 == nil thenreturn arg1 .. (isTestPage and '' or '[[Категория:Википедия:Статьи со сложным входом в Модуль:URL]]')-- Если есть arg2, а мы распарсить ссылку не смогли, и значит заменить title не сможем корректно, это есть ошибка.-- С другой стороны, если arg2 нет, а arg1 очень сложный, то возможно это нормальный ход вещей,-- и на вход в модуль дана уже очень сильно оформленная ссылка.elsereturn arg1 .. (isTestPage and '' or '[[Категория:Википедия:Статьи с ошибочной работой Модуль:URL]]')endendreturn '[' .. source .. ' ' .. title .. ']' .. postfixendlocal hostDelimeterPosition = mw.ustring.find( source, "/", hostStartPosition, true )if hostDelimeterPosition thenhost = mw.ustring.sub( source, hostStartPosition, hostDelimeterPosition - 1 )if hostDelimeterPosition == mw.ustring.len( source ) thenpath = nilelsepath = mw.ustring.sub( source, hostDelimeterPosition + 1 )endelsehost = mw.ustring.sub( source, hostStartPosition )end-- post-split format optionsif startsWith( host, 'www.' ) thenhost = mw.ustring.sub( host, 5 )endhost = mw.language.new( 'en' ):lc( host )if path and path ~= '' and path ~= '/' thenlocal title = host .. '/' .. pathif length and #title > length thentitle = host .. '/' .. mw.ustring.sub( path, 1, length - #title - 2 ) .. '…'endreturn '[' .. source .. ' ' .. title .. ']' .. postfixelsereturn '[' .. source .. ' ' .. host .. ']' .. postfixendendfunction p.formatUrl( frame )local url = frame.args[1] or ''local title = frame.args[2] or ''local length = frame.args['length'] and tonumber( frame.args['length'] )url = mw.text.trim( url )title = mw.text.trim( title )if url == '' thenreturn nilendif title == '' thentitle = nilendreturn formatUrlImpl( url, title, length )endfunction p.formatUrlSingle( context, options, url )url = mw.text.trim( url )if url == '' thenreturn nilendlocal title = nilif ( options['text'] and options['text'] ~= '' ) thentitle = options['text']endlocal length = options['length'] and tonumber( options['length'] )return formatUrlImpl( url, title, length )endreturn p
🔥 Top keywords: Тӧс бӱкКош-АгашВикипедия:Ӧмӧликтиҥ порталыВикипедия:ЈартамалыВикипедия:КурултайРоссияХристиан јаҥВикипедия:Талдама бичимелдерКичӱ изӱ айдыҥ 8 кӱниОрус тилКаспий талайВикипедия:Курултай/2020Чаган айдыҥ 7 кӱниСанкт-ПетербургЭдилАҥылу:Свежие правкиАлтай тилКичӱ изӱ айВикипедия:Курултай/2021МСК+4:00Чаган айдыҥ 3 кӱниАзимов, АйзекВикипедия:Кӱнниҥ кӧргӱзӱзиМоскваКочкор айдыҥ 6 кӱниАлтыгы НовгородАрсланКочкор айдыҥ 26 кӱниИталияӰлекер:Potd/NextMonthБӧкӰлекер:Potd/MonthӰлекер:Potd/2023-03Чаган айдыҥ 22 кӱниРадиоТуружаачы:ТолушБӧрӱАк-кийикАҥылу:Моё обсуждениеТулаан айдыҥ 14 кӱниШӱӱжӱ:Тӧс бӱкАпшыйактыКатегория:ISBN куулгазын ссылкаларын тузаланган бӱктерАйАҥылу:Мой вкладШекспир, УильямПутин, Владимир ВладимировичКочкор айдыҥ 27 кӱниВикипедия:ПрессаАлтай калыкКатегория:БастыраБулгаков, Михаил АфанасьевичКуран айдыҥ 24 кӱниКуран айдыҥ 6 кӱниЈопонФайл:Flag of Tuva.svgӰлӱрген айдыҥ 27 кӱниФайл:Flag of Altai Republic.svgВикипедия:ТалдаштарКӱчӱрген айдыҥ 3 кӱниАлтай РеспубликаТулаан айдыҥ 1 кӱниКандык айдыҥ 18 кӱниКӱӱк айдыҥ 12 кӱниЭкинурМехикоОҥдой аймакЫжыЧаган айдыҥ 2 кӱниКокышев, Лазарь ВасильевичЈодралуСыгын айдыҥ 5 кӱниЧаган айдыҥ 8 кӱниФинляндияКебезенниҥ јурт јеезезиКӱчӱрген айдыҥ 25 кӱниСыгын айдыҥ 26 кӱниБарре-Синусси, ФрансуазаЈаан изӱ айдыҥ 1 кӱниФайл:Flag of the Kumukh people.pngКичӱ изӱ айдыҥ 10 кӱниӰлекер:Cite webКуран айдыҥ 22 кӱниКатегория:ВикипедияЈаан изӱ айдыҥ 8 кӱниКичӱ изӱ айдыҥ 19 кӱниӰлекер:Ref-langКатегория:МатематикаКазахстанВолгоградКандык айдыҥ 8 кӱниФайл:FullMoon2010.jpgЈаан изӱ айдыҥ 18 кӱниЧаган айдыҥ 10 кӱниТуружаачыны шӱӱжери:35.203.136.212Јаан изӱ айдыҥ 19 кӱниКуран айдыҥ 18 кӱниӰстӱги-КӧкӧйӧКаспа