Forskjell mellom versjoner av «Modul:Begrep»
Hopp til navigering
Hopp til søk
Tagg: Endringsomgjøring |
|||
Linje 197: | Linje 197: | ||
terminfobox = addOptionalRow( terminfobox, 'godkjent', termseksjon.args.godkjent ) | terminfobox = addOptionalRow( terminfobox, 'godkjent', termseksjon.args.godkjent ) | ||
terminfobox = addOptionalRow( terminfobox, 'definisjon', termseksjon.args.definisjon ) | terminfobox = addOptionalRow( terminfobox, 'definisjon', termseksjon.args.definisjon ) | ||
− | terminfobox = addOptionalRow( terminfobox, 'definisjon:referanse', termseksjon.args[" | + | terminfobox = addOptionalRow( terminfobox, 'definisjon:referanse', termseksjon.args["merknad:referanse"] ) |
− | terminfobox = addOptionalRow( terminfobox, 'referanse', termseksjon.args["referanse"] ) | + | terminfobox = addOptionalRow( terminfobox, 'referanse', termseksjon.args["merknad:referanse"] ) |
:getHtml() | :getHtml() | ||
return tostring(terminfobox) | return tostring(terminfobox) |
Revisjonen fra 29. mar. 2022 kl. 11:48
Dokumentasjon for denne modulen kan opprettes på Modul:Begrep/dok
local capiunto = require 'capiunto' local p = {} --p stands for package local felles = mw.loadData( 'Module:Felles' ) -- one function for values which are in their own namespace (i.e autocompleted from namespace) function p.createMediawikiLinkNS( value ) if value and value ~= "" then return mw.getCurrentFrame():callParserFunction( '#arraymap:'.. value, felles.separator, 'x', "[[".. felles.namespace .. ':x' .. "]]", " , ", " og " ) else end end function p.createMediawikiLink( value ) if value and value ~= "" then return mw.getCurrentFrame():callParserFunction( '#arraymap:'.. value, felles.separator, 'x', "[[" .. 'x' .. "]]", ", ", " og " ) else end end -- local function addOptionalRow ( t, label, value, ... ) -- error ( " label" .. label .. "v: " .. value ) if value and value ~= "" then return t:addRow(label, value, ...) else return t end end -- add namespace to value -https://phabricator.wikimedia.org/T254624 function p.smwpropertyns( property, value ) if (value == "" or value == nul) then return "" else local newvalue = mw.getCurrentFrame():callParserFunction( '#arraymap:'.. value, felles.separator, 'x', felles.namespace .. ':x', felles.separator ) return p.smwproperty( property, newvalue ) end end -- For å skrive smwproperties som wikitext som kan listes til SemanticScribunto -- se dataStoreType2 https://github.com/SemanticMediaWiki/SemanticScribunto/blob/master/docs/mw.smw.set.md function p.smwproperty( property, value ) local resultvalue = value or "" return property .. "=" .. resultvalue end function p.smwlangproperty( property, value, lang ) if (value and lang) then resultvalue = (value .. "@" .. lang ) else resultvalue = "" end return property .. "=" .. resultvalue end function p.smwwritetriples( relasjoner ) local result local result = mw.smw.set( relasjoner ) if result == true then -- everything ok else error( tostring(result.error) ) -- error message to be found in result.error end return end function p.smwwritesubobjects( relasjoner, uri ) local result local result = mw.smw.set( relasjoner ) if result == true then -- everything ok else error( tostring(result.error) ) -- error message to be found in result.error end return end -- global vars -- Write triples for template Begrep -- Begin Triples for form Begrep -- Write triples for template relasjon function p.relasjon ( frame ) local relasjon = mw.getCurrentFrame():getParent() local relasjontripler = { p.smwpropertyns("Skos:related", relasjon.args.assosiativ), felles.sep, p.smwpropertyns("Xkos:generalizes", relasjon.args.generisk ), felles.sep, p.smwpropertyns("Xkos:hasPart", relasjon.args.partitiv ), felles.sep, p.smwproperty('Rdfs:seeAlso', relasjon.args.seogsa), felles.sep, p.smwpropertyns('Dct:replaces', relasjon.args.erstatter), felles.sep, -- replacedBy is not tokens p.smwpropertyns('Dct:replacedBy', relasjon.args.erstattetav ) } p.smwwritetriples( relasjontripler ) -- infobox -- infobox hasrelasjon = false -- for i, v in ipairs(relasjon) do for k, v in next, relasjon do if (v ~= nul and v ~= "") then hasrelasjon = true break; end end if (hasrelasjon) then terminfobox = capiunto.create( { bodyStyle = "width:60em;background:#f3f3f3; margin: 0 0 0 0;" } ) :addHeader( "RELASJON", "mw-infobox-capiunto-title-1" ) terminfobox = addOptionalRow( terminfobox, 'assosiativ', p.createMediawikiLinkNS( relasjon.args.assosiativ ) ) terminfobox = addOptionalRow( terminfobox, 'generisk', p.createMediawikiLinkNS( relasjon.args.generisk ) ) terminfobox = addOptionalRow( terminfobox, 'partitiv', p.createMediawikiLinkNS( relasjon.args.partitiv ) ) terminfobox = addOptionalRow( terminfobox, 'se også', p.createMediawikiLink (relasjon.args.seogsa) ) terminfobox = addOptionalRow( terminfobox, 'erstatter', p.createMediawikiLinkNS( relasjon.args.erstatter ) ) terminfobox = addOptionalRow( terminfobox, 'erstattet av', p.createMediawikiLinkNS( relasjon.args.erstattetav ) ) :getHtml() return tostring(terminfobox) else -- don't write infobox if no values are set end end -- Write triples for template begrep function p.begrep ( frame ) local begrep = mw.getCurrentFrame():getParent() local begreptripler = { p.smwproperty("Dct:modified", frame:preprocess( "{{CURRENTTIMESTAMP}}" )), p.smwproperty( "Skosp:memberOf", begrep.args.medlem ), p.smwproperty( "Skos:scopeNote", begrep.args.kommentar ), p.smwproperty( "Dct:subject",begrep.args['bruksområde'] ), felles.sep, p.smwproperty( "Dct:identifier",begrep.args.identifikator ), p.smwproperty( "Skosp:previousIdentifier",begrep.args['tidligere id'] ) } p.smwwritetriples( begreptripler ) -- infobox -- infobox terminfobox = capiunto.create( { bodyStyle = "width:60em;background:#f3f3f3; margin: 0 0 0 0;" } ) :addHeader( "INFORMASJON", "mw-infobox-capiunto-title-1" ) terminfobox = addOptionalRow( terminfobox, 'kommentar', begrep.args.kommentar ) terminfobox = addOptionalRow( terminfobox, 'referanse', begrep.args["kommentar:referanse"] ) terminfobox = addOptionalRow( terminfobox, 'bruksområde', begrep.args["bruksområde"] ) :getHtml() return tostring(terminfobox) end -- Coalesce on displaytitle from prefLabel function p.displaytitle( term ) -- local prefixedtitle = mw.title.getCurrentTitle().prefixedText -- local term = mw.getCurrentFrame():getParent().args.term -- local currentdisplaytitle = mw.ext.displaytitle.get(prefixedtitle) local isset = mw.getCurrentFrame():callParserFunction( '#var', { 'dtisset' } ) -- om term finnes og display title er tittel med namespace, sett displaytitle if (isset == "" and term ~= nul) then mw.ext.displaytitle.set(term) -- sett info om at at term finnes via wiki parserfuncstions siden en ikke kan ha state mellom invocations i LUA mw.getCurrentFrame():callParserFunction( '#vardefine', { 'dtisset', term } ) return else return end end -- Termseksjon function p.termseksjon( lc, lcname ) local luaframe = mw.getCurrentFrame() local termseksjon = mw.getCurrentFrame():getParent() local lc = luaframe.args.lc local lcname = luaframe.args.lcname assert(lc and lcname,"alle termseksjon må ha en en lc og tittel" .. lcname ) -- local spraakkode = termseksjon.args['språkkode'] if (termseksjon.args.definisjon ~= nul) then p.definisjon( termseksjon, lc ) else -- error(tostring(termseksjon.args.definisjon)) end -- infobox terminfobox = capiunto.create( { bodyStyle = "width:60em;background:#f3f3f3; margin: 0 0 0 0;" } ) :addHeader( lcname, "mw-infobox-capiunto-title-1" ) terminfobox = addOptionalRow( terminfobox, 'merknad', termseksjon.args.merknad ) terminfobox = addOptionalRow( terminfobox, 'referanse', termseksjon.args["merknad:referanse"] ) terminfobox = addOptionalRow( terminfobox, 'godkjent', termseksjon.args.godkjent ) terminfobox = addOptionalRow( terminfobox, 'definisjon', termseksjon.args.definisjon ) terminfobox = addOptionalRow( terminfobox, 'definisjon:referanse', termseksjon.args["merknad:referanse"] ) terminfobox = addOptionalRow( terminfobox, 'referanse', termseksjon.args["merknad:referanse"] ) :getHtml() return tostring(terminfobox) end function p.definisjon(termseksjon, spraakkode) if (not(termseksjon and spraakkode)) then error ('definisjon og spraakkode må være satt') else local slug = 'definisjon ' .. spraakkode local begreptripler = { p.smwproperty("Skosno:definisjon", felles.fullpagename ..'#'.. slug ) } p.smwwritetriples( begreptripler ) -- definisjon subobject -- uri er original # + slug. samme som brukes til definisjon local defref = termseksjon.args['definisjon:referanse'] -- håndter nøstet referanse på definisjon if (defref) then local definisjonrefslug = slug .. " referanse" local definisjonref = felles.fullpagename .. definisjonrefslug definisjonsreftripler = { p.smwlangproperty("Skosp:label", defref, spraakkode ) } local result = mw.smw.subobject( definisjonsreftripler, definisjonrefslug ) else end local definisjontripler = { p.smwproperty( "@category","Skosno:Definisjon" ), p.smwlangproperty("Skosp:label",termseksjon.args['definisjon'],spraakkode), p.smwproperty("Dct:source", definisjonref ) } -- andre parameter er (relativ ) uri å bruke som navn for subobject, appender # og slug på sidenavn result = mw.smw.subobject( definisjontripler, slug ) return end end --return --end function p.term( frame ) local luaframe = mw.getCurrentFrame() local term = mw.getCurrentFrame():getParent() local langcode = luaframe.args['lc'] local relasjon = luaframe.args.relasjon local sourceful = "" local slug = nul local sourceslug = nul assert (langcode ~= nul, "named param lc must be set when invoking module begrep:term") assert ( relasjon ~= nul , "named param relasjon must be set when invoking module begrep:term" ) if (term.args.term ) then -- langcode = term.args['språkkode'] -- forventer alltid å få inn en en relasjon på type prefix:tekst local relasjonslug = mw.ustring.match(luaframe.args.relasjon, ":(.*)") local urivarname = relasjonslug .. "termCounter" .. langcode local LuaVarTermCounter = mw.ext.VariablesLua.var( urivarname ) -- error(type(LuaVarTermCounter)) local counter = (LuaVarTermCounter and LuaVarTermCounter ~= '') and LuaVarTermCounter or 1 mw.ext.VariablesLua.vardefine(urivarname, tonumber(counter) + 1) local slug = relasjonslug .. " " .. langcode .. " " .. counter local sourceslug = slug .. "source" local termtripler = { p.smwlangproperty("Skosxl:literalForm",term.args['term'], langcode ), p.smwproperty("Dct:source", felles.fullpagename .. sourceslug ), p.smwproperty("@category", "Skosxl:Label" ) } local result = mw.smw.subobject( termtripler, slug ) -- function if (relasjonslug == "prefLabel") then p.displaytitle( term.args.term ) end local relasjonstripler = { p.smwproperty(relasjon, felles.fullpagename .. "#" .. slug) } result = p.smwwritetriples(relasjonstripler) -- if (term.args.term and term.args["term:referanse"] ) then kildetripler = { p.smwlangproperty("Rdfs:label",term.args['term:referanse'],langcode), p.smwlangproperty("Skos:scopeNote",term.args['kommentar'], langcode) } result = mw.smw.subobject( definisjontripler, sourceslug ) end terminfobox = capiunto.create( { bodyStyle = "width:60em;background:#f3f3f3; margin: 0 0 0 0;" } ) :addHeader( felles.languagetable[relasjon], "mw-infobox-capiunto-title-2" ) :addRow( 'term',term.args.term ) terminfobox = addOptionalRow( terminfobox, 'referanse', term.args['term:referanse'] ) terminfobox = addOptionalRow( terminfobox, 'kontekst', term.args.kontekst ) terminfobox = addOptionalRow( terminfobox, 'kortform',term.args.kortform ) terminfobox = addOptionalRow( terminfobox, 'kommentar',term.args.kommentar ) terminfobox = addOptionalRow( terminfobox, 'kollokasjon', term.args.kollokasjon ) terminfobox = addOptionalRow( terminfobox, 'andre referanser',term.args['andre referanser'] ) :getHtml() return tostring(terminfobox) else end -- error ((string.match(property, ":(.*)$")) .. " " ..spraakkode) -- return error (string.match(property, ":(.*)$") .. term.args.spraakkode) end -- return -- end --function p.term( ) --return --end return p