Модуль:Ссылки на закон
Материал из Справочника наблюдателя
В дорожных картах и других подобных таблицах, где присутствует множество ссылок на законы, используется сокращенная запись. Сейчас применяется первый из представленных ниже вариантов. Его недостатки: он не так короток, как хотелось бы (основная проблема таблиц — дефицит места), во-первых, и он нелогичен (закон-пункт-статья), во-вторых. Но зато он читается даже непосвященными и содержит минимальное число запятых.
Так какой же вариант лучше?
- ФЗГ: п. 3, 7, 8 ст. 30, п. 20, 27 ст. 29; ЗМО: ч. 3, 7, 8 ст. 20, ч. 15 ст. 19
- ФЗГ: ст. 30, п. 3, 7, 8, ст. 29, п. 20, 27; ЗМО: ст. 20, ч. 3, 7, 8, ст. 19, ч. 15
- ФЗГ: 30:3, 7, 8; 29:20, 27; ЗМО: 20:3, 7, 8; 19:15
- ФЗГ: 30:3,7,8, 29:20,27; ЗМО: 20:3,7,8, 19:15
- ФЗГ: 30 (3, 7, 8), 29 (20, 27); ЗМО: 20 (3, 7, 8), 19 (15)
Нотация в примерах 3−4 использует принципы библейских ссылок (см.вп:Сокращения названий книг Библии в Википедии). Конечно, такая запись будет сопровождаться текстом «Ссылка на норму закона (статья : пункт)» в заголовке колонки.
Вышеприведенная документация хранится отдельно ( править | история | скрыть ).
Задавайте категории на странице документации, а не здесь! Показать подстраницы
Задавайте категории на странице документации, а не здесь! Показать подстраницы
local p={}
-- ФЗГ: п. 3, 7, 8 ст. 30, п. 20, 27 ст. 29; ЗМО: ч. 3, 7, 8 ст. 20, ч. 15 ст. 19
-- ФЗГ: ст. 30, п. 3, 7, 8, ст. 29, п. 20, 27; ЗМО: ст. 20, ч. 3, 7, 8, ст. 19, ч. 15
-- ФЗГ: 30:3, 7, 8; 29:20, 27; ЗМО: 20:3, 7, 8; 19:15
-- ФЗГ: 30:3,7,8, 29:20,27; ЗМО: 20:3,7,8, 19:15
-------------------------------------------------------------------------
-- Функция addBill — формирование ссылки на закон
-- Параметры:
-- text — обрабатываемый текст
-- code — обозначение акта для печатаемого текста (например, «ФЗГ»)
-- addc — обозначение статей для печатаемого текста (по умолчанию «ст.»)
-- sect — обозначение след. уровня для печатаемого текста (обычно «п.»)
-- subs — обозначение след. уровня для печатаемого текста (обычно «п/п»)
-- hyperlink — создавать гиперссылку
-- link — основная часть названия для гиперссылок (например, «НПА:Об основных гарантиях....67−ФЗ)»)
-- addl — дополнительная часть названия для гиперссылок (например (и по умолчанию), «:Статья »)
-- структуру текста пока полностью сохраняю из нынешних дорожных карт
-- function addBill (view, textPara, code, link, addl, addc, sect, subs)
-- billModule.parseBill (textPara, code, addc, sect, subs, view == 'Экран', link, addl)
function p.parseBill (text, code, addc, sect, subs, hyperlink, link, addl, filter)
if (text or '') == '' then
return nil
end
if not addl then
addl = ':Статья '
end
if not addc then
addc = 'ст.'
end
local testA, testS = mw.ustring.match (text, '^%s*(%d[%d%.%-−]*)%s*:([^,;]+)$')
if testA then
text = '<_' .. testA .. ':' .. mw.ustring.gsub (testS, '%+', ', ') .. '_>'
else
testA = mw.ustring.match (text, '^%s*(%d[%d%.%-−]*)%s*$')
if testA then
text = '<_' .. testA .. '_>'
end
end
if hyperlink then
-- text = mw.ustring.gsub (text , '<_([^#][^:]-)_>', '[[' .. link .. addl .. '%1|' .. addc .. ' %1]]')
text = mw.ustring.gsub (text , '<_([^#][^:_]*)_>', '[[' .. link .. addl .. '%1|' .. addc .. ' %1]]')
-- text = mw.ustring.gsub (text, '<_([^#][^:]-):%s*(%d[^:]-)_>', '[[' .. link .. addl .. '%1|' .. sect .. ' %2 ' .. addc .. ' %1]]')
text = mw.ustring.gsub (text, '<_([^#][^:]*):%s*(%d[^:_]*)_>', '[[' .. link .. addl .. '%1|' .. sect .. ' %2 ' .. addc .. ' %1]]')
-- text = mw.ustring.gsub (text, '<_([^#][^:]-):%s*(%d[^:]-):%s*([^:]-)_>', '[[' .. link .. addl .. '%1|' .. subs .. ' %3 ' .. sect .. ' %2 ' .. addc .. ' %1]]')
text = mw.ustring.gsub (text, '<_([^#][^:]*):%s*(%d[^:]*):%s*([^:_]+)_>', '[[' .. link .. addl .. '%1|' .. subs .. ' %3 ' .. sect .. ' %2 ' .. addc .. ' %1]]')
-- text = mw.ustring.gsub (text, '<_([^#][^:]-):(.-)_>', '[[' .. link .. addl .. '%1|%2 ' .. addc .. ' %1]]')
text = mw.ustring.gsub (text, '<_([^#][^:]*):([^_]+)_>', '[[' .. link .. addl .. '%1|%2 ' .. addc .. ' %1]]')
else
text = mw.ustring.gsub (text, '<_([^#][^:]-)_>', addc .. ' %1')
text = mw.ustring.gsub (text, '<_([^#][^:]-):%s*(%d[^:]-)_>', sect .. ' %2 ' .. addc .. ' %1')
text = mw.ustring.gsub (text, '<_([^#][^:]-):%s*(%d[^:]-):%s*([^:]-)_>', subs .. ' %3 ' .. sect .. ' %2 ' .. addc .. ' %1')
text = mw.ustring.gsub (text, '<_([^#][^:]-):(.-)_>', '%2 ' .. addc .. ' %1')
end
return '<b>' .. code .. ':</b> ' .. filter(text)
end
return p