Модуль:improve

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

Модуль реализован для использования в шаблоне {{improve}}.

-- Модуль:improve v0.5
-- 2017-07-24

local export = {}

local u = require("Module:utils")

local d = {}
-- TODO: морфо/добавить → "Добавить шаблон {{морфо}} ...", морфо/заполнить → "Заполнить шаблон {{морфо}}"
d['морфология?'] = {
	desc = 'Добавить секцию «[[Викисловарь:Правила оформления статей#Оформление морфологических и синтаксических свойств|Морфологические и синтаксические свойства]]»',
	category = 'Нужны сведения о морфологии'
}
d['морфология/пусто'] = {
	desc = 'Добавить сведения о [[Викисловарь:Правила оформления статей#Оформление морфологических и синтаксических свойств|морфологии]] в «Морфологические и синтаксические свойства»',
	category = 'Нужны сведения о морфологии'
}
d['морфология/шаблон'] = {
	desc = '[[Викисловарь:Правила оформления статей#Оформление морфологических и синтаксических свойств|Использовать]] соответствующий [[:Категория:Шаблоны словоизменений|шаблон словоизменения]] в «Морфологические и синтаксические свойства»',
	category = 'Нужны сведения о морфологии'
}
d['морфология/язык'] = {
	desc = 'Использовать более подходящий [[:Категория:Шаблоны словоизменений|шаблон словоизменения]] (соответствующего языка)',
	category = 'Нужны сведения о морфологии'
}
d['морфология/род'] = {
	desc = 'Добавить сведения о роде и одушевлённости в «Морфологические и синтаксические свойства»',
	category = 'Нужны сведения о морфологии'
}
d['морфология/парадигма'] = {
	desc = 'Уточнить парадигму словоизменения, используя более конкретный [[:Категория:Шаблоны словоизменений|шаблон словоизменения]]',
	category = 'Нужны сведения о морфологии'
}
d['морфо'] = {
	desc = 'Добавить описание [[Викисловарь:Правила оформления статей#Морфемный состав|морфемного состава]] с помощью {{tpl|морфо}}',
	category = 'Нужны сведения о морфологии'
}
d['произношение?'] = {
	desc = 'Добавить секцию «[[Викисловарь:Правила оформления статей#Оформление фонетических свойств|Произношение]]»',
	category = 'Нужно произношение'
}
d['транскрипция'] = {
	desc = 'Добавить [[Викисловарь:Правила оформления статей#Оформление фонетических свойств|транскрипцию]] в секцию «Произношение» с помощью {{tpl|transcription}}',
	category = 'Нужно произношение'
}
d['транскрипция/мн'] = {
	desc = 'Добавить [[Викисловарь:Правила оформления статей#Оформление фонетических свойств|транскрипцию]] в секцию «Произношение» с помощью {{tpl|transcriptions}}',
	category = 'Нужно произношение'
}
d['произношение'] = d['транскрипция']
d['произношения'] = d['транскрипция/мн']
d['значение?'] = {
	desc = 'Добавить секцию «[[Викисловарь:Правила оформления статей#Оформление толкований|Значение]]» внутри «Семантические свойства»',
	category = 'Нужны сведения о семантике'
}
d['значение#'] = {
	desc = 'Добавить перед каждым [[Викисловарь:Правила оформления статей#Оформление толкований|значением]] в начале строки символ "<code>#</code>"',
	category = 'Нужны сведения о семантике'
}
d['значение'] = {
	desc = "'''Добавить [[Викисловарь:Правила оформления статей#Статьи об иностранных словах|значение-перевод]] в секцию «Семантические свойства»'''",
	categories = {'Нужны сведения о семантике', 'Статьи-болванки'}
}
d['пример'] = {
	desc = 'Добавить [[Викисловарь:Правила оформления статей#Примеры словоупотребления|пример словоупотребления]] для значения с помощью {{tpl|пример}}',
	category = 'Нужны сведения о семантике'
}
d['примеры'] = {
	desc = 'Добавить [[Викисловарь:Правила оформления статей#Примеры словоупотребления|примеры словоупотребления]] для всех значений с помощью {{tpl|пример}}',
	category = 'Нужны сведения о семантике'
}
d['семантика?'] = {
	desc = 'Добавить необходимые разделы в «Семантические свойства» (Синонимы, Антонимы, Гиперонимы, Гипонимы)',
	category = 'Нужны сведения о семантике'
}
d['синонимы'] = {
	desc = 'Добавить [[Викисловарь:Правила оформления статей#Оформление семантических отношений|синонимы]] в секцию «Семантические свойства»',
	category = 'Нужны сведения о семантике'
}
d['гиперонимы'] = {
	desc = 'Добавить [[Викисловарь:Правила оформления статей#Оформление семантических отношений|гиперонимы]] в секцию «Семантические свойства»',
	categories = {'Нужны сведения о семантике', 'Нужно указать гиперонимы'}
}
d['семантика'] = {
	desc = 'Добавить все семантические связи (отсутствие можно указать прочерком, а неизвестность — символом вопроса)',
	category = 'Нужны сведения о семантике'
}
d['этимология?'] = {
	desc = 'Добавить секцию «[[Викисловарь:Правила оформления статей#Этимология|Этимология]]»',
	category = 'Нужна этимология'
}
d['этимология'] = {
	desc = 'Добавить сведения об [[Викисловарь:Правила оформления статей#Этимология|этимологии]] в секцию «Этимология»',
	category = 'Нужна этимология'
}
d['перевод?'] = {
	desc = 'Добавить секцию «[[Викисловарь:Правила оформления статей#Перевод|Перевод]]»',
	category = 'Нужен перевод'
}
d['перевод'] = {
	desc = 'Добавить хотя бы один [[Викисловарь:Правила оформления статей#Перевод|перевод]] в секцию «Перевод»',
	category = 'Нужен перевод'
}
d['переводы'] = {
	desc = 'Добавить хотя бы один [[Викисловарь:Правила оформления статей#Перевод|перевод]] для каждого значения в секцию «Перевод»',
	category = 'Нужен перевод'
}

