Modul:Wb: Unterschied zwischen den Versionen

Aus STA Dokumentationsplattform
Zur Navigation springen Zur Suche springen
imported>Juergen.Kett
imported>Admin
 
(105 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 4: Zeile 4:
 
p.entity = nil;
 
p.entity = nil;
 
p.claims = nil;
 
p.claims = nil;
p.keys = {};
 
p.index = 1;
 
  
p.property = nil;
+
local statementsTemplate = '\n<table class="statements">$var\n</table>'
p.value = nil;
+
local statementTemplate = '\n<tr valign="top" class="statement">$var\n</tr>'
p.qualifier = nil;
+
local propertyTemplate = '\n<td class="property">$var</td>'
 +
local valuesTemplate = '\n<td class="values">$var\n</td>'
 +
local valueTemplate = '\n<div class="value">$var</div>'
 +
local qStatementsTemplate = '<table class="qstatements">$var</table>'
 +
local qStatementTemplate = '<tr valign="top" class="qstatement">$var</tr>'
 +
local qPropertyTemplate = '<td valign="top" class="qproperty">$var</td>'
 +
local qValuesTemplate = '<td valign="top" class="qvalues">$var</td>'
 +
local qValueTemplate = '<div class="qvalue">$var</div>'
  
local rowDel1 = "<row>"
+
function p.renderEntity(frame)
local rowDel2 = "</row>\n"
+
  id = frame.args.id
local colDel1 = "<col>"
+
  local propertyIds = nil
local colDel2 = "</col>"
+
  local s = frame.args.propertyIds
 +
  if not p._isempty(s) then
 +
      propertyIds = mw.text.split(frame.args.propertyIds,"%s*,%s*"
 +
  end
 +
  return p._renderEntity(id, propertyIds)
 +
end
 +
 
 +
function p._isempty(s)
 +
  return s == nil or s == ''
 +
end
  
function p.initEntity(qid)
+
function p._fillTemplate()
  p.entity = mw.wikibase.getEntity(qid)
+
  local frame = mw.getCurrentFrame()
  p.claims = p.entity["claims"]
+
  o = frame:expandTemplate{ title = 'Wbtest', args = { id='Q1' } }
  -- p.i, p.v = next(p.claims, nil)
+
  mw.logObject(o)
  -- mw.logObject(p.entity)
 
  p.keys = {}
 
  p.index=1
 
  local i = 1
 
  for k in pairs(p.claims) do 
 
    p.keys[i]=k
 
    i = i + 1
 
  end
 
  mw.logObject(p.keys)
 
 
end
 
end
  
function p.getFormatedStatements(frame)
+
function p._getFormatedValues(entityId, propertyId )
  id = frame.args.id
+
  local claim = nil
  return p._getFormatedStatements(id)
+
  -- get claim from wikibase if claims are not cached in p.claims
 +
  if not claims then
 +
    claim = mw.wikibase.getBestStatements( entityId, propertyId )
 +
  else
 +
    claim = p.claims[propertyId]
 +
  end
 +
  if claim then
 +
    return p._renderClaim(propertyId, claim)
 +
  end
 
end
 
end
  
function p._getFormatedStatements(id)
+
function p._renderEntity(id, propertyIds)
   ret = ""
+
   local ret = ""
 +
  local qualifiers = ""
 +
  local prop = ""
 +
  local value = ""
 
   p.entity = mw.wikibase.getEntity(id)
 
   p.entity = mw.wikibase.getEntity(id)
   p.claims = p.entity["claims"]
+
 
   for key, claimgroup in pairs(p.claims) do
+
  if not p.entity then
    if claimgroup then
+
    return "no entity with id found: " .. id
        for key2, claim in pairs(claimgroup) do
+
  end
          qualifiers=p.getFormatedQualifiers(claim["qualifiers"])
+
   p.claims = p.entity["claims"]  
          value = mw.wikibase.renderSnak(claim["mainsnak"])
+
   if not propertyIds then
          ret = ret .. rowDel1 .. colDel1 .. key .. colDel2 .. colDel1 .. value .. colDel2 .. colDel1 .. qualifiers .. colDel2 .. rowDel2
+
    propertyIds = {}
        end
+
    for propId in pairs(p.claims) do table.insert(propertyIds, propId) end
    end  
+
    propertyIds = mw.wikibase.orderProperties(propertyIds)
 +
  end
 +
  for i, propId in ipairs(propertyIds) do
 +
    valueSnaks = p.claims[propId]
 +
    if valueSnaks then
 +
      ret = ret .. p._renderClaim(propId, valueSnaks)
 +
    end
 
   end
 
   end
 +
 
 +
 +
  ret = string.gsub(statementsTemplate, "$var", ret)
 
   return ret
 
   return ret
 
end
 
end
  
function p.getFormatedQualifiers(snaks)
+
function p._renderClaim(propId, valueSnaks)
 +
    local values = ""
 +
    for key, valueSnak in pairs(valueSnaks) do
 +
        qualifiers = p._renderQualifiers(valueSnak["qualifiers"])
 +
        values = values .. p._renderValue(valueSnak["mainsnak"], qualifiers)
 +
    end
 +
    return p._renderStatement(propId, values)
 +
end
 +
 
 +
function p._renderQualifiers(props)
 +
    if not props then return nil end
 
     local ret = ""
 
     local ret = ""
     if snaks then
+
     for propId, valueSnaks in pairs(props) do
      for key, snak in pairs(snaks) do
+
      local values = ""
        ret = ret .. rowDel1 .. colDel1 .. key .. colDel2 .. colDel1 .. mw.wikibase.renderSnak(snak[1]) .. colDel2 .. rowDel2
+
      for key, valueSnak in pairs(valueSnaks) do  
      end
+
          values = values .. p._renderQValue(valueSnak)   
 +
      end
 +
      values = string.gsub(qValuesTemplate, "$var", values)
 +
      ret = ret .. p._renderQStatement(propId, values)  
 
     end
 
     end
     return ret ;
+
     return ret
 +
end
 +
 
 +
function p._renderQStatement(propId, values)
 +
  local propLabel = mw.wikibase.getLabel(propId)
 +
  if not propLabel then propLabel = "" end
 +
  local prop = string.gsub(qPropertyTemplate, "$var", propLabel)
 +
  local val = string.gsub(qValuesTemplate, "$var", values)
 +
  return string.gsub(qStatementTemplate, "$var", prop .. val) 
 +
end
 +
 
 +
function p._renderQValue(valueSnak)
 +
  local value = mw.wikibase.renderSnak(valueSnak)
 +
  return string.gsub(qValueTemplate, "$var", value)
 +
end
 +
 
 +
function p._renderStatement(propId, values)
 +
  local propLabel = mw.wikibase.getLabel(propId)
 +
  if not propLabel then propLabel = "" end
 +
  local prop = string.gsub(propertyTemplate, "$var", propLabel)
 +
  local val = string.gsub(valuesTemplate, "$var", values)
 +
  return string.gsub(statementTemplate, "$var", prop .. val) 
 +
end
 +
 
 +
function p._renderValue(valueSnak, qualifiers)
 +
  if not qualifiers then
 +
    qualifiers = ""
 +
  else
 +
    qualifiers = string.gsub(qStatementsTemplate, "$var", qualifiers)
 +
  end
 +
  local value = mw.wikibase.renderSnak(valueSnak)
 +
  return string.gsub(valueTemplate, "$var", value .. qualifiers)
 +
end
 +
 
 +
p.getLabel = function (frame)
 +
local id = frame.args.id
 +
if id then
 +
  return mw.wikibase.getLabel(id)
 +
end
 +
return ""
 
end
 
end
  
 +
-- wird nicht mehr benötigt
 
function p.nextStatement()  
 
function p.nextStatement()  
 
   p.property = p.keys[p.index]
 
   p.property = p.keys[p.index]
Zeile 69: Zeile 147:
 
     snak = claim[1]["mainsnak"]  
 
     snak = claim[1]["mainsnak"]  
 
     p.value = mw.wikibase.renderSnak(snak)
 
     p.value = mw.wikibase.renderSnak(snak)
    mw.logObject(p.value)
 
 
     p.index = p.index + 1
 
     p.index = p.index + 1
 
   end
 
   end
 
end
 
end
  
p.getLabel = function (frame)
+
-- wird nicht mehr benötigt
local pid = frame.args.pid
+
function p.initEntity(qid)
local label = mw.wikibase.getLabel(pid)
+
  p.entity = mw.wikibase.getEntity(qid)
return label
+
  p.claims = p.entity["claims"]
 +
  -- p.i, p.v = next(p.claims, nil)
 +
  -- mw.logObject(p.entity)
 +
  p.keys = {}
 +
  p.index=1
 +
  local i = 1
 +
  for k in pairs(p.claims) do 
 +
    p.keys[i]=k
 +
    i = i + 1
 +
  end
 +
  mw.logObject(p.keys)
 
end
 
end
 +
 +
  
 
return p
 
return p

Aktuelle Version vom 8. Juni 2020, 13:32 Uhr

Die Dokumentation für dieses Modul kann unter Modul:Wb/Doku erstellt werden

local p = {}; 

p.id = nil;
p.entity = nil;
p.claims = nil;

local statementsTemplate = '\n<table class="statements">$var\n</table>'
local statementTemplate = '\n<tr valign="top" class="statement">$var\n</tr>'
local propertyTemplate = '\n<td class="property">$var</td>'
local valuesTemplate = '\n<td class="values">$var\n</td>'
local valueTemplate = '\n<div class="value">$var</div>'
local qStatementsTemplate = '<table class="qstatements">$var</table>'
local qStatementTemplate = '<tr valign="top" class="qstatement">$var</tr>'
local qPropertyTemplate = '<td valign="top" class="qproperty">$var</td>'
local qValuesTemplate = '<td valign="top" class="qvalues">$var</td>'
local qValueTemplate = '<div class="qvalue">$var</div>'

function p.renderEntity(frame)
   id = frame.args.id
   local propertyIds = nil
   local s = frame.args.propertyIds
   if not p._isempty(s) then
      propertyIds = mw.text.split(frame.args.propertyIds,"%s*,%s*")   
   end
   return p._renderEntity(id, propertyIds)
end

function p._isempty(s)
  return s == nil or s == ''
end

function p._fillTemplate()
   local frame = mw.getCurrentFrame()
   o = frame:expandTemplate{ title = 'Wbtest', args = { id='Q1' } }
   mw.logObject(o)
end

function p._getFormatedValues(entityId, propertyId )
  local claim = nil
  -- get claim from wikibase if claims are not cached in p.claims 
  if not claims then
     claim = mw.wikibase.getBestStatements( entityId, propertyId )
  else
     claim = p.claims[propertyId]
  end
  if claim then
     return p._renderClaim(propertyId, claim)
  end
end

function p._renderEntity(id, propertyIds)
  local ret = ""
  local qualifiers = ""
  local prop = ""
  local value = ""
  p.entity = mw.wikibase.getEntity(id)
  
  if not p.entity then
     return "no entity with id found: " .. id
  end 
  p.claims = p.entity["claims"] 
  if not propertyIds then
    propertyIds = {}
    for propId in pairs(p.claims) do table.insert(propertyIds, propId) end 
    propertyIds = mw.wikibase.orderProperties(propertyIds)
  end
  for i, propId in ipairs(propertyIds) do
    valueSnaks = p.claims[propId]
    if valueSnaks then
      ret = ret .. p._renderClaim(propId, valueSnaks)
    end
  end
  

  ret = string.gsub(statementsTemplate, "$var", ret) 
  return ret
end

function p._renderClaim(propId, valueSnaks)
     local values = ""
     for key, valueSnak in pairs(valueSnaks) do
        qualifiers = p._renderQualifiers(valueSnak["qualifiers"])
        values = values .. p._renderValue(valueSnak["mainsnak"], qualifiers)
     end
     return p._renderStatement(propId, values) 
end

function p._renderQualifiers(props)
    if not props then return nil end
    local ret = ""
    for propId, valueSnaks in pairs(props) do
       local values = ""
       for key, valueSnak in pairs(valueSnaks) do   
          values = values .. p._renderQValue(valueSnak)     
       end
       values = string.gsub(qValuesTemplate, "$var", values)
       ret = ret .. p._renderQStatement(propId, values) 
    end
    return ret
end

function p._renderQStatement(propId, values)
  local propLabel = mw.wikibase.getLabel(propId)
  if not propLabel then propLabel = "" end
  local prop = string.gsub(qPropertyTemplate, "$var", propLabel)
  local val = string.gsub(qValuesTemplate, "$var", values)
  return string.gsub(qStatementTemplate, "$var", prop .. val)  
end

function p._renderQValue(valueSnak)
  local value = mw.wikibase.renderSnak(valueSnak)
  return string.gsub(qValueTemplate, "$var", value) 
end

function p._renderStatement(propId, values)
  local propLabel = mw.wikibase.getLabel(propId)
  if not propLabel then propLabel = "" end
  local prop = string.gsub(propertyTemplate, "$var", propLabel)
  local val = string.gsub(valuesTemplate, "$var", values)
  return string.gsub(statementTemplate, "$var", prop .. val)  
end

function p._renderValue(valueSnak, qualifiers)
  if not qualifiers then 
     qualifiers = "" 
  else
     qualifiers = string.gsub(qStatementsTemplate, "$var", qualifiers)
  end
  local value = mw.wikibase.renderSnak(valueSnak)
  return string.gsub(valueTemplate, "$var", value .. qualifiers) 
end

p.getLabel = function (frame)
 local id = frame.args.id
 if id then 
   return mw.wikibase.getLabel(id)
 end
 return ""
end

-- wird nicht mehr benötigt
function p.nextStatement() 
  p.property = p.keys[p.index]
  mw.log(p.property)
  if p.property then
    claim = p.claims[p.property]
    snak = claim[1]["mainsnak"] 
    p.value = mw.wikibase.renderSnak(snak)
    p.index = p.index + 1
  end
end

-- wird nicht mehr benötigt
function p.initEntity(qid)
  p.entity = mw.wikibase.getEntity(qid)
  p.claims = p.entity["claims"]
  -- p.i, p.v = next(p.claims, nil) 
  -- mw.logObject(p.entity)
  p.keys = {}
  p.index=1
  local i = 1
  for k in pairs(p.claims) do  
     p.keys[i]=k
     i = i + 1
  end
  mw.logObject(p.keys)
end



return p