Module:Currency

De Semantic MediaWiki - Sandbox

Révision datée du 2 mai 2016 à 08:36 par Alex Mashin (discussion | contributions) (Page créée avec « -- Пересчёт валют, задание единиц измерения для валют: -- Numerals: local data = { -- Экспортируемые имена... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

La documentation pour ce module peut être créée à Module:Currency/doc

-- Пересчёт валют, задание единиц измерения для валют:

-- Numerals:
local data = {

	-- Экспортируемые имена функций:
	API = {'объявить', 'Объявить', 'declare', 'Declare'},

	-- Ошибки:
    noNumber    = "Передайте аргумент",

    -- Аргументы:
    argNumber = 1,           -- число
    
    -- Кратные:
	mils = {
		[1]				= {''},
		[1000]			= {'тыс', 'тыс.', 'тысяч', 'тысячи', 'тысяча'},
		[1000000]		= {'млн', 'млн.', 'миллионов', 'миллиона', 'миллион'},
		[1000000000]	= {'млрд', 'млрд.', 'миллиардов', 'миллиарда', 'миллиард'}
	},	-- 	mils = {...}

	prop = 'Относится к'
}	-- local data = {...}

local function formatNumeralError (message, ...)
    if select('#', ... ) > 0 then
        message = string.format(message, ...)
    end
    return "<span class=\"error\">" .. message .. "</span>"
end

--[[
НАЗНАЧЕНИЕ:  Эта функция объявляет валюту.
 
ПАРАМЕТРЫ:	names	-- массив символов и названий валюты,
			rate	-- курс валюты к рублю.

ВЫВОД:		нет.
 
ВОЗВРАТ:	0, сообщение об ошибке - Ошибка из-за неверного аргумента
            строка                 - Объявление единиц измерения для валюты
 
ПРИМЕЧАНИЕ:  Все проверки аргумента уже проведены.
--]]
local function implementCurrency (names, rate)
	local declarations = {}
	for ratio, numerals in pairs (data.mils) do
		local units = {}
		for _, numeral in ipairs (numerals) do
			for __, name in ipairs (names) do
				units [#units + 1] = numeral .. ' ' .. name
			end
		end
		declarations [#declarations + 1] =  '*** [[' .. data.prop .. '::' .. tostring (1 / rate / ratio) .. ' ' .. table.concat (units, ', ') .. '|' .. units [1] .. ']]'
	end
	return declarations
end		-- local function implementCurrency (names, rate)
 
-- Загрузка аргументов и вызов реализации:
local function declareCurrency (args)
	local ok
	local rate = 1
	local names = {}
    
	-- Загрузка и проверка аргументов:
	for _, arg in ipairs (args) do
		if tonumber (arg) ~= nil then
			-- Exchange rate:
			rate = tonumber (arg)
		else
			-- Currency symbol or name:
			names [#names + 1] = arg
		end
	end

	return table.concat (implementCurrency (names, rate), '\n')
	
end		-- local function declareCurrency (args)

-- Export function:
local m = {}

for _, alias in pairs (data.API) do
	m [alias] = function (frame)
		return declareCurrency (frame.args)
    end
end

return m
Les cookies nous aident à fournir nos services. En utilisant nos services, vous acceptez notre utilisation de cookies.