Модуль:Песочница/Vcohen/Прогноз ММ

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Документация

Модуль для вставки в статью предполагаемых дат открытия станций метро Москвы со ссылками на источники. Модуль содержит следующие функции:

  • 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|Шелепиха}}

2018[2][3]

{{#invoke:Песочница/Vcohen/Прогноз ММ|citedate|Шелепиха}}

26 февраля 2018 года[2][3]

{{#invoke:Песочница/Vcohen/Прогноз ММ|year|NE}}

2021—2022

{{#invoke:Песочница/Vcohen/Прогноз ММ|date|NE}}

2021—2022 год

{{#invoke:Песочница/Vcohen/Прогноз ММ|citeyear|NE}}

2021—2022[4][5]

{{#invoke:Песочница/Vcohen/Прогноз ММ|citedate|NE}}

2021—2022 год[4][5]

Примечания к примерам[править код]

  1. 1 2 3 4 5 6 Правительство Москвы. Большая кольцевая линия. stroi.mos.ru. Комплекс градостроительной политики и строительства города Москвы. Дата обращения: 30 ноября 2017.
  2. 1 2 Правительство Москвы. От идеи к реализации: история больших и малых колец метро / Новости города / Сайт Москвы. mos.ru. Официальный сайт Мэра Москвы (26 февраля 2018). Дата обращения: 6 марта 2018.
  3. 1 2 Правительство Москвы. № 813-ПП Об утверждении проекта планировки участка линейного объекта метрополитена проектируемой линии Третий пересадочный контур от проектируемой станции «Деловой центр» до проектируемой станции «Нижняя Масловка». mos.ru. Официальный сайт Мэра Москвы (25 декабря 2012). Дата обращения: 10 февраля 2018.
  4. 1 2 Правительство Москвы. Северо-восточный участок Большого кольца метро «поедет» в 2021 году – Хуснуллин. stroi.mos.ru. Комплекс градостроительной политики и строительства города Москвы. Дата обращения: 5 июля 2018.
  5. 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={'Нижняя Масловка','В'}}