Hopp til innhold

Modul:Sandkasse/jeblad/Modul:External links/conf

Fra Wikipedia, den frie encyklopedi
Sideversjon per 9. jul. 2016 kl. 16:54 av Jeblad (diskusjon | bidrag) (Jeblad flyttet siden Modul:Sandkasse/jeblad/Modul:Official links/conf til Modul:Sandkasse/jeblad/Modul:External links/conf uten å etterlate en omdirigering)
(diff) ← Eldre sideversjon | Nåværende sideversjon (diff) | Nyere sideversjon → (diff)
Moduldokumentasjon


local languageWeights = {}
languageWeights['en'] = {
	['Q9043'] = 100,	-- norsk
	['Q25167'] = 110,	-- bokmål (målform av norsk)
	['Q25164'] = 90,	-- nynorsk (målform av norsk)
	['Q9035'] = 80,	-- dansk (nærstående språk)
	['Q9027']= 80,	-- svensk (nærstående språk)
	['Q1860'] = 70,	-- engelsk (vanlig å kunne dette språket)
	['Q7979'] = 70,	-- britisk-engelsk (variant av engelsk)
	['Q7976'] = 70,	-- amerikansk-engelsk (variant av engelsk)
						-- flere varianter av engelsk...
	['Q188'] = 60,	-- tysk (vanlig å kunne dette språket)
	['Q150'] = 50,	-- fransk (vanlig å kunne dette språket)	
	['Q33947'] = 40,	-- nordsamisk (offisielt språk i norge)
	['Q13293'] = 40,	-- sørsamisk (offisielt språk i norge)
	['Q56322'] = 40,	-- lulesamisk (offisielt språk i norge)
	['Q165795'] = 30,	-- kvensk (offisielt språk i norge)
	['Q36641'] = 20,	-- romani (offisielt språk i norge)
	['Q13201'] = 30,	-- romanes (offisielt språk i norge)
}

-- set up some aliases
languageWeights['nb'] = languageWeights['en']
languageWeights['nn'] = languageWeights['en']

local fragmentWeights = {}
fragmentWeights['en'] = {
	['com'] = 20,
	['net'] = 20,
	['org'] = 20,
	['no'] = 30,
	['sv'] = 20,
	['dk'] = 20,
	['en'] = 20,
	['de'] = 10,
	['nl'] = 10,
}
fragmentWeights['nb'] = fragmentWeights['en']
fragmentWeights['nn'] = fragmentWeights['en']

--the following will be removed
local prioritize = {}
prioritize['en'] = {
	['Q9043'] = true,	-- norsk
	['Q25167'] = true,	-- bokmål (målform av norsk)
	['Q25164'] = true,	-- nynorsk (målform av norsk)
	['Q9035'] = true,	-- dansk (nærstående språk)
	['Q9027']= true,	-- svensk (nærstående språk)
	['Q1860'] = true,	-- engelsk (vanlig å kunne dette språket)
	['Q7979'] = true,	-- britisk-engelsk (variant av engelsk)
	['Q7976'] = true,	-- amerikansk-engelsk (variant av engelsk)
						-- flere varianter av engelsk...
	['Q188'] = true,	-- tysk (vanlig å kunne dette språket)
	['Q150'] = true,	-- fransk (vanlig å kunne dette språket)	
	['Q33947'] = true,	-- nordsamisk (offisielt språk i norge)
	['Q13293'] = true,	-- sørsamisk (offisielt språk i norge)
	['Q56322'] = true,	-- lulesamisk (offisielt språk i norge)
	['Q165795'] = true,	-- kvensk (offisielt språk i norge)
	['Q36641'] = true,	-- romani (offisielt språk i norge)
	['Q13201'] = true,	-- romanes (offisielt språk i norge)
}
prioritize['nb'] = prioritize['en']
prioritize['nn'] = prioritize['en']

local domain = {}
domain['en'] = {
	['com'] = '"com-domain"',
	['net'] = '"net-domain"',
	['org'] = '"org-domain"',
	['no'] = '"Norwegian domain"',
	['sv'] = '"Swedish domain"',
	['dk'] = '"Danish domain"',
	['de'] = '"German domain"',
	['nl'] = '"Dutch domain"',
}
domain['no'] = {
	['com'] = '«com-domene»',
	['net'] = '«net-domene»',
	['org'] = '«org-domene»',
	['no'] = '«norsk domene»',
	['sv'] = '«svensk domene»',
	['dk'] = '«dansk domene»',
	['de'] = '«tysk domene»',
	['nl'] = '«nederlandsk domene»',
}
domain['nb'] = domain['no']
domain['nn'] = domain['no']

local p = {}

p.languageWeight = function (self, code)
	local weight = 0
	if self.languageWeights[code] then
		weight = weight + self.languageWeights[code]
	end
	return weight
end
	
p.fragmentWeight = function (self, url)
	local maxWeight = 0
	for v in url:gfind("%a+") do
	--for _,v in url:gsub('%a') do
		if self.fragmentWeights[v] and self.fragmentWeights[v] > maxWeight then
			maxWeight = self.fragmentWeights[v]
		end
	end
	return maxWeight
end

p.priority = function (self, code)
	return self.prioritize[code]
end

p.guess = function (self, uri)
	-- this is for country codes
	local _,_,code = uri:match('//([-%w]+)%.([-%w]+)%.(%w+)')
	if code and self.domain[code] then
		return self.domain[code]
	end
	local _,code = uri:match('//([-%w]+)%.(%w+)')
	if code and self.domain[code] then
		return self.domain[code]
	end
	return uri
end

---
-- metatable for the export
local mt = {}

---
-- adjust the installation of the module
mt.__call = function (self, lang)
	self.prioritize = prioritize[lang]
	self.domain = domain[lang]
	self.languageWeights = languageWeights[lang]
	self.fragmentWeights = fragmentWeights[lang]
	return self
end

-- install the metatable
setmetatable(p, mt)

return p