Модуль для вставки в статью предполагаемых дат открытия станций метро Москвы со ссылками на источники. Модуль содержит следующие функции:
- year — только год.
- date — полная дата (или хотя бы месяц или начало/конец года, уж что есть).
- citeyear, citedate — аналогично двум предыдущим, но со сноской на источник.
Все функции принимают в качестве первого параметра название станции либо название участка, на котором станция расположена, — то и другое в формате, в котором эти данные занесены в таблицы в модуле. Функции, возвращающие полную дату, принимают также второй параметр для форматирования вывода: если в нём передать букву «в», то результат будет отвечать на вопрос «когда?», а не на вопрос «что?» (например, «в январе», а не «январь»); если же передать букву «В», то вдобавок результат будет написан с большой буквы.
Примеры вызова функций
править
{{#invoke:Песочница/Vcohen/Прогноз ММ|year|Нижняя Масловка}} 2018 {{#invoke:Песочница/Vcohen/Прогноз ММ|date|Нижняя Масловка}} конец 2018 года {{#invoke:Песочница/Vcohen/Прогноз ММ|citeyear|Нижняя Масловка}} 2018[1] {{#invoke:Песочница/Vcohen/Прогноз ММ|citedate|Нижняя Масловка}} конец 2018 года[1] {{#invoke:Песочница/Vcohen/Прогноз ММ|year|Нижняя Масловка|В}} 2018 {{#invoke:Песочница/Vcohen/Прогноз ММ|date|Нижняя Масловка|В}} В конце 2018 года {{#invoke:Песочница/Vcohen/Прогноз ММ|citeyear|Нижняя Масловка|В}} 2018[1] {{#invoke:Песочница/Vcohen/Прогноз ММ|citedate|Нижняя Масловка|В}} В конце 2018 года[1] {{#invoke:Песочница/Vcohen/Прогноз ММ|year|Нижняя Масловка|в}} 2018 {{#invoke:Песочница/Vcohen/Прогноз ММ|date|Нижняя Масловка|в}} в конце 2018 года {{#invoke:Песочница/Vcohen/Прогноз ММ|citeyear|Нижняя Масловка|в}} 2018[1] {{#invoke:Песочница/Vcohen/Прогноз ММ|citedate|Нижняя Масловка|в}} в конце 2018 года[1] |
{{#invoke:Песочница/Vcohen/Прогноз ММ|year|Шелепиха}} 2018 {{#invoke:Песочница/Vcohen/Прогноз ММ|date|Шелепиха}} 26 февраля 2018 года {{#invoke:Песочница/Vcohen/Прогноз ММ|citeyear|Шелепиха}} {{#invoke:Песочница/Vcohen/Прогноз ММ|citedate|Шелепиха}} {{#invoke:Песочница/Vcohen/Прогноз ММ|year|NE}} 2021—2022 {{#invoke:Песочница/Vcohen/Прогноз ММ|date|NE}} 2021—2022 год {{#invoke:Песочница/Vcohen/Прогноз ММ|citeyear|NE}} {{#invoke:Песочница/Vcohen/Прогноз ММ|citedate|NE}} |
Примечания к примерам
править- ↑ 1 2 3 4 5 6 Правительство Москвы. Большая кольцевая линия . stroi.mos.ru. Комплекс градостроительной политики и строительства города Москвы. Дата обращения: 30 ноября 2017.
- ↑ 1 2 Правительство Москвы. От идеи к реализации: история больших и малых колец метро / Новости города / Сайт Москвы . mos.ru. Официальный сайт Мэра Москвы (26 февраля 2018). Дата обращения: 6 марта 2018.
- ↑ 1 2 Правительство Москвы. № 813-ПП Об утверждении проекта планировки участка линейного объекта метрополитена проектируемой линии Третий пересадочный контур от проектируемой станции «Деловой центр» до проектируемой станции «Нижняя Масловка» . mos.ru. Официальный сайт Мэра Москвы (25 декабря 2012). Дата обращения: 10 февраля 2018.
- ↑ 1 2 Правительство Москвы. Северо-восточный участок Большого кольца метро «поедет» в 2021 году – Хуснуллин . stroi.mos.ru. Комплекс градостроительной политики и строительства города Москвы. Дата обращения: 5 июля 2018.
- ↑ 1 2 Правительство Москвы. № 690-ПП Об утверждении проекта планировки территории линейного объекта — участка проектируемой линии метрополитена Третий пересадочный контур от проектируемой станции «Нижняя Масловка» до проектируемой станции «Авиамоторная» . mos.ru. Официальный сайт Мэра Москвы (25 ноября 2014). Дата обращения: 10 февраля 2018.
Таблицы
правитьДля полноценного функционирования модуля следует поддерживать в актуальном состоянии четыре таблицы:
Таблица stations — все станции, поддерживаемые модулем. Индекс таблицы — название станции в том виде, в котором надо его передавать при обращении к модулю. Поля:
- span — имя участка, на котором расположена станция; если оно указано и в таблице участков существует запись с таким ключом, то все остальные данные будут взяты оттуда, а не отсюда;
- date — предполагаемая дата пуска, не включая год (например: «31 декабря»);
- date_when и date_what — то же, но на случай, если дата пишется по-разному при ответе на вопросы «когда?» и «что?» (например, соответственно: «В январе» и «Январь»); если она пишется одинаково, то заносится один раз в поле date, а эти два поля пропускаются, и наоборот; во всех трёх полях текст должен начинаться с большой буквы;
- year — предполагаемый год пуска;
- source — имя источника, на который при этой дате будет поставлена сноска (по этому имени будет найдена запись в таблице sources);
- source2 — как source, если есть ещё один источник на ту же дату;
- date_alt, date_when_alt, date_what_alt, year_alt, source_alt, source2_alt — то же самое, что и без _alt, но для другой даты со своими источниками.
Таблица spans — все участки, на которых расположены станции. Индекс таблицы — название участка в том виде, в котором надо его передавать при обращении к модулю и в котором оно заполняется в поле span таблицы станций. Поля в таблице — те же, что и в таблице stations, за исключением поля span.
Таблица sources — все источники, на которые должны быть даны ссылки. Индекс таблицы — имя источника в том виде, в котором оно заполняется в полях source и source2 двух предыдущих таблиц. Это же имя источника используется в качестве имени сноски ref name для объединения одинаковых сносок. Поля:
- author, website, publisher, url, title, date, accessdate — значения для заполнения параметров при обращении к шаблону {{cite web}};
- sitedata — имя сайта, на котором расположен источник; если оно указано и в таблице сайтов существует запись с таким ключом, то поля author, website, publisher будут взяты оттуда, а не отсюда.
Таблица sites — все основные сайты, источники с которых используются. Индекс таблицы — имя сайта в том виде, в котором оно заполняется в поле sitedata таблицы источников. Поля:
- author, website, publisher — как в таблице источников.
local p = {}
local spans = {
['SS']={date='',year='2019',source='SS2019',year_alt='2020',source_alt='SS2020'},
['NW']={date='26 февраля',year='2018',source='mosplan',source2='NW'},
['S']={date='',year='2020',source='mosplan',source2='S'},
['SW']={date='',year='2020',source='mosplan',source2='SW'},
['W']={date='',year='',source='mosplan',source2='W'},
['NE']={date='',year='2021—2022',source='SE2021',source2='NE'},
['SE']={date='',year='2022',source='mosplan',source2='SE'},
}
local stations = {
['Филатов Луг']={span='SS'},
['Прокшино']={span='SS'},
['Ольховая']={span='SS'},
['Столбово СЛ']={span='SS'},
['Нижняя Масловка']={span='NW',date_when='В конце',date_what='Конец',year='2018',source='stroi'},
['Шелепиха']={span='NW',date='',year='',source='peredano'},
['Деловой центр']={span='NW',date='',year='',source='peredano'},
['Ржевская']={span='NE',date='',year='',source='dve'},
['Шереметьевская']={span='NE',date='',year='',source='dve'},
['Кленовый бульвар']={span='SE',date='',year='',source='biryu'},
['Деловой центр']={span='NW'},
['Шелепиха']={span='NW'},
['Хорошёвская']={span='NW'},
['ЦСКА']={span='NW'},
['Петровский парк']={span='NW'},
['Зюзино']={span='S'},
['Воронцовская']={span='S'},
['Улица Новаторов']={span='S'},
['Проспект Вернадского']={span='SW'},
['Мичуринский проспект']={span='SW'},
['Аминьевское шоссе']={span='SW'},
['Давыдково']={span='SW'},
['Улица Народного Ополчения']={span='W'},
['Нижние Мнёвники']={span='W'},
['Терехово']={span='W'},
['Можайская']={span='W'},
['Авиамоторная']={span='NE'},
['Лефортово']={span='NE'},
['Рубцовская']={span='NE'},
['Стромынка']={span='NE'},
['Ржевская']={span='NE'},
['Шереметьевская']={span='NE'},
['Нижегородская улица']={span='SE'},
['Текстильщики']={span='SE'},
['Печатники']={span='SE'},
['Нагатинский Затон']={span='SE'},
['Кленовый бульвар']={span='SE'},
}
local sources = {
['SS2019']={
url='http://stroi.mos.ru/news/k-2019-ghodu-sokol-nichieskuiu-liniiu-mietro-prodliat-na-chietyrie-stantsii-do-kommunarki-khusnullin',
title='К 2019 году Сокольническую линию метро продлят на четыре станции до Коммунарки — Хуснуллин',
accessdate='2017-11-30',
sitedata='stroi.mos.ru',
lang='ru'
},
['SS2020']={
url='http://mosday.ru/news/item.php?1386334',
title='К 2020 году в Москве построят новый участок красной ветки столичного метро',
accessdate='2017-11-30',
sitedata='mosday.ru',
lang='ru'
},
['stroi']={
url='https://stroi.mos.ru/metro/tretii-peresadochnyi-kontur',
title='Большая кольцевая линия',
accessdate='2017-11-30',
sitedata='stroi.mos.ru',
lang='ru'
},
['NW']={
url='https://www.mos.ru/upload/photobank/common/upload/25.12.2012_PP-813.pdf',
title='№ 813-ПП Об утверждении проекта планировки участка линейного объекта метрополитена проектируемой линии Третий пересадочный контур от проектируемой станции «Деловой центр» до проектируемой станции «Нижняя Масловка»',
date='2012-12-25',
accessdate='2018-02-10',
sitedata='mos.ru',
lang='ru'
},
['peredano']={
url='https://stroi.mos.ru/news/rublievo-arkhanghiel-skaia-liniia-mietro-mozhiet-poiavit-sia-v-moskvie',
title='Рублево-Архангельская линия метро может появиться в Москве',
accessdate='2018-03-06',
sitedata='stroi.mos.ru',
lang='ru'
},
['S']={
url='https://www.mos.ru/upload/photobank/common/upload/08.10.2014_64-02-1341_14_Sobyanin_S.S._KHusnullin_M.SH._d9b304172f05ab6ffa613dc88de2edf1.pdf',
title='№ 579-ПП Об утверждении проекта планировки участка линейного объекта метрополитена проектируемой линии Третий пересадочный контур от проектируемой станции «Проспект Вернадского» до станции «Каховская»',
date='2014-10-07',
accessdate='2018-02-10',
sitedata='mos.ru',
lang='ru'
},
['SW']={
url='https://www.mos.ru/upload/photobank/common/upload/01.07.2015_64-02-917_15_Sobyanin_S.S._KHusnullin_M.SH._dd75ca16dba1bf2afc8ce0723e40674c.pdf',
title='№ 371-ПП Об утверждении проекта планировки территории линейного объекта — участка проектируемой линии метрополитена Третий пересадочный контур от станции «Кунцевская» до станции «Проспект Вернадского»',
date='2014-11-25',
accessdate='2018-02-10',
sitedata='mos.ru',
lang='ru'
},
['W']={
url='https://www.mos.ru/upload/photobank/common/upload/03.07.2015_64-02-934_15_Sobyanin_S.S._KHusnullin_M.SH._a77ecb7a7a45cec18b3e4266d3dd0018.pdf',
title='№ 404-ПП Об утверждении проекта планировки территории линейного объекта — участка проектируемой линии метрополитена Третий пересадочный контур от станции «Хорошевская» до станции «Кунцевская»',
date='2015-07-02',
accessdate='2018-02-10',
sitedata='mos.ru',
lang='ru'
},
['SE2021']={
url='https://stroi.mos.ru/news/sieviero-vostochnyi-uchastok-bol-shogho-kol-tsa-mietro-otkroietsia-v-2021-ghodu-khusnullin',
title='Северо-восточный участок Большого кольца метро «поедет» в 2021 году – Хуснуллин',
accessdate='2018-07-05',
sitedata='stroi.mos.ru',
lang='ru'
},
['NE']={
url='https://www.mos.ru/upload/photobank/common/upload/26.11.2014_64-02-1602_14_Sobyanin_S.S._KHusnullin_M.SH._61fb518d231e43c4c11536aefe9794e9.pdf',
title='№ 690-ПП Об утверждении проекта планировки территории линейного объекта — участка проектируемой линии метрополитена Третий пересадочный контур от проектируемой станции «Нижняя Масловка» до проектируемой станции «Авиамоторная»',
date='2014-11-25',
accessdate='2018-02-10',
sitedata='mos.ru',
lang='ru'
},
['SE']={
url='https://www.mos.ru/upload/documents/docs/633-PP.pdf',
title='№ 633-ПП от 28.06.2018 «Об утверждении проекта планировки территории линейного объекта - участок проектируемой линии метрополитена Третий пересадочный контур от станции «Каширская» до проектируемой станции «Текстильщики»',
date='2018-06-28',
accessdate='2018-07-06',
sitedata='mos.ru',
lang='ru'
},
['biryu']={
url='https://stroi.mos.ru/news/na-biriulievskoi-linii-mietro-poiavitsia-shiest-stantsii-khusnullin',
title='На Бирюлевской линии метро появится шесть станций – Хуснуллин',
accessdate='2018-07-05',
sitedata='stroi.mos.ru',
lang='ru'
},
['zamk']={
url='https://www.molnet.ru/mos/ru/important/o_497727',
title='Большая кольцевая линия будет достроена к 2022 году',
publisher='www.molnet.ru',
accessdate='2018-03-06',
lang='ru'
},
['mosplan']={
title='От идеи к реализации: история больших и малых колец метро / Новости города / Сайт Москвы',
url='https://www.mos.ru/news/item/36989073/',
date='2018-02-26',
accessdate='2018-03-06',
sitedata='mos.ru',
lang='ru'
},
['zamk2']={
title='Большая кольцевая линия московского метро замкнется в 2022 году',
url='http://mosday.ru/news/item.php?1362808',
accessdate='2018-03-06',
sitedata='mosday.ru',
lang='ru'
},
['zamk3']={
title='Каховская ветка станет частью Большой кольцевой линии метро / Новости города / Сайт Москвы',
url='https://www.mos.ru/news/item/38231073/?onsite_from=main_page',
date='2018-03-27',
accessdate='2018-03-29',
sitedata='mos.ru',
lang='ru'
},
['zakr']={
url='http://www.the-village.ru/village/city/transport/177287-metro',
title='Каховскую линию метро планируют закрыть на полгода — The Village',
lang='ru'
},
['nezakr']={
url='https://stroi.mos.ru/news/kakhovskuiu-vietku-mietro-budut-riekonstruirovat-po-nocham-dlia-vkliuchieniia-v-bol-shoie-kol-tso-khusnullin',
title='Каховскую ветку метро включат в Большое кольцо — Хуснуллин',
sitedata='stroi.mos.ru',
lang='ru'
},
['dve']={
url='https://stroi.mos.ru/uploads/cache/gallery_media_full/gallery_media/0001/77/1e5e98e7049424f2dc4a16d076d571af2540e89a.jpeg',
title='Схема развития метрополитена в Москве (июнь 2018)',
sitedata='stroi.mos.ru',
lang='ru'
},
}
local sites = {
['mos.ru']={
author='Правительство Москвы',
website='[[mos.ru]]',
publisher='Официальный сайт Мэра Москвы'
},
['stroi.mos.ru']={
author='Правительство Москвы',
website='stroi.[[mos.ru]]',
publisher='Комплекс градостроительной политики и строительства города Москвы'
},
['mosday.ru']={
author='(mosday.ru)',
website='mosday.ru',
publisher='(mosday.ru)'
},
}
function p.year(frame)
return getdata(frame,false,false)
end
function p.date(frame)
return getdata(frame,true,false)
end
function p.citeyear(frame)
return getdata(frame,false,true)
end
function p.citedate(frame)
return getdata(frame,true,true)
end
function getdata(frame,fulldate,withref)
local subj=frame.args[1]
local case=frame.args[2]
local o=stations[subj]
if o==nil then
o=spans[subj]
elseif o.year==nil or o.year=='' then
o=spans[o.span]
end
local s=onedate(frame,fulldate,withref,case,o.year,o.date_when,o.date_what,o.date,o.source,o.source2)
if o.year_alt then
if case=='В' then
case_alt='в'
else
case_alt=case
end
if (o.year_alt==o.year and not fulldate) or (o.year_alt==o.year and o.date_alt==o.date and fulldate) then
if withref then
s=s..frame:preprocess(addref(o.source_alt)..addref(o.source2_alt))
end
else
s=s..' (по другим источникам '..onedate(frame,fulldate,withref,case_alt,o.year_alt,o.date_when_alt,o.date_what_alt,o.date_alt,o.source_alt,o.source2_alt)..')'
end
end
return s
end
function onedate(frame,fulldate,withref,case,y,dn,dt,d,so,so2)
local s=y
if fulldate then
local date
if case=='В' or case=='в' then
if dn then
date=dn
else
date=d
end
else
if dt then
date=dt
else
date=d
end
end
if date~=nil and date~='' then
if case=='В' then
s=date..' '..s..' года'
else
s=mw.ustring.lower(date)..' '..s..' года'
end
else
if case=='В' then
s='В '..s..' году'
elseif case=='в' then
s='в '..s..' году'
else
s=s..' год'
end
end
end
if withref then
s=s..frame:preprocess(addref(so)..addref(so2))
end
return s
end
function addref(source)
if source==nil then
return ''
end
local oo=sources[source]
if oo==nil then
return ''
end
local t
if oo.sitedata then
local ooo=sites[oo.sitedata]
t=oneparam('author',ooo.author)
..oneparam('website',ooo.website)
..oneparam('publisher',ooo.publisher)
else
t=oneparam('author',oo.author)
..oneparam('website',oo.website)
..oneparam('publisher',oo.publisher)
end
return '<ref name="'..source..'">{{cite web'
..oneparam('url',oo.url)
..oneparam('title',oo.title)
..oneparam('date',oo.date)
..oneparam('accessdate',oo.accessdate)
..oneparam('lang',oo.lang)
..t..'}}</ref>'
end
function oneparam(name,value)
if value~=nil and value~='' then
return '|'..name..'='..value
else
return ''
end
end
return p
-- =p.date{args={'Нижняя Масловка','В'}}