Изменения

Модуль:GeoInfobox

3230 байт добавлено, 15:40, 19 ноября 2018
м
уточнение
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)] .. '&nbsp;'
text = mw.ustring.gsub(text, '^[≈~<>]%s*', '')
elseif mw.ustring.match( text, '^[бдмо][еко][лно]?[ел]?[ео]?' ) then -- до|около|более|менее
before = mw.ustring.match( text, '^[бдмо][еко][лно]?[ел]?[ео]?' ) .. '&nbsp;'
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 .. '&nbsp;' .. 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;
Анонимный участник