local override = {}
override['ru'] = {}
override['ru']['морфо'] = {
	desc = 'Добавить описание [[Викисловарь:Правила оформления статей#Морфемный состав|морфемного состава]] с помощью {{tpl|морфо-ru}}',
	category = 'Нужны сведения о морфологии'
}
override['ru']['транскрипция'] = {
	desc = 'Добавить [[Викисловарь:Правила оформления статей#Оформление фонетических свойств|транскрипцию]] в секцию «Произношение» с помощью {{tpl|transcription-ru}}',
	category = 'Нужно произношение'
}
override['ru']['транскрипция/мн'] = {
	desc = 'Добавить [[Викисловарь:Правила оформления статей#Оформление фонетических свойств|транскрипцию]] в секцию «Произношение» с помощью {{tpl|transcriptions-ru}}',
	category = 'Нужно произношение'
}
override['ru']['произношение'] = override['ru']['транскрипция']
override['ru']['произношения'] = override['ru']['транскрипция/мн']
override['ru']['значение'] = {
	desc = "'''Добавить [[Викисловарь:Правила оформления статей#Оформление толкований|значение]] в секцию «Семантические свойства»'''",
	categories = {'Нужны сведения о семантике', 'Статьи-болванки'}
}

function export.details(frame)
	local args = u.clone(frame:getParent().args)
	count_args = 0
	for key, value in pairs(args) do
		if type(key) == 'number' and value ~= '??' then
			count_args = count_args + 1
		end
	end
	lang = mw.text.trim(args[1])
	text = '{{in article|[[Категория:Статьи, нуждающиеся в доработке/' .. lang .. '|{{PAGENAME}}]]}}'
	if count_args < 2 then
		return text
	end
	for i = 2, count_args do
		key = mw.text.trim(args[i])
		if d[key] or override[lang] and override[lang][key] then
			data = d[key]
			if override[lang] and override[lang][key] then
				data = override[lang][key]
			end
			categories = {}
			if data['category'] then
				categories = {data['category']}
			elseif data['categories'] then
				categories = data['categories']
			end
			text = text .. '\n* '
			for i, category in pairs(categories) do
				if category == 'Нужен перевод' then
					-- Суффикс языка не нужен для переводов, т.к. переводы бывают только у русских слов
					text = text .. '{{in article|[[Категория:' .. category .. ']]}}'
				else
					text = text .. '{{in article|[[Категория:' .. category .. '/' .. lang .. ']]}}'
				end
			end
			text = text .. data['desc']
		elseif key ~= '' and key ~= '??' then
			text = text .. '\n* ' .. key .. " ''(неизвестный параметр шаблона)''"
		end
	end
	text = text .. '<br/>'
	return frame:preprocess(text)
end
 
return export