Modul:Messierobjekter
Hopp til navigering
Hopp til søk
local p = {} -- henter inn nødvendige moduler local getValueFromID = require('Modul:Sandkasse/Cocu/Wikidata').getValueFromID -- muliggjør arbitrary access local ISOdate = require('Modul:ISOtilNorskdato').isodato -- formatterer dato local function legend(frame, args) local opencluster = mw.getCurrentFrame():expandTemplate{ title = 'Legend2' , args = { '#eeeeff', '[[Stjernehop]]/[[Åpen stjernehop]] ', ['border'] = '1px solid #aaaaaa' } } local globularcluster = mw.getCurrentFrame():expandTemplate{ title = 'Legend2' , args = { '#ffe4b5', '[[Kulehop]] ', ['border'] = '1px solid #aaaaaa' } } local nebula = mw.getCurrentFrame():expandTemplate{ title = 'Legend2' , args = { '#ffcccc', '[[Stjernetåke]] ', ['border'] = '1px solid #aaaaaa' } } local planetarynebula = mw.getCurrentFrame():expandTemplate{ title = 'Legend2' , args = { '#ccffee', '[[Planetarisk tåke]] ', ['border'] = '1px solid #aaaaaa' } } local supernovaremnant = mw.getCurrentFrame():expandTemplate{ title = 'Legend2' , args = { '#ffccee', '[[Supernovarest]] ', ['border'] = '1px solid #aaaaaa' } } local galaxy = mw.getCurrentFrame():expandTemplate{ title = 'Legend2' , args = { '#ffffcc', '[[Galakse]] ', ['border'] = '1px solid #aaaaaa' } } local other = mw.getCurrentFrame():expandTemplate{ title = 'Legend2' , args = { '#ffffff', 'Andre', ['border'] = '1px solid #aaaaaa' } } local result = opencluster .. globularcluster .. nebula .. planetarynebula .. supernovaremnant .. galaxy .. other .. '\n' return result end local function findQnr(frame) return { M1 = 10934, M2 = 11099, M3 = 11202, M4 = 11212, M5 = 11217, M6 = 11225, M7 = 11234, M8 = 11243, M9 = 11258, M10 = 11267, M11 = 11294, M12 = 11307, M13 = 11312, M14 = 11320, M15 = 11332, M16 = 11349, M17 = 11357, M18 = 11370, M19 = 11374, M20 = 11377, M21 = 11383, M22 = 11392, M23 = 11396, M24 = 13618, M25 = 13623, M26 = 13626, M27 = 13628, M28 = 13644, M29 = 13647, M30 = 13653, M31 = 2469, M32 = 13720, M33 = 13724, M34 = 13729, M35 = 13736, M36 = 13738, M37 = 13878, M38 = 13880, M39 = 13883, M40 = 13886, M41 = 13897, M42 = 13903, M43 = 13906, M44 = 13760, M45 = 13423, M46 = 13910, M47 = 13942, M48 = 13951, M49 = 13952, M50 = 13956, M51 = 13957, M52 = 13958, M53 = 13960, M54 = 13962, M55 = 13965, M56 = 13967, M57 = 13969, M58 = 13970, M59 = 13971, M60 = 13976, M61 = 13978, M62 = 13980, M63 = 13981, M64 = 13983, M65 = 13986, M66 = 13992, M67 = 13997, M68 = 14000, M69 = 14002, M70 = 14004, M71 = 14006, M72 = 14008, M73 = 14009, M74 = 14013, M75 = 14014, M76 = 14015, M77 = 14017, M78 = 14018, M79 = 14019, M80 = 14021, M81 = 14024, M82 = 14026, M83 = 14030, M84 = 14033, M85 = 14035, M86 = 2577, M87 = 14041, M88 = 14048, M89 = 14337, M90 = 14343, M91 = 14344, M92 = 14346, M93 = 14347, M94 = 14349, M95 = 14351, M96 = 14354, M97 = 14359, M98 = 14361, M99 = 14364, M100 = 14365, M101 = 14371, M102 = 14374, M103 = 14376, M104 = 4647, M105 = 14377, M106 = 4658, M107 = 4755, M108 = 4751, M109 = 4746, M110 = 4662, } end local function header(frame, args) return [=[{| class="wikitable" ![[Messierkatalogen|Messier-<br />nummer]] ![[NGC-katalogen|NGC]]-/IC-nummer !Vanlig navn !Bilde !Objekt !Oppdager !Oppdaget ![[Stjernebilde]] !Ref]=] end function p.row(frame, args) retval = '' i = 1 repeat -- finner Q-nummeret til Messierobjektet local qnr = findQnr(frame) qnr = tostring(qnr['M' .. i]) -- definerer Q-iden for kobling mot Wikidata Qid = 'Q' .. qnr -- definerer Messiernummer Mnr = 'M' .. i -- definerer hva som skal stå i kolonnen for 'vanlig navn'. i denne tabellen brukes artikkelens etikett på Wikidata if mw.wikibase.label("Q" .. qnr) == nil then label = '' else label = mw.wikibase.label("Q" .. qnr) end local entity = mw.wikibase.getEntity("Q" .. qnr) -- definerer hvilken side på nowp det skal lenkes til og hva som skal vises som lenketekst local sitelink = mw.wikibase.sitelink("Q" .. qnr) if sitelink == nil then if label == '' then sitelink = '[[Messier ' .. i .. '|' .. Mnr .. ']]' else sitelink = '[[' .. label .. '|' .. Mnr .. ']]' end else sitelink = '[[' .. sitelink .. '|' .. Mnr .. ']]' end -- definerer om det skal vises noe i kolonnen for 'vanlig navn'. hvis objektet ikke har noe annet navn enn 'Messier xxx', så vises det ingenting if label:match("Messier%s%d") or label:match("M%d") or label:match("M%s%d") then label = '' else label = label end -- -- henter ut bilde fra Wikidata local p18 = mw.wikibase.getEntityObject("Q" .. qnr).claims.P18 if not p18 then image = "" else image = "[[Fil:" .. p18[1].mainsnak.datavalue.value .. "|75px]]" end -- henter ut objekttype(r) fra Wikidata local claims = entity.claims["P31"] if claims then -- if wiki-linked value output as link if possible if (claims[1] and claims[1].mainsnak.snaktype == "value" and claims[1].mainsnak.datavalue.type == "wikibase-entityid") then local out = {} for k, v in pairs(claims) do local sitelink = mw.wikibase.sitelink("Q" .. v.mainsnak.datavalue.value["numeric-id"]) local label = mw.wikibase.label("Q" .. v.mainsnak.datavalue.value["numeric-id"]) if label == nil then label = "" end if sitelink then out[#out + 1] = "[[" .. sitelink .. "|" .. label .. "]]" else out[#out + 1] = label end end objecttype = table.concat(out, "<br /> ") else objecttype = entity:formatPropertyValues("P31", mw.wikibase.entity.claimRanks).value end else objecttype = "" end -- definerer radfargen på bakgrunn av objekktype if objecttype == nil then color = "" elseif objecttype:match("..kulehop..") then color = 'style="background:#ffe4b5"' elseif objecttype:match("..stjernetåke..") or objecttype:match("..H.II..") or objecttype:match("..refleksjonståke..") then color = 'style="background:#ffcccc"' elseif objecttype:match("..galakse..") then color = 'style="background:#ffffcc"' elseif objecttype:match("..stjernehop..") or objecttype:match("..stjernesky..") then color = 'style="background:#eeeeff"' elseif objecttype:match("..supernova..") then color = 'style="background:#ffccee"' elseif objecttype:match("..planet..") then color = 'style="background:#ccffee"' else color = 'style="background:#ffffff"' end -- henter ut oppdager(e) fra Wikidata local claims = entity.claims["P61"] if claims then -- if wiki-linked value output as link if possible if (claims[1] and claims[1].mainsnak.snaktype == "value" and claims[1].mainsnak.datavalue.type == "wikibase-entityid") then local out = {} for k, v in pairs(claims) do local sitelink = mw.wikibase.sitelink("Q" .. v.mainsnak.datavalue.value["numeric-id"]) local label = mw.wikibase.label("Q" .. v.mainsnak.datavalue.value["numeric-id"]) if label == nil then label = "Q" .. v.mainsnak.datavalue.value["numeric-id"] end if sitelink then out[#out + 1] = "[[" .. sitelink .. "|" .. label .. "]]" else out[#out + 1] = label end end discoverer = table.concat(out, "<br /> ") else discoverer = entity:formatPropertyValues("P61", mw.wikibase.entity.claimRanks).value end else discoverer = "" end -- henter ut oppdagelsesdato fra Wikidata discovered = ISOdate({args = {[1] = getValueFromID{args = {[1] = Qid, [2] = 'P575', [3] = 'hent_wikidata'}}}}) -- henter ut stjernebilde fra Wikidata constellation = getValueFromID({args = {[1] = Qid, [2] = 'P59', [3] = 'hent_wikidata'}}) -- henter ut avstand fra Wikidata distance = getValueFromID({args = {[1] = Qid, [2] = 'P2583', [3] = 'hent_wikidata'}}) -- henter ut tilsynelatende størrelsesklasse fra Wikidata appmag = getValueFromID({args = {[1] = Qid, [2] = 'P1215', [3] = 'hent_wikidata'}}) -- henter ut luminositet fra Wikidata luminosity = getValueFromID({args = {[1] = Qid, [2] = 'P2060', [3] = 'hent_wikidata'}}) -- henter ut andre katalognavn fra Wikidata local claims = mw.wikibase.getEntity("Q" .. qnr).claims["P528"] if claims then catname = entity:formatPropertyValues("P528", mw.wikibase.entity.claimRanks).value else catname = '' end if string.match(catname, "NGC %d%d%d%d%d") == nil then if string.match(catname, "NGC %d%d%d%d") == nil then if string.match(catname, "NGC %d%d%d") == nil then if string.match(catname, "NGC %d%d") == nil then if string.match(catname, "NGC %d") == nil then if string.match(catname, "IC %d%d%d%d%d") == nil then if string.match(catname, "IC %d%d%d%d") == nil then if string.match(catname, "IC %d%d%d") == nil then if string.match(catname, "IC %d%d") == nil then if string.match(catname, "IC %d") == nil then ngcnr = "–" else ngcnr = string.match(catname, "IC %d") end else ngcnr = string.match(catname, "IC %d&d") end else ngcnr = string.match(catname, "IC %d%d%d") end else ngcnr = string.match(catname, "IC %d%d%d%d") end else ngcnr = string.match(catname, "IC %d%d%d%d%d") end else ngcnr = string.match(catname, "NGC %d") end else ngcnr = string.match(catname, "NGC %d%d") end else ngcnr = string.match(catname, "NGC %d%d%d") end else ngcnr = string.match(catname, "NGC %d%d%d%d") end else ngcnr = string.match(catname, "NGC %d%d%d%d%d") end -- lager en referanse -- definerer variabel i referansens url if i < 10 then url0 = '00' elseif i > 99 then url0 = "" else url0 = '0' end -- definerer variabel i referansens dato if i < 105 then year = '1771' else year = '1783' end ref = mw.getCurrentFrame():expandTemplate{ title = 'Kilde www', args = { ['tittel'] = 'Messier ' .. i, ['språk'] = 'engelsk', ['besøksdato'] = '2015-09-18', ['url'] = 'http://messier.seds.org/m/m' .. url0 .. i .. '.html', ['forfatter'] = 'Messier, Charles', ['dato'] = year } } -- skriver referanse refstart = '<ref name="Messier' .. i .. '">' refend = '</ref>' -- setter sammen raden(e) retval = retval .. '\n' .. [=[ |- ]=] .. color .. '\n' .. [=[ | ]=] .. sitelink .. '\n' .. [=[ |align="center"| ]=] .. ngcnr .. '\n' .. [=[ | <i>]=] .. label .. '</i>\n' .. [=[ |align="center"| ]=] .. image .. '\n' .. [=[ | ]=] .. objecttype .. '\n' .. [=[ | ]=] .. discoverer .. '\n' .. [=[ | ]=] .. discovered .. '\n' .. [=[ | ]=] .. constellation .. '\n' .. [=[ | ]=] .. frame:preprocess(refstart .. ref .. refend) .. '\n' -- kjører loop i=i+1 -- stopper her until i > 110 -- returner radene return retval end local function bottom(frame, args) return [=[ |- ![[Messierkatalogen|Messier-<br />nummer]] ![[NGC-katalogen|NGC]]-/IC-nummer !Vanlig navn !Bilde !Objekt !Oppdager !Oppdaget ![[Stjernebilde]] !Ref |}]=] end function p.build(frame, args) legend = legend(frame, args) header = header(frame, args) row = p.row(frame, args) bottom = bottom(frame, args) return legend .. header .. row .. bottom end function p.navbox(frame, args) navbox = '' i = 1 repeat -- finner Q-nummeret til Messierobjektet local qnr = findQnr(frame) qnr = tostring(qnr['M' .. i]) -- definerer Messiernummer Mnr = 'M' .. i -- finner labelen fra Wikidata if mw.wikibase.label("Q" .. qnr) == nil then label = '' else label = mw.wikibase.label("Q" .. qnr) end -- definerer hvilken side på nowp det skal lenkes til og hva som skal vises som lenketekst local sitelink = mw.wikibase.sitelink("Q" .. qnr) if i == 110 then separator = '' else separator = ' · ' end if sitelink == nil then if label == '' then sitelink = '[[Messier ' .. i .. '|' .. Mnr .. ']]' .. separator else sitelink = '[[' .. label .. '|' .. Mnr .. ']]' .. separator end else sitelink = '[[' .. sitelink .. '|' .. Mnr .. ']]' .. separator end navbox = navbox .. sitelink i=i+1 until i>110 return navbox end return p