Modul:String2: Forskjell mellom sideversjoner

Fra Wikisida.no
Hopp til navigering Hopp til søk
(testing a titlecase function, ... not sure if this is tractable given number of articles, prepositions, etc which are always lower, but starting with a shortened list for testing)
(testing)
Linje 22: Linje 22:
['and'] = 1, ['but'] = 1, ['or'] = 1, ['for'] = 1,
['and'] = 1, ['but'] = 1, ['or'] = 1, ['for'] = 1,
['nor'] = 1, ['on'] = 1, ['at'] = 1, ['to'] = 1,
['nor'] = 1, ['on'] = 1, ['at'] = 1, ['to'] = 1,
['from'] = 1, ['by'] = 1 }
['from'] = 1, ['by'] = 1, ['my'] = 1 }
local res = ''
local res = ''
local s = mw.text.trim( frame.args[1] or "" )
local s = mw.text.trim( frame.args[1] or "" )
Linje 29: Linje 29:
s = string.lower( s )
s = string.lower( s )
if( i > 1 ) then
if( i > 1 ) then
if( alwayslower[s] ~= nil ) then
if( alwayslower[s] == 1 ) then
else
s = mw.getContentLanguage():ucfirst(s)
s = mw.getContentLanguage():ucfirst(s)
end
end

Sideversjonen fra 8. apr. 2016 kl. 19:15

Dokumentasjon for denne modulen kan opprettes på Modul:String2/dok

local p = {}

p.upper = function( frame )
	local s = mw.text.trim( frame.args[1] or "" )
	return string.upper( s )
end

p.lower = function( frame )
	local s = mw.text.trim( frame.args[1] or "" )
	return string.lower( s )
end

p.sentence = function (frame )
	local s =  mw.text.trim( frame.args[1] or "" )
	local strFirst = string.sub( s, 1, 1 )
	local strRest = string.sub( s, 2 )
	return string.upper( strFirst ) .. string.lower( strRest )
end

p.title = function (frame )
	local alwayslower = {['a'] = 1, ['an'] = 1, ['the'] = 1, 
		['and'] = 1, ['but'] = 1, ['or'] = 1, ['for'] = 1,
		['nor'] = 1, ['on'] = 1, ['at'] = 1, ['to'] = 1,
		['from'] = 1, ['by'] = 1, ['my'] = 1 }
	local res = ''
	local s =  mw.text.trim( frame.args[1] or "" )
	local words = mw.text.split( s, " ")
	for i, s in ipairs(words) do
		s = string.lower( s )
		if( i > 1 ) then
			if( alwayslower[s] == 1 ) then
			else
				s = mw.getContentLanguage():ucfirst(s)
			end
		else
			s = mw.getContentLanguage():ucfirst(s)
		end
		words[i] = s
	end
	return table.concat(words, " ")
end

return p