Модуль:Дорожная карта (1)
Материал из Справочника наблюдателя
Документация отсутствует!
Вы можете создать документацию ( создать ).
Задавайте категории на странице документации, а не здесь! Показать подстраницы
Задавайте категории на странице документации, а не здесь! Показать подстраницы
local p = {}
function Split(str, delim, maxNb)
-- Eliminate bad cases...
if string.find(str, delim) == nil then
return { str }
end
if maxNb == nil or maxNb < 1 then
maxNb = 0 -- No limit
end
local result = {}
-- result [1] = tostring(string.byte (str,1,1))
local pat = "(.-)" .. delim .. "()"
local nb = 0
local lastPos
for part, pos in string.gmatch(str, pat) do
nb = nb + 1
result[nb] = part
lastPos = pos
if nb == maxNb then break end
end
-- Handle the last field
if nb ~= maxNb then
result[nb + 1] = string.sub(str, lastPos)
end
return result
end
local match = string.match
function Trim(s)
return match(s,'^()%s*$') and '' or match(s,'^%s*(.*%S)')
end
function unnil (s, def)
if s == nil then
if def == nil then
return ''
end
return def
end
return s
end
xs = { ['1']=1, ['2']=2, ['3']=3, ['4']=4, ['5']=5, ['6']=6, ['7']=7, ['8']=8, ['9']=9, ['10']=10,
['11']=11, ['11ж']=12, ['11з']=13, ['12']=14, ['11а']=15, ['11б']=16, ['11в']=17, ['11г']=18, ['11д']=19, ['11е']=20, }
-- local linu
linu = ''
function p.xsx (capture)
if linu == '' then
return capture
else
local zz = xs[capture]
if zz == nil then
return '<span style="color:red; font-weight:bold; font-size:150%">'..capture..'[—несуществующий номер строки]</span>'
end
zz=linu[zz]
if zz == nil then
return '<span style="color:red; font-weight:bold; font-size:150%">'..capture..'[—не задан региональный эквивалент]</span>'
end
return zz
end
end
function p.Start (frame)
local blank = frame:preprocess ('{{#var:RoadMapFmt}}') == 'бланк'
local result = '<table class=wikitable><tr>'
result = result .. '<th>Контролируемое событие</th>'
if blank then
result = result .. '<th style="font-size:83%;line-height:105%">кол-во/<br />время</th>'
result = result .. '<th style="font-size:83%;line-height:105%;background-color:Honeydew;width:30px">да</th>'
result = result .. '<th style="font-size:83%;line-height:105%;background-color:FloralWhite;width:30px">нет</th>'
end
result = result .. '<th style="font-size:83%;line-height:105%">каким законом установлено</th>'
result = result .. '<th style="font-size:83%;line-height:105%">куда<br />писать<br />жалобу</th>'
result = result .. '<th style="font-size:83%;line-height:105%">норма об отв-сти</th>'
if not blank then
result = result .. '<th>Полезные ссылки</th>'
end
return result .. '</tr>'
end
function p.Section (frame)
frame:preprocess ('{{#vardefine:RoadMapLastKoib|}}')
if frame:preprocess ('{{#var:RoadMapKoib}}') == 'да' then
return ''
end
local blank = frame:preprocess ('{{#var:RoadMapFmt}}') == 'бланк'
local xxx = frame.args[1]
local result = '<tr><th style="text-align:left;font-size:105%;">' .. xxx .. '</th>'
if blank then
result = result .. '<th style="text-align:right;" class=plainlinks colspan=6> </th>'
else
result = result .. '<th colspan=4> </th>'
end
return result .. '</tr>'
end
function p.Line (frame)
local reg = frame:preprocess ('{{#var:RoadMapReg}}')
local usl = frame:preprocess ('{{#var:RoadMapUsl}}')
if usl == '' then
usl = reg
else
usl = usl .. ',' .. reg
end
local rule = unnil (frame.args['для'])
if rule ~= '' then
-- if true then return '(('..xxx..'))' end
local xx = Split (Trim (rule) .. ',все' , '%s*,%s*')
local yy = Split (Trim (usl), '%s*,%s*')
-- xxx = '(('..xxx..'))'
for ii = 1, #yy do
for jj = 1, #xx do
-- xxx = xxx..'(' .. xx [jj] .. '/' .. yy [ii] ..')'
if (xx [jj] == yy [ii]) and (xx [jj] ~= '') then
xx = nil
break
end
end
if xx == nil then
break
end
end
-- if true then return '(((('..xxx..'))))' end
if xx ~=nil then
return ''
end
end
--[[
режимы выдачи:
- полный (есть пометки К и Р) --- КОИБ=все
- простой (только строки для ручного подсчета, без пометок) --- КОИБ=нет
- составной-основной (строки для ручного подсчета с пометкой Р, для строк КОИБ — отсылка) --- пусто
- составной-вкладыш (только строки КОИБ) --- КОИБ=да
--]]
local blank
blank = frame:preprocess ('{{#var:RoadMapFmt}}') == 'бланк'
local koib
koib = frame:preprocess ('{{#var:RoadMapKoib}}')
local result, td, xxx, koibM, koibH
koibM = unnil (frame.args['дляКОИБ'])
koibH = (koibM ~= '') and (koibM ~= 'нет')
if not koibH then
frame:preprocess ('{{#vardefine:RoadMapLastKoib|}}')
end
--[[
xxx=(пусто, нет, заголовок) koib = (пусто, нет, да, все)
нет пусто да все
пусто + + V- + (универсальная строчка)
нет + V+(Р) V- V+(Р) строка ручного подсчета
згл V- VH /H+ /H+(К) строка для КОИБ
--]]
if ((koib == 'нет') and koibH) or ((koib == 'да') and not koibH) then
return ''
end
result = '<tr>'
-- если у нас дляКОИБ=заголовок, то нам в любом случае надо его вывести, если он изменился
if koibH then
if koibM == frame:preprocess ('{{#var:RoadMapLastKoib}}') then
if koib == '' then
return ''
end
result = ''
else -- рисуем header
if koib == '' then
xxx = 'font-size:83%;line-height:105%;'
td = 'ОИБ →'
else
xxx = ''
td = ''
end
result = frame:preprocess ('<tr><td style="font-weight:bold;' .. xxx .. '"><span style="color:red"> K'.. td ..' </span> {{#vardefineecho:RoadMapLastKoib|' .. koibM .. '}}</td>')
if blank then
result = result .. '<td colspan=6></td>'
else
result = result .. '<td colspan=4></td>'
end
result = result .. '</tr>'
end
if koib == '' then
return result
end
result = result .. '<tr>'
end
td = unnil (frame.args['событие'])
xxx = unnil (frame.args['совет'])
if xxx ~= '' then
td = td .. ". '''''" .. xxx .. "'''''"
end
if koibM == 'нет' then
if koib ~='нет' then
td = '<span style="color:limegreen;font-weight:bold"> Р </span>' .. td
end
elseif koibH and (koib == 'все') then
td = '<span style="color:red;font-weight:bold"> K </span>' .. td
end
xxx = frame:preprocess ('{{#var:RoadMapProt}}')
if xxx == '' then
linu = ''
else
linu = Split (Trim (xxx), '%s*,%s*')
end
td = string.gsub (td, '<_#(.-)_>', p.xsx )
result = result .. '<td>' .. td .. '</td>'
if blank then
xxx = unnil(frame.args['показатель'])
if (xxx ~= 'да') and (xxx ~= 'есть') then
td = 'X'
else
td = ''
end
result = result .. '<td style="text-align:center">' .. td .. '</td><td style="background-color:Honeydew"> </td><td style="background-color:FloralWhite"> </td>'
end
result = result .. '<td style="font-size:93%; line-height:105%">'
local Bill, Link, Abbr
local s = unnil (frame.args['все'])
if s ~= '' then
Link = 'НПА:Федеральный закон от 12.06.2002 № 67-ФЗ'
Abbr = "'''ФЗГ: '''"
if blank then
s = string.gsub (s , '<_([^#][^:]-)_>', 'ст. %1')
s = string.gsub (s, '<_([^#][^:]-):(.-)_>', '<span style="white-space: nowrap;">%2 ст. %1</span>')
else
s = string.gsub (s , '<_([^#][^:]-)_>', '[['..Link..':Статья %1|ст. %1]]')
s = string.gsub (s, '<_([^#][^:]-):(.-)_>', '[['..Link..':Статья %1|<span style="white-space: nowrap;">%2 ст. %1</span>]]')
end
s = Abbr .. s
end
td = s
s = unnil (frame.args['КОИБ'])
if s ~= '' then
if td ~= '' then
td = td .. '; '
end
Link = 'НПА:Постановление ЦИК России от 06.07.2011 № 19/204-6:Приложение'
Abbr = "'''ИИК: '''"
if blank then
s = string.gsub (s , '<_([^#][^:]-)_>', 'п. %1')
s = string.gsub (s, '<_([^#][^:]-):(.-)_>', '<span style="white-space: nowrap;">%2 п. %1</span>')
else
s = string.gsub (s , '<_([^#][^:]-)_>', '[['..Link..':%1|п. %1]]')
s = string.gsub (s, '<_([^#][^:]-):(.-)_>', '[['..Link..':%1|<span style="white-space: nowrap;">%2 п. %1</span>]]')
end
td = td .. Abbr .. s
end
if (reg == 'все') and (rule ~= '') then
td = '<span style="font-weight:bold;color:green">(' .. rule .. ')</span> ' .. td
end
if reg ~= '' then
--(((
local AregC, Alaw0, Alaw1
if reg == 'все' then
AregC = Split (frame:preprocess ('{{#var:RoadMapRegC}}'), '%s*;%s*')
Alaw0 = Split (frame:preprocess ('{{#var:RoadMapLaw0}}'), '%s*;%s*')
Alaw1 = Split (frame:preprocess ('{{#var:RoadMapLaw1}}'), '%s*;%s*')
else
AregC = { [1]=reg }
Alaw0 = { [1]=frame:preprocess ('{{#var:RoadMapLaw0}}') }
Alaw1 = { [1]=frame:preprocess ('{{#var:RoadMapLaw1}}') }
end
for i = 1, #AregC do
s = unnil (frame.args [AregC [i]])
if s ~= '' then
if td ~= '' then
td = td .. '; '
end
Bill = Alaw0 [i]
Link, Abbr = string.match (Bill, '^(.*)=(.+)=(.+)$')
-- if Link == nil then
-- Link = Bill
-- Abbr = ''
-- else
Abbr = "'''" .. Abbr .. ": '''"
-- end
if (Link == '') or blank then
s = string.gsub (s , '<_([^#][^:]-)_>', 'ст. %1')
s = string.gsub (s, '<_([^#][^:]-):(.-)_>', '<span style="white-space: nowrap;">%2 ст. %1</span>')
else
s = string.gsub (s , '<_([^#][^:]-)_>', '[['..Link..':Статья %1|ст. %1]]')
s = string.gsub (s, '<_([^#][^:]-):(.-)_>', '[['..Link..':Статья %1|<span style="white-space: nowrap;">%2 ст. %1</span>]]')
end
td = td .. Abbr .. s
end
s = unnil (frame.args[AregC [i]..'+'])
if s ~= '' then
if td ~= '' then
td = td .. '; '
end
Bill = Alaw1 [i]
Link, Abbr = string.match (Bill, '^(.*)=(.+)=(.+)$')
-- if Link == nil then
-- Link = Bill
-- Abbr = ''
-- else
Abbr = "'''" .. Abbr .. ": '''"
-- end
if (Link == '') or blank then
s = string.gsub (s , '<_([^#][^:]-)_>', 'ст. %1')
s = string.gsub (s, '<_([^#][^:]-):(.-)_>', '<span style="white-space: nowrap;">%2 ст. %1</span>')
else
s = string.gsub (s , '<_([^#][^:]-)_>', '[['..Link..':Статья %1|ст. %1]]')
s = string.gsub (s, '<_([^#][^:]-):(.-)_>', '[['..Link..':Статья %1|<span style="white-space: nowrap;">%2 ст. %1</span>]]')
end
td = td .. Abbr .. s
end
end
--)))
end
result = result .. td
result = result .. '</td><td style="font-size:93%; line-height:105%; text-align:center">' .. unnil(frame.args['куда'])
result = result .. '</td><td style="font-size:93%; line-height:105%">' .. unnil(frame.args['отв'])
result = result .. '</td>'
if not blank then
result = result .. '<td style="font-size:93%; line-height:105%">'
xxx = unnil(frame.args['ТС'])
if xxx ~= '' then
result = result .. xxx .. ' '
end
result = result .. '<span class="doclink" style="font-weight:bold; font-style:italic">' .. unnil(frame.args['жалоба']) .. '</span>'
result = result .. '</td>'
end
return result .. '</tr>'
end
function p.Finish (frame)
local Alaw0, Alaw1
if frame:preprocess ('{{#var:RoadMapReg}}') == 'все' then
Alaw0 = Split (frame:preprocess ('{{#var:RoadMapLaw0}}'), '%s*;%s*')
Alaw1 = Split (frame:preprocess ('{{#var:RoadMapLaw1}}'), '%s*;%s*')
elseif frame:preprocess ('{{#var:RoadMapReg}}') ~= '' then
Alaw0 = { [1]='', [2]=frame:preprocess ('{{#var:RoadMapLaw0}}') }
Alaw1 = { [1]='', [2]=frame:preprocess ('{{#var:RoadMapLaw1}}') }
else
Alaw0 = {}
end
local result = '</table> '
for i = 2, #Alaw0 do
local Abbr, Name
Abbr, Name = string.match (Alaw0 [i], '^.*=(.+)=(.+)$')
result = result .. "'''" ..Abbr .. "''' — " .. Name .. "<br />"
if Alaw1[i] ~= '' then
Abbr, Name = string.match (Alaw1 [i], '^.*=(.+)=(.+)$')
result = result .. "'''" .. Abbr .. "''' — " .. Name .. "<br />"
end
end
if frame:preprocess ('{{#var:RoadMapKoib}}') ~= 'нет' then
result = result .. "'''ИИК''' — «Инструкция о порядке использования технических средств подсчета голосов — комплексов обработки избирательных бюллетеней 2010...» (утв. пост. ЦИК РФ от 06.07.2011 № 19/204−6)<br />"
end
result = result .. "'''ФЗГ''' — Федеральный закон от 12.06.2002 № 67-ФЗ «Об основных гарантиях избирательных прав и права на участие в референдуме граждан Российской Федерации»<br />"
.. "'''КоАП''' — Кодекс РФ об административных правонарушениях<br />"
.. "'''УК''' — Уголовный кодекс РФ<br />"
.. "'''ТИК''' — территориальная (или иная вышестоящая) комиссия<br />"
.. "'''УИК''' — участковая избирательная комиссия<br />"
.. "'''УФП''' — увеличенная форма протокола<br />"
.. "'''ст.''' — статья, '''п.''' — пункт, '''ч.''' — часть, '''п/п''' — подпункт"
return result
end
return p
-- [[Категория:Шаблоны для дорожных карт]]