Home
Random
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Sandbox/RexxS/Concat
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p = {} p.test = function(frame) local mytable = {} for i=1,5 do mytable[i] = i*10 end return table.concat(mytable, ", ") end -- looking at Richard Burton Q151973 and his spouses P26 -- using {{#invoke:Sandbox/RexxS/Concat|getPropertyAndQualifier|P26|P580|FETCH_WIKIDATA}} -- try {{#invoke:Wikidata|getRawQualifierValue|P26|P580|FETCH_WIKIDATA}} - which fails -- see https://www.mediawiki.org/wiki/Wikibase/Notes/JSON -- see https://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua -- see https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual -- see https://en.wikipedia.org/wiki/Richard_Burton -- see https://www.wikidata.org/wiki/Q151973 -- Also see {{#invoke:Sandbox/RexxS/Concat|getPropertyAndQualifier|P6|P580|FETCH_WIKIDATA}} for https://en.wikipedia.org/wiki/New_York_City p.getPropertyAndQualifier = function(frame) local propertyID = mw.text.trim(frame.args[1] or "") local qualifierID = mw.text.trim(frame.args[2] or "") local input_parm = mw.text.trim(frame.args[3] or "") if input_parm == "FETCH_WIKIDATA" then local entity = mw.wikibase.getEntityObject() local props = entity.claims[propertyID] if props then local val, sitelink, label for k, v in pairs(props) do if v.mainsnak.snaktype == 'value' then if v.mainsnak.datavalue.type == 'wikibase-entityid' then -- type is entity sitelink = mw.wikibase.sitelink('Q' .. v.mainsnak.datavalue.value['numeric-id']) label = mw.wikibase.label('Q' .. v.mainsnak.datavalue.value['numeric-id']) if val then val = val .. ', ' .. label else val = label end if v.qualifiers and v.qualifiers[qualifierID] then for kq, vq in pairs(v.qualifiers[qualifierID]) do if vq.datavalue.type == 'time' then -- return the year local dt = vq.datavalue.value.time -- local dt = v.qualifiers[qualifierID][1].datavalue.value.time if #dt > 26 then --date later than 99 CE val = val .. ' (' .. string.sub(dt, 9, 12) .. ')' else -- date earlier than 100 CE val = val .. ' (' .. string.sub(dt, 9, 10) .. ')' end end end -- next kq, vq end elseif v.mainsnak.datavalue.type == 'string' then -- type is string if val then val = val .. ', ' .. v.mainsnak.datavalue.value else val = v.mainsnak.datavalue.value end elseif v.mainsnak.datavalue.type == 'globecoordinate' then -- type is globecoordinate - do this later if val then val = val .. ', ' .. 'globecoordinate' else val = 'globecoordinate' end elseif v.mainsnak.datavalue.type == 'time' then -- type is time - do this later if val then val = val .. ', ' .. 'time' else val = 'time' end elseif v.mainsnak.datavalue.type == 'quantity' then -- type is quantity local quant = entity:formatPropertyValues(propertyID, mw.wikibase.entity.claimRanks).value quant = mw.ustring.gsub(quant, "(%d),(%d)", "%1%2") -- remove thousands separators if val then val = val .. ', ' .. quant else val = quant end else -- type is not known (to be dealt with later) if val then val = val .. ', ' .. 'unknown' else val = 'unknown' end end else -- mainsnaktype is unknown value or novalue if val then val = val .. ', noval' else val= 'noval' end end end -- next k,v if ret then return ret else return val end else -- no props return "" end else -- wikidata value not required so return local value return input_parm end end p.getRawPropertyValue = function(frame) local propertyID = mw.text.trim(frame.args[1] or "") local input_parm = mw.text.trim(frame.args[2] or "") if input_parm == "FETCH_WIKIDATA" then local entity = mw.wikibase.getEntityObject() local props = entity.claims[propertyID] if props then local val, sitelink, label for k, v in pairs(props) do if v.mainsnak.snaktype == 'value' then if v.mainsnak.datavalue.type == 'wikibase-entityid' then -- type is entity sitelink = mw.wikibase.sitelink('Q' .. v.mainsnak.datavalue.value['numeric-id']) label = mw.wikibase.label('Q' .. v.mainsnak.datavalue.value['numeric-id']) if val then val = val .. ', ' .. label else val = label end elseif v.mainsnak.datavalue.type == 'string' then -- type is string if val then val = val .. ', ' .. v.mainsnak.datavalue.value else val = v.mainsnak.datavalue.value end elseif v.mainsnak.datavalue.type == 'globecoordinate' then -- type is globecoordinate - do this later if val then val = val .. ', ' .. 'globecoordinate' else val = 'globecoordinate' end elseif v.mainsnak.datavalue.type == 'time' then -- type is time - do this later if val then val = val .. ', ' .. 'time' else val = 'time' end elseif v.mainsnak.datavalue.type == 'quantity' then -- type is quantity local quant = entity:formatPropertyValues(propertyID, mw.wikibase.entity.claimRanks).value quant = mw.ustring.gsub(quant, "(%d),(%d)", "%1%2") -- remove thousands separators if val then val = val .. ', ' .. quant else val = quant end else -- type is not known (to be dealt with later) if val then val = val .. ', ' .. 'unknown' else val = 'unknown' end end else -- mainsnaktype is unknown value or novalue if val then val = val .. ', noval' else val= 'noval' end end end -- next k,v return val else -- no props return "" end else -- wikidata value not required so return local value return input_parm end end -- {{#invoke:Sandbox/RexxS/Concat|getDescription|FETCH_WIKIDATA|en}} -- {{#invoke:Sandbox/RexxS/Concat|getDescription|FETCH_WIKIDATA}} p.getDescription = function(frame) local input_parm = mw.text.trim(frame.args[1] or "") local lang = mw.text.trim(frame.args[2] or mw.language.getContentLanguage().code) -- if language code not supplied, use lang code local to this wiki if input_parm == "FETCH_WIKIDATA" then local entity = mw.wikibase.getEntityObject() local desc = entity.descriptions[lang] -- check this exists to avoid index nul error if desc then return mw.ustring.upper(mw.ustring.sub(desc.value, 1, 1)) .. mw.ustring.sub(desc.value, 2) else -- no description in given language return "" end else -- wikidata value not required so return local value return input_parm end end return p
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Sandbox/RexxS/Concat/doc
(
edit
)