Minecraft Wiki
Advertisement

В этом модуле размещены все названия рисунков, которые можно нанести на флаги. Также доступна функция bannerName, которая на основе названия узора и его цвета строит грамматически верное название флага.

Зависимости[]

-- Список изображений на флагах и то, как грамотно их называть

local p = {}

-- Полный список узоров
p.patterns = {
	'нижне-правый крыж', 'нижне-левый крыж', 'верхне-правый крыж', 'верхне-левый крыж', 'основание', 'глава',
	'правосторонний столб', 'левосторонний столб', 'столб', 'пояс', 'перевязь', 'левосторонняя перевязь',
	'столбы', 'косой крест', 'крест', 'остриё', 'опрокинутое остриё', 'зубчатое основание', 'зубчатая глава',   
	'скошение слева', 'опрокинутое скошение слева', 'опрокинутое скошение', 'скошение', 'круг', 'ромб',
	'правая половина', 'верхняя половина', 'левая половина', 'нижняя половина',
	'кайма', 'зубчатая кайма', 'градиент кверху', 'градиент книзу', 'муровка',
	'цветок', 'крипер', 'череп', 'нечто', 'глобус', 'рыло'
}

-- Узоры, которым не нужны шаблоны
p.notemplate = {
	'нижне-правый крыж', 'нижне-левый крыж', 'верхне-правый крыж', 'верхне-левый крыж', 'основание', 'глава',
	'правосторонний столб', 'левосторонний столб', 'столб', 'пояс', 'перевязь', 'левосторонняя перевязь',
	'столбы', 'косой крест', 'крест', 'остриё', 'опрокинутое остриё', 'зубчатое основание', 'зубчатая глава',   
	'скошение слева', 'опрокинутое скошение слева', 'опрокинутое скошение', 'скошение', 'круг', 'ромб',
	'правая половина', 'верхняя половина', 'левая половина', 'нижняя половина',
	'кайма', 'зубчатая кайма', 'градиент кверху', 'градиент книзу', 'муровка',
}
-- Узоры, для которых шаблоны нужны
p.templated = { 'зубчатая кайма', 'муровка', 'цветок', 'крипер', 'череп', 'нечто', 'глобус', 'рыло' }

-- Зубчатая кайма и муровка находятся в обоих списках, так как в JE они наносятся без шаблонов, а в BE — с помощью шаблона.

-- Построение грамматически корректного названия флага с цветным узором
function p.bannerName(pattern, color)
	-- Все варианты склонений цветов
	local colors = mw.loadData([[Модуль:Склонение прилагательных]])
	
	-- Все варианты узоров
	local patterns = mw.loadData([[Модуль:Флаги/Узоры]])
	
	local with_pattern = assert(patterns[pattern][1], ("Неизвестный узор «%s»"):format(pattern)) -- ищем подходящее словосочетание
	local name = 'Флаг с ' .. with_pattern:format(assert(colors[color][patterns[pattern][2] ]['т'], "Неизвестный цвет: " .. color)) -- подстановка цвета
	local normalized = mw.ustring.gsub(name, '^Флаг с с([^аоуыеяёюие])', 'Флаг со с%1') -- нормализация предлога «с/со», т. е. меняем «с светло-синим» на «со светло-синим» и т. п.
	
	return normalized
end

return p
Advertisement