Modul:Lang

QIRIMTATAR VİKİPEDİYASINIÑ MALÜMATI

Bu, sayı formatı ve satırdaki birinci sayı şablonlarında qullanılğan kod. O, 123 456,78 formatını qullanıp sayılar oquy ve köstere.

Misaller[kodunı deñiştir]

Sayı kösterüv[kodunı deñiştir]

  • {{#invoke:Lang|formatNum|123456789,12}} (ya da {{sayı formatı|123456789,12}}) => 123 456 789,12
  • {{#invoke:Lang|formatNum|123456789,12|R}} (ya da {{sayı formatı|123456789,12|R}}) => 123456789.12

Sayı tapuv[kodunı deñiştir]

  • {{#invoke:Lang|extractNum|menim 3 dostum bar}} (ya da {{satırdaki birinci sayı|menim 3 dostum bar}}) => 3
  • {{#invoke:Lang|extractNum|Frenkistanda 66628000±500 kişi bar}} (ya da {{satırdaki birinci sayı|Frenkistanda 66628000±500 kişi bar}}) => 66628000

Lua kodunda:

local langModule = require('Module:Lang')
local numPeople = langModule._extractNum('Frenkistanda 66628000±500 kişi bar')

local p = {};

local MULTIPLIER_WORDS = {
	['biñ'] = 1e3,
	['mln'] = 1e6,
	['mlrd'] = 1e9,
};

function p.formatNum(frame)
	local anum = frame.args[1] or '';
	local outputType = frame.args[2] or '';
	local lang = mw.language.new('ru');
	
	local multiplier = 1
	if (outputType == 'R') then
		--biñ, mln, mlrd olumaq
		for word, value in pairs(MULTIPLIER_WORDS) do
		  number, realWord = anum:match("(.*)%s*(" .. word .. ")%.?")
		  if realWord == word then
		  	multiplier = multiplier * value
		  	anum = number
		  end
		end
	end

	-- boşluqlar yoq etmek:
	local preprocessedNumber = anum:gsub("%s", "")
	local preprocessedNumber = preprocessedNumber:gsub(" ", "")
	local preprocessedNumber = preprocessedNumber:gsub(" ", "")
	
	local num = lang:parseFormattedNumber(preprocessedNumber);
	if num ~= nil then
		if outputType == 'R' then
			return num * multiplier
		else
			return lang:formatNum(num);
		end
	else
		return anum;
	end
end

function p._extractNum(s)
	local num = s:match("(%d+([,.]%d+))")
	if num == nil then
		num = s:match("%d+")
	end
	return num
end

function p.extractNum(frame)
	local anum = frame.args[1] or '';
	local num = p._extractNum(anum)
	return num
end



return p