Модуль:Пісочниця/Роман Рябенко/Пробний

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
{{i}} Документація модуля[створити]
-- Змінні та функції в цьому модулі названі описово повними словами з
-- використанням транслітерації й коментарями, щоб зробити модуль якомога 
-- доступнішим.

local funktsii = {} -- Кошик, до якого складаємо функції, щоб дати їх у кінці.

-- Зараз цей модуль містить лише одну функцію.

-- Ця функція відтворює шаблон «Публікація».
function funktsii.publikatsiia(parametry_vyklyku_modulia)
	-- Шаблон, який викликає модуль за допомогою #invoke використоувати в статті
	-- не зручно. Тому в тексті статті використовують інший шаблон, який і
	-- містить параметри-відомості для посилання. Тож ми спершу отримуємо
	-- параметри цього «батьківського» шаблону, щоб з ними працювати далі.
	local parametry_vyklyku_shablonu = parametry_vyklyku_modulia:getParent()
    local parametry = parametry_vyklyku_shablonu.args
    
	-- Тип публікації.
	local typ_publikatsii = parametry[1] -- Перший параметр.
	
	-- Частина посилання, яка відповідає області бібліографічного опису 
	-- «1. Область заголовка та відомостей про відповідальність».
	local prizvyshche_avtora = parametry["автор"]
	local initsialy_avtora = parametry["автор ім'я"]
	local stattia_pro_avtora_u_Vikipedii = parametry["автор вікіпедія"]
	local prizvyshche_ta_initsialy_avtora = -- Чомусь курсивом.
		"''[[" .. stattia_pro_avtora_u_Vikipedii .. "|" .. prizvyshche_avtora ..
		", " .. initsialy_avtora .. "]]''"
	local samostiinyi_zaholovok_chastyny_publikatsii = " " .. parametry["частина"]
	local spivavtory_chastyny_publikatsii = " " .. parametry["частина співавтори"]
	local oblast_1_zaholovok_i_vidpovidalnist = prizvyshche_ta_initsialy_avtora .. 
		samostiinyi_zaholovok_chastyny_publikatsii .. " : [арх. 1 травня 2020] : Фундаментальное описание : [авт. версия] [Текст] : [рос.] = Hip Joint : Fundamental Description : 1900 : [пер. з англ.] : стихи / " .. spivavtory_chastyny_publikatsii .. " ; пер. с англ. Дж. Смита"

	-- Частина посилання, яка відповідає області бібліографічного опису 
	-- «2. Область видання».
	local oblast_2_vydannia = " // Щас спою! : [арх. 1 травня 2020] : [редакт. версия] [Текст] : [рос.] = Let’s rock! : 1901 : [пер. з англ.] : сб. : в 4 т. / Ф. Ф. Фёдоров ; ред. Х. Х. Харитонов. — 5-е изд"
	
	-- Частина посилання, яка відповідає області бібліографічного опису 
	-- «3. Специфічна область матеріалу або типу ресурсу».
	local oblast_3_spetsvidomosti = ". — " .. parametry["спецвідомості"]
	
	-- Частина посилання, яка відповідає області бібліографічного опису 
	-- «4. Область публікації, виробництва, поширення тощо».
	local pershe_mistse_vydannia = ". — " .. parametry["місце"]
	local nazva_pershoho_vydavnytstva = " : " .. parametry["видавництво"]
	local nastupne_mistse_vydannia = " ; " .. parametry["місце2"]
	local nazva_nastupnoho_vydavnytstva = " : " .. parametry["видавництво2"]
	local rik_vydannia = ", " .. parametry["рік"] .. "."
	local oblast_4_publikatsiia = 
		pershe_mistse_vydannia .. 
		nazva_pershoho_vydavnytstva .. 
		nastupne_mistse_vydannia .. 
		nazva_nastupnoho_vydavnytstva .. 
		rik_vydannia
	
	-- Частина посилання, яка відповідає області бібліографічного опису 
	-- «5. Область фізичного опису».
	local oblast_5_fizychnyi_opys = " — Т. 1 : Общий обзор, вып. 2 : Исторические предпосылки, кн. 3 : Статистические сведения, № 4 : Итоги, гл. 5 : Дополнительная інформация / сост. Ю. Ю. Юрьев (1 января). — С. 123 (2 паг. : Цифры і факты). — 1000, [1] с., [25] арк. портр. — Ствп. 456 (3 паг. : Итоги і перспективы). — 2000 ствп. : цв. ил., факс. + 2 CD : гологр. наклейки."
	
	-- Частина посилання, яка відповідає області бібліографічного опису 
	-- «6. Область серії та багаточастинного монографічного ресурсу».
	local oblast_6_seriia = " — (Врачи за мир : в 4 т. / ред. Я. Я. Яковлев. Сер. 1. Реаниматология, ISSN 1234-5678 ; 2013, № 1, т. 2, вип. 3, кн. 4, сб. 5)."
	
	-- Частина посилання, яка відповідає області бібліографічного опису 
	-- «7. Область примітки».
	local oblast_7_prymitky = " — По материалам международной конф. — Зм.: Запев ; Распев ; Припев ; Кода. — 10 000 екз."
	
	-- Частина посилання, яка відповідає області бібліографічного опису 
	-- «8. Область ідентифікатора ресурсу та умов доступності»
	-- Ця частина посилання може містити наступні ідентифікатори.
	local LBC, UDC, ISBN, ISBN_tomu, ISSN, arXiv, Bibcode, DOI, JSTOR, LCCN, OCLC, PubMed, Zbl
	-- Якщо задано відповідні параметри — формулюємо, що додати до цієї частини 
	-- посилання, а якщо не задано потрібного параметру — нічого не додаємо.
	if parametry["ббк"] then
		LBC = " — ББК " .. parametry["ббк"] .. "."
	else
		LBC = ""
	end
	if parametry["удк"] then
		UDC = " — УДК " .. parametry["удк"] .. "."
	else
		UDC = ""
	end
	if parametry["isbn"] then
		ISBN = " — ISBN " .. parametry["isbn"] .. "."
	else
		ISBN = ""
	end
	if parametry["isbn том"] then
		if parametry["том"] then
			ISBN_tomu = " — ISBN " .. parametry["isbn том"] .. " (т. " .. parametry["том"] .. ")."
		else -- Якщо том не вказано, припускаємо, що перший.
			ISBN_tomu = " — ISBN " .. parametry["isbn том"] .. " (т. " .. "т. 1)."
		end
	else
		ISBN_tomu = ""
	end
	if parametry["issn"] then
		ISSN = " — ISSN " .. parametry["issn"] .. "."
	else
		ISSN = ""
	end
	if parametry["arxiv"] then
		arXiv = " — arXiv:" .. parametry["arxiv"] .. "."
	else
		arXiv = ""
	end
	if parametry["bibcode"] then
		Bibcode = " — Bibcode: " .. parametry["bibcode"] .. "."
	else
		Bibcode = ""
	end
	if parametry["doi"] then
		DOI = " — DOI:" .. parametry["doi"] .. "."
	else
		DOI = ""
	end
	if parametry["jstor"] then
		JSTOR = " — JSTOR " .. parametry["jstor"] .. "."
	else
		JSTOR = ""
	end
	if parametry["lccn"] then
		LCCN = " — LCCN " .. parametry["lccn"] .. "-."
	else
		LCCN = ""
	end
	if parametry["oclc"] then
		OCLC = " — OCLC " .. parametry["oclc"] .. "."
	else
		OCLC = ""
	end
	if parametry["pmid"] then
		PubMed = " — [https://www.ncbi.nlm.nih.gov/pubmed/" .. parametry["pmid"] .. " PubMed]."
	else
		PubMed = ""
	end
	if parametry["zbl"] then
		Zbl = " — Zbl " .. parametry["zbl"] .. "."
	else
		Zbl = ""
	end
	-- Формулюємо текст цієї частини посилання.
	local oblast_8_identyfikator = LBC .. UDC .. ISBN .. ISBN_tomu .. ISSN .. arXiv .. 
		Bibcode .. DOI .. JSTOR .. LCCN .. OCLC .. PubMed .. Zbl
	
	-- Частина посилання, яка відповідає примітці про рецензію чи реферат, яка 
	-- за ISBD мала би бути в одній із областей бібліографічного опису, але за 
	-- ДСТУ 7.1:2006 — у кінці.
	local prymitka_pro_retsenziiu_abo_referat -- Наступне дає примітку.
	-- Якщо вказано лише для рецензії, але не реферату.
	if parametry["о"] and parametry["рецензія"] and not parametry["реферат"] then
		-- Шаблон припускає лише три типи рецензованої публікації.
		local typy_retsenzovanyh_publikatsii = {
			["книга"] = "Рец. на кн.: ",
			["стаття"] = "Рец. на ст.: ",
			["opus"] = "Rev. op.: "
		}
		-- Складаємо примітку.
		prymitka_pro_retsenziiu_abo_referat = " — " .. 
			-- Вибираємо варіант формулювання за типом публікації.
			typy_retsenzovanyh_publikatsii[parametry["рецензія"]] ..
			parametry["о"]
	-- Або якщо вказано лише для реферату, але не рецензії.
	elseif parametry["о"] and parametry["реферат"] and not parametry["рецензія"] then
		-- Шаблон припускає лише три типи реферованої публікації.
		local typy_referovanyh_publikatsii = {
			["книга"] = "Реф. кн.: ",
			["стаття"] = "Реф. ст.: ",
			["opus"] = "Ref. op.: "
		}
		-- Складаємо примітку.
		prymitka_pro_retsenziiu_abo_referat = " — " .. 
			-- Вибираємо варіант формулювання за типом публікації.
			typy_referovanyh_publikatsii[parametry["реферат"]] ..
			parametry["о"]
	-- Якщо ні реферат, ні рецензію не зазначено, чи помилково зазначено й те 
	-- й інше, то нічого до посилання на джерело не додаємо.
	else
		prymitka_pro_retsenziiu_abo_referat = ""
	end

	-- Посилання на джерело складається з частин, які описані вище.
	local posylannia_na_dzherelo = 
		oblast_1_zaholovok_i_vidpovidalnist .. 
		oblast_2_vydannia .. 
		oblast_3_spetsvidomosti .. 
		oblast_4_publikatsiia .. 
		oblast_5_fizychnyi_opys .. 
		oblast_6_seriia .. 
		oblast_7_prymitky .. 
		oblast_8_identyfikator .. 
		prymitka_pro_retsenziiu_abo_referat
	
	return  posylannia_na_dzherelo -- Функція дає посилання на джерело.
end -- Кінець функції «publikatsiia».

return funktsii -- Даємо функції, якщо викликано модуль, а не функцію з нього.