Modul:Sandlåda/Innocent bystander 3

Från Wikisource, det fria biblioteket.

Dokumentationen för denna modul kan skapas på Modul:Sandlåda/Innocent bystander 3/dok

p = {}
 
thiswiki = 'svwikisource'

--- För Wikisource-projekt som är inbäddade i Wikipedia. Ange WD-koden för projektet och sedan berörd namnrymd enl nedan
inbaddade = {
	['alswiki'] = 'Text:',
	['barwiki'] = 'Text:',
	['frrwiki'] = 'Text:',
	['pflwiki'] = 'Text:'
}

-- I nedanstående tabell anges vilket ord som kommer att stå in parantes efter namnet på språket
-- Om inget anges, kommer ingen parantes att skrivas ut
-- För SVENSKA titlar, så kommer länken att skrivas ut enligt nedan, annars enligt sidtiteln.
sarskiljning = {
	['Q20051496'] = 'Krook', -- Vårt land
	['Q20051503'] = 'Cajander',
	['Q20051511'] = '1857',
	['Q20051515'] = 'Kiljander',
	['Q20051517'] = 'Schröder',
	['Q15803312'] = 'Dostál-Lutinov', -- Korpen (Poe)
	['Q15803387'] = 'Vrchlický 1881',
	['Q15803402'] = 'Vrchlický 1890',
	['Q15803370'] = 'Šembera',
	['Q15803344'] = 'Mužík',
	['Q18674584'] = 'American Review, 1845',
	['Q18674585'] = 'The Raven and Other Poems', 
	['Q18674576'] = 'Mallarmé',
	['Q18674590'] = '1884',
	['Q18674587'] = '1859',
	['Q18674591'] = 'Ingram',
	['Q19089858'] = 'King James 1911', -- Bibeln
	['Q19076550'] = 'Douay–Rheims',
	['Q19076523'] = 'American Standard Version',
	['Q20155184'] = 'World English',
	['Q19076567'] = 'Wycliffe',
	['Q19076529'] = 'King James Authorized Version',
	['Q20155177'] = 'King James 1769',
	['Q19076535'] = 'Bishops',
	['Q19076555'] = 'Geneva',
	['Q19076542'] = 'Coverdale',
	['Q20150188'] = 'Wikisource',
	['Q20149922'] = 'Biblioþēce',
	['Q19076560'] = 'Tyndale',
	['Q20160290'] = 'William Carey',
	['Q20150112'] = 'Wikisource',
	['Q20155158'] = 'Vulgata Stuttgartensia',
	['Q20155131'] = 'Vulgata Clementinam',
	['Q19523670'] = 'Bezděkova',
	['Q19523683'] = 'Hejčl',
	['Q1786390']  = 'Kralicka',
	['Q20189555'] = 'St. Wenceslaus',
	['Q20201728'] = '1588',
	['Q20201776'] = '1620',
	['Q15646988'] = 'Karl XII:s bibel (1703)',
	['Q20204512'] = 'Luther 1545',
	['Q20204464'] = 'Luther 1530',
	['Q20036830'] = 'Luther 1522',
	['Q20278655'] = 'Rahlfs', 
	['Q29334']    = 'Septuaginta', 
	['Q20189645'] = 'original',                -- Marseljäsen 
	['Q20821056'] = 'Wujek (ed.1839-40)',
	['Q20821062'] = 'Wujek (ed.1923)',
	}
 
koder = {'ace', 'kbd', 'af', 'ak', 'als', 'am', 'ang', 'ab', 'ar', 'an', 'arc', 'roa-rup', 'frp', 'as', 'ast', 'gn', 'av', 'ay', 'az', 'bm', 'bn', 'bjn', 'zh-min-nan', 'nan', 'map-bms', 'ba', 'be', 'be-x-old', 'bh', 'bcl', 'bi', 'bg', 'bar', 'bo', 'bs', 'br', 'bxr', 'ca', 'cv', 'ceb', 'cs', 'ch', 'cbk-zam', 'ny', 'sn', 'tum', 'cho', 'co', 'cy', 'da', 'dk', 'pdc', 'de', 'dv', 'nv', 'dsb', 'dz', 'mh', 'et', 'el', 'eml', 'en', 'myv', 'es', 'eo', 'ext', 'eu', 'ee', 'fa', 'hif', 'fo', 'fr', 'fy', 'ff', 'fur', 'ga', 'gv', 'gag', 'gd', 'gl', 'gan', 'ki', 'glk', 'gu', 'got', 'hak', 'xal', 'ko', 'ha', 'haw', 'hy', 'hi', 'ho', 'hsb', 'hr', 'io', 'ig', 'ilo', 'bpy', 'id', 'ia', 'ie', 'iu', 'ik', 'os', 'xh', 'zu', 'is', 'it', 'he', 'jv', 'kl', 'kn', 'kr', 'pam', 'krc', 'ka', 'ks', 'csb', 'kk', 'kw', 'rw', 'rn', 'sw', 'kv', 'kg', 'ht', 'ku', 'kj', 'ky', 'mrj', 'lad', 'lbe', 'lo', 'ltg', 'la', 'lv', 'lb', 'lez', 'lt', 'lij', 'li', 'ln', 'jbo', 'lg', 'lmo', 'hu', 'mk', 'mg', 'ml', 'mt', 'mi', 'mr', 'xmf', 'arz', 'mzn', 'ms', 'min', 'cdo', 'mwl', 'mdf', 'mo', 'mn', 'mus', 'my', 'nah', 'na', 'fj', 'nl', 'nds-nl', 'cr', 'ne', 'new', 'ja', 'nap', 'ce', 'frr', 'pih', 'no', 'nb', 'nn', 'nrm', 'nov', 'ii', 'oc', 'mhr', 'or', 'om', 'ng', 'hz', 'uz', 'pa', 'pi', 'pfl', 'pag', 'pnb', 'pap', 'ps', 'koi', 'km', 'pcd', 'pms', 'tpi', 'nds', 'pl', 'pnt', 'pt', 'aa', 'kaa', 'crh', 'ty', 'ksh', 'ro', 'rmy', 'rm', 'qu', 'rue', 'ru', 'sah', 'se', 'sm', 'sa', 'sg', 'sc', 'sco', 'stq', 'st', 'nso', 'tn', 'sq', 'scn', 'si', 'simple', 'sd', 'ss', 'sk', 'sl', 'cu', 'szl', 'so', 'ckb', 'srn', 'sr', 'sh', 'su', 'fi', 'sv', 'tl', 'ta', 'kab', 'roa-tara', 'tt', 'te', 'tet', 'th', 'ti', 'tg', 'to', 'chr', 'chy', 've', 'tr', 'tk', 'tw', 'tyv', 'udm', 'bug', 'uk', 'ur', 'ug', 'za', 'vec', 'vep', 'vi', 'vo', 'fiu-vro', 'wa', 'zh-classical', 'vls', 'war', 'wo', 'wuu', 'ts', 'yi', 'yo', 'zh-yue', 'diq', 'zea', 'bat-smg', 'zh', 'zh-tw', 'zh-cn'}
 
varde = function(frame)
	local i = 1
	for j, k in pairs(koder) do
		if k ==  frame then
			return i
		end
		i = i + 1
	end
	return "Nej, inget den här gången"
end
 
sprakkad = {
	['zh_min_nan'] = 'zh-min-nan' 
	}
 
ner = function(s, top)
	local top_upplagor = top.claims["P747"]
	if not top_upplagor then 
		return s
	end
	for _, kusin in pairs(top_upplagor) do
		local qid2 = 'Q' .. kusin.mainsnak.datavalue.value['numeric-id']
		local botten = mw.wikibase.getEntity( qid2 )
		if botten.claims and botten.claims["P747"] then
			s = ner(s, botten)
		elseif botten.sitelinks ~= nil then
			local sitelinks = botten.sitelinks
			for _, sitelink in pairs(sitelinks) do
				local le = mw.ustring.len(sitelink.site)
				local sk = ''
				local tub = ''
				if sitelink.site ~= thiswiki and mw.ustring.len(sitelink.site) >= mw.ustring.len('svwikisource') then
					local lang = sprakkad[mw.ustring.sub( sitelink.site, 1, le - 10 )] or mw.ustring.sub( sitelink.site, 1, le - 10 )
					if mw.ustring.sub( sitelink.site, le - 9 ) == 'wikisource' then
						local sk = ''
						if sarskiljning[qid2] then
							sk = ' (' .. sarskiljning[qid2] .. ')'
						end
						tub = '[[:' .. lang .. ':' .. sitelink.title .. '|' ..  mw.language.fetchLanguageName( lang ) .. sk .. ']]'
						tub = mw.text.tag('span', {style="display:none;", class="interwiki-extra", lang=lang, title = sitelink.title .. ' - ' .. mw.language.fetchLanguageName( lang, 'sv' )}, tub)
						table.insert(s, {lang, sk, tub} )
					end
				elseif sitelink.site == thiswiki and mw.title.getCurrentTitle().text ~= sitelink.title then
					local lang = sprakkad[mw.ustring.sub( sitelink.site, 1, le - 10 )] or mw.ustring.sub( sitelink.site, 1, le - 10 )
					if sarskiljning[qid2] then
						tub = '[[' .. sitelink.title .. '|' .. sarskiljning[qid2] .. ']]'
					else 
						tub = '[[' .. sitelink.title .. ']]'
					end
					tub = mw.text.tag('span', {style="display:none;", class="interwiki-extra", lang=lang, title = sitelink.title .. ' - ' .. mw.language.fetchLanguageName( lang, 'sv' )}, tub)
					table.insert(s, {lang, sk, tub} )
				elseif inbaddade[sitelink.site] then
					local lang = ''
					local short = ''
					if mw.ustring.sub( sitelink.site, le - 3 ) == 'wiki' then
						lang = sprakkad[mw.ustring.sub( sitelink.site, 1, le - 4 )] or mw.ustring.sub( sitelink.site, 1, le - 4 )
						short = 'w:'
					else
						--to do, andra projekt än Wikipedia
					end
					-- to do, sortera bort annat än rätt namnrymd i aktuellt projekt
					local sk = ''
					if sarskiljning[qid2] then
						sk = ' (' .. sarskiljning[qid2] .. ')'
					end
					tub = '[[:' .. short .. lang .. ':' .. sitelink.title .. '|' ..  mw.language.fetchLanguageName( lang ) .. sk .. ']]'
					tub = mw.text.tag('span', {style="display:none;", class="interwiki-extra", lang=lang, title = sitelink.title .. ' - ' .. mw.language.fetchLanguageName( lang, 'sv' )}, tub)
					table.insert(s, {lang, sk, tub} )
				end
			end
		end	
	end
	return s
end
 
upp = function(s, this)
	local edition_of = this.claims["P629"]
	if not edition_of then 
		return nil
	end
	for _, moder in pairs(edition_of) do
		local qid = 'Q' .. moder.mainsnak.datavalue.value['numeric-id']
		local top = mw.wikibase.getEntity( qid )
		if top.claims["P629"] then 
			s = upp(s, top)
		end
		s = ner(s, top)
	end
	return s
end 
 
 
 
p.interwiki = function(frame)
	local s= {}
	local this = mw.wikibase.getEntity()
	if not this then
		return nil
	end
	if not this.claims then
		return nil
	end
	s = upp(s, this)
	local s2 = {}
	if s ~= nil and s ~= {} then
		table.sort(s, function(a, b)
			local e1 = varde(a[1])
			local e2 = varde(b[1])
			if e1 < e2 then 
				return true
			else
				return false
			end
		end
		)
 
		for _, kusar in pairs(s) do
			table.insert(s2, kusar[3])
		end
	end
	local iw = table.concat(s2, '')
	if iw ~= '' and iw ~= nil then
		iw = iw .. '[[Kategori:Sidor med interwiki med hjälp av arbitrary access på Wikidata]]'
	end
	return iw
end

return p