Модуль:Roadmap
Материал из Справочника наблюдателя
Описание модуля[]
Документация отсутствует!
Вы можете создать документацию ( создать ).
Задавайте категории на странице документации, а не здесь! Показать подстраницы
Задавайте категории на странице документации, а не здесь! Показать подстраницы
local p = {}
local global = mw.ext.luaglobal
local family = 'Дорожная карта'
local tab = mw.loadData( 'Модуль:' .. family .. '/Параметры')
local billModule = require ('Модуль:Ссылки на закон')
global.strict( true )
local function defValue( val, def )
if ( val or '' ) == '' then
return def
end
return val
end
local function err( s )
return '<p class="error">' .. s .. '</p>'
end
local outRes = { '' } -- 1 строка для сообщений об ошибках
--local Err = {}
--local function outputErr( s )
-- Err[#Err+1] = '<p class="error">' .. s .. '</p>'
--end
function p.Start( frame )
local args = frame:getParent().args
local param = {}
param.method = mw.ustring.lower( defValue( args['подсчет'], 'ручной' ))
if not tab.methods [param.method] then
return err( 'Ошибка: недопустимое значение параметра «подсчет»' )
elseif type( tab.methods[param.method] ) == 'string' then
param.method = tab.methods[param.method]
end
param.code = defValue( args['код'], 'все' )
param.elections = tonumber (args ['кампаний'] or 1) or 1
if param.elections < 1 then
param.elections = '1'
end
param.constituencies = args ['округов'] or ''
if param.constituencies == 'нет' or param.constituencies == '1' then
param.constituencies = ''
end
param.twitter = defValue (args ['твиттер'], 'выборы')
param.twitter = mw.ustring.gsub (param.twitter, '#', '')
param.format = defValue( args['вид'], 'Экран' )
param.format = mw.ustring.upper( mw.ustring.sub( param.format, 1, 1 ) )
.. mw.ustring.lower( mw.ustring.sub( param.format, 2, -1 ) )
if param.format == 'Нет' then
param.format = 'Экран'
end
if not tab.views[param.format] then
return err( 'Ошибка: недопустимое значение параметра «вид»' )
end
param.flags = args['условия'] or ''
param.candidates = args['кандидатов'] or ''
param.sms = args['смс'] or ''
local pageName = mw.title.getCurrentTitle().baseText
local pageCity, pageReg, pageDate = mw.ustring.match( pageName, '^(.+) %((.+)%)%, (%d%d%.%d%d%.%d%d%d%d)' )
if not pageCity then
pageCity, pageDate = mw.ustring.match( pageName, '^(.+)%, (%d%d%.%d%d%.%d%d%d%d)' )
pageReg = ''
end
param.city = defValue( args ['место'], pageCity or '' )
param.reg = defValue( args ['регион'], pageReg or '' )
param.date = defValue( args['дата'], pageDate or '' )
local d,m,y = mw.ustring.match( param.date, '^(%d%d)%.(%d%d)%.(%d%d%d%d)$' )
if d then
local months = { 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря' }
d = tonumber (d)
m = months [tonumber(m)]
y = tonumber (y)
param.date = d .. ' ' .. m .. ' ' .. y .. ' года'
end
end
function p.Row( frame )
local args = frame:getParent().args
local function bool( z )
local x = args[z]
if x == 'да' or x == 'есть' then
return true
end
if x == 'нет' or (x or '') == '' then
return false
end
outRes[#outRes+1] = err( 'Недопустимое значение параметра «' .. z .. ' = ' .. x ..'»' )
end
local regNo = ( args['кроме'] or '') ~= ''
if ( args['для'] or '') ~= '' and regNo then
outRes[#outRes+1] = err( 'Одновременно заданы параметры «для» и «кроме»' )
end
local record = { '',
_table = 'roadmap',
event = args['событие'],
action = args['совет'],
field = bool( args['показатель'] ),
forKOIB = bool( args['дляКОИБ'] ),
situation = args['ТС'],
complaint = args['жалоба'],
KoAP = args['КоАП'],
UK = args['УК'],
regions = ( args['для'] or '' ) .. ( args['кроме'] or '' ),
regExcept = regNo,
condition = args['если'],
}
args['событие'], args['совет'], args['показатель'], args['дляКОИБ'],
args['ТС'], args['жалоба'], args['КоАП'], args['УК'], args['для'],
args['кроме'], args['если'] = nil
local keys,values = {}, {}
for key,value in pairs( args ) do
keys[#keys+1] = key
values[#values+1] = value
end
record.keys = table.concat( keys, mw.ustring.char( 0xB6 ) )
record.values = table.concat( values, mw.ustring.char( 0xB6 ) )
outRes[#outRes+1] = frame:callParserFunction( '#cargo_store', record )
outRes[#outRes+1] = record.event .. '<br>'
return table.concat( outRes )
end
--[===[
Параметры строки:
debug
- дляКОИБ
- для
- кроме
- если
- событие
- совет
- показатель
все
КОИБ
(code)
(code)+
- КоАП
- УК
- ТС
- жалоба
--]===]
return p