Модуль:GeoInfobox — различия между версиями
Alexander (обсуждение | вклад) (Новая страница: «local p = {}; function p.renderLine( frame ) local args = frame:getParent().args; frame.args = frame:getParent().args; local cat = '' local prefix = { ['~'…») |
Alexander (обсуждение | вклад) м (1 версия импортирована) |
(нет различий)
|
Версия 14:28, 16 апреля 2019
local p = {}; function p.renderLine( frame ) local args = frame:getParent().args; frame.args = frame:getParent().args; local cat = '' local prefix = { ['~'] = 'около', ['>'] = 'более', ['<'] = 'менее' } local before = '' local ref = '' local text = args[1] or ''; local label = args[2] or ''; -- одиночная метка local label2 = args[3] or ''; -- множественная метка local wikify = args[4] or ''; local after = args[5] or ''; if text == '-' then return ''; end if text ~= '' then if label2 ~= '' then if mw.ustring.match( text, "[^/]+/[^/]+") then label = label2 end if wikify == '1' then frame.args['o'] = '[[%]]' frame.args['nodis'] = '1' end local strip = require('Module:String/strip').strip frame.args[1] = text text = strip(frame) else if after ~= '' then if mw.ustring.match( text, '\127' ) and not mw.ustring.match( text, 'templatestyles' ) then text, ref = mw.ustring.match( text, '[^\127]+' ), mw.ustring.match( text, '\127.+' ) end if not mw.ustring.match( text, '[-—×]' ) then local tmp_text = mw.ustring.gsub( text, '[≈−, ]', {['≈'] = '~', ['−'] = '-', [','] = '.', [' '] = ''} ) if mw.ustring.match( text, '^[≈~<>]%s*%d' ) and prefix[tmp_text:sub(1, 1)] then before = prefix[tmp_text:sub(1, 1)] .. ' ' text = mw.ustring.gsub(text, '^[≈~<>]%s*', '') elseif mw.ustring.match( text, '^[бдмо][еко][лно]?[ел]?[ео]?' ) then -- до|около|более|менее before = mw.ustring.match( text, '^[бдмо][еко][лно]?[ел]?[ео]?' ) .. ' ' text = mw.ustring.gsub(text, '^[бдмо][еко][лно]?[ел]?[ео]?%s*', '') end tmp_text = mw.ustring.gsub(tmp_text, '^[≈~<>бдмо][еко]?[лно]?[ел]?[ео]?%s*', '') if tonumber(tmp_text) then local lang = mw.language.getContentLanguage() text = lang:formatNum( tonumber( tmp_text ) ) elseif mw.title.getCurrentTitle():inNamespace(0) then cat = '[[Категория:Карточка на Геокаре: исправить: числовые параметры]]' end end end if wikify == '1' then text = '[[' .. text .. '|' .. mw.ustring.gsub(text, '%s?%(.*%)$', '' ) .. ']]' end text = before .. text .. ref .. ' ' .. after end else if args[ 'd' ] and args[ 'd' ] ~= '' then text = frame:expandTemplate{ title = 'Wikidata', args = { args[ 'd' ], text, separator = args['r'] or '' } }; end end if text ~= '' then return '<tr><th>' .. label .. '</th><td>' .. text .. '</td></tr>' .. cat; end return ''; end function p.findImage( frame ) local page = mw.title.getCurrentTitle() local txt, args = page:getContent(), frame.args if args and args[1] and args[1] ~= '' then if txt:match(':' .. args[1]) and mw.title.getCurrentTitle():inNamespace(0) then return '[[Категория:Карточка на Геокаре: исправить изображение]]' end end end return p;