Permanently protected module
From Wikipedia, the free encyclopedia


local p = {}

local words = {"thousand", "million", "billion", "trillion"} -- We don't need to go higher than this, no-one knows what an octillion is.



-- For use by other scripts. Takes arguments:

-- - 1: string or number, value to convert

-- - forcenum: string for Template:Yesno, forces a result in digits for all n ≥ 10.

-- - formating options for spellnum: zero, adj, ord, us

function p.spellnum(args)

	local frame = mw.getCurrentFrame()

	local numeral = tonumber(args1])

	

   local pass_zero = "zero"

    if args'zero' ~= nil and args'zero' ~= '' then

    	pass_zero = args'zero'

    end

    

	-- Always return numerals for negative numbers, non-integers, and if (forcenum and numeral >= 10).

	if numeral < 0 or

			math.fmod(numeral, 1) ~= 0 or

			(numeral >= 10 and frame:expandTemplate{ title = 'yesno', args = {args'forcenum']} } == 'yes') then

		return mw.language.getContentLanguage():formatNum(numeral)

	end



	-- Convert numeral to words

	local spelled = frame:expandTemplate{ title = 'spellnum', args = {

		numeral, zero = pass_zero, adj = args'adj'], ord = args'ord'], us = args'us']}}

	

	-- Return numerals if more than two words would be needed, else return words

	if mw.ustring.find(spelled,'%a+[ %-]%a+[ %-]%a+') then

		-- Handle numbers larger than one million

		if numeral >= 1000000 and numeral <= 1000000000000000 then

			local size = math.min(4, math.floor(math.log10(numeral) / 3))

			numeral = numeral / 1000^size

			return ({"%.1f ", "%d ", "%d "})[1 + math.floor(math.log10(numeral))]:format(numeral) .. wordssize

		end

		return mw.language.getContentLanguage():formatNum(numeral)

	else 

		return spelled

	end

end



function p.main(frame)

	return p.spellnum(frame.args)

end



return p
Permanently protected module
From Wikipedia, the free encyclopedia


local p = {}

local words = {"thousand", "million", "billion", "trillion"} -- We don't need to go higher than this, no-one knows what an octillion is.



-- For use by other scripts. Takes arguments:

-- - 1: string or number, value to convert

-- - forcenum: string for Template:Yesno, forces a result in digits for all n ≥ 10.

-- - formating options for spellnum: zero, adj, ord, us

function p.spellnum(args)

	local frame = mw.getCurrentFrame()

	local numeral = tonumber(args1])

	

   local pass_zero = "zero"

    if args'zero' ~= nil and args'zero' ~= '' then

    	pass_zero = args'zero'

    end

    

	-- Always return numerals for negative numbers, non-integers, and if (forcenum and numeral >= 10).

	if numeral < 0 or

			math.fmod(numeral, 1) ~= 0 or

			(numeral >= 10 and frame:expandTemplate{ title = 'yesno', args = {args'forcenum']} } == 'yes') then

		return mw.language.getContentLanguage():formatNum(numeral)

	end



	-- Convert numeral to words

	local spelled = frame:expandTemplate{ title = 'spellnum', args = {

		numeral, zero = pass_zero, adj = args'adj'], ord = args'ord'], us = args'us']}}

	

	-- Return numerals if more than two words would be needed, else return words

	if mw.ustring.find(spelled,'%a+[ %-]%a+[ %-]%a+') then

		-- Handle numbers larger than one million

		if numeral >= 1000000 and numeral <= 1000000000000000 then

			local size = math.min(4, math.floor(math.log10(numeral) / 3))

			numeral = numeral / 1000^size

			return ({"%.1f ", "%d ", "%d "})[1 + math.floor(math.log10(numeral))]:format(numeral) .. wordssize

		end

		return mw.language.getContentLanguage():formatNum(numeral)

	else 

		return spelled

	end

end



function p.main(frame)

	return p.spellnum(frame.args)

end



return p

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook