Module:Wikidata: Difference between revisions

From Random Island Wiki
Jump to navigation Jump to search
>RexxS
(it wants a number (i.e. time))
>RexxS
(add date format parameter)
Line 80: Line 80:
     local propertyID = mw.text.trim(frame.args[1] or "")
     local propertyID = mw.text.trim(frame.args[1] or "")
     local input_parm = mw.text.trim(frame.args[2] or "")
     local input_parm = mw.text.trim(frame.args[2] or "")
    local date_format = mw.text.trim(frame.args[3] or "dmy")
     if input_parm == "FETCH_WIKIDATA" then
     if input_parm == "FETCH_WIKIDATA" then
         local entity = mw.wikibase.getEntity()
         local entity = mw.wikibase.getEntity()
Line 90: Line 91:
                 dt.month = string.sub(d, 14, 15)
                 dt.month = string.sub(d, 14, 15)
                 dt.day = string.sub(d, 17, 18)
                 dt.day = string.sub(d, 17, 18)
                 out[#out + 1] = os.date("%e %B %Y", os.time(dt))
                 if date_format == "dmy" then
                    out[#out + 1] = os.date("%e %B %Y", os.time(dt))
                else
                    out[#out + 1] = os.date("%B %e, %Y", os.time(dt))
                end
             end
             end
             return table.concat(out, ", ")
             return table.concat(out, ", ")

Revision as of 09:15, 27 August 2013

Documentation for this module may be created at Module:Wikidata/doc

local p = {}

p.getSpouse = function(frame)
    local input_parm = mw.text.trim(frame.args[1] or "")
    if input_parm == "FETCH_WIKIDATA" then
        local entity = mw.wikibase.getEntity()
        if entity.claims.p26 ~= nil then
            local out = {}
            for k, v in pairs(entity.claims.p26) do
                out[#out + 1] = "[[" .. mw.wikibase.sitelink("Q" .. v.mainsnak.datavalue.value["numeric-id"]) .. "]]"
            end
            return table.concat(out, ", ")
        else
            return ""
        end
    else
        return input_parm
    end
end

p.getBirthPlace = function(frame)
    local input_parm = mw.text.trim(frame.args[1] or "")
    if input_parm == "FETCH_WIKIDATA" then
        local entity = mw.wikibase.getEntity()
        if entity.claims.p19 ~= nil then
            local out = {}
            for k, v in pairs(entity.claims.p19) do
                out[#out + 1] = "[[" .. mw.wikibase.sitelink("Q" .. v.mainsnak.datavalue.value["numeric-id"]) .. "]]"
            end
            return table.concat(out, ", ")
        else
            return ""
        end
    else
        return input_parm
    end
end

p.getValue = 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.getEntity()
        if entity.claims[propertyID] ~= nil then
            local out = {}
            for k, v in pairs(entity.claims[propertyID]) do
                out[#out + 1] = "[[" .. mw.wikibase.sitelink("Q" .. v.mainsnak.datavalue.value["numeric-id"]) .. "]]"
            end
            return table.concat(out, ", ")
        else
            return ""
        end
    else
        return input_parm
    end
end

-- This is used to get a value like 'male' (for property p21) which won't be linked
p.getRawValue = 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.getEntity()
        if entity.claims[propertyID] ~= nil then
            local out = {}
            for k, v in pairs(entity.claims[propertyID]) do
                out[#out + 1] = mw.wikibase.label("Q" .. v.mainsnak.datavalue.value["numeric-id"])
            end
            return table.concat(out, ", ")
        else
            return ""
        end
    else
        return input_parm
    end
end

-- This is used to get a date value for date_of_birth (p569), etc. which won't be linked -- consolidate by testing if entity.claims[propertyID].mainsnak.datavalue.type is "time"
p.getDateValue = function(frame)
    local propertyID = mw.text.trim(frame.args[1] or "")
    local input_parm = mw.text.trim(frame.args[2] or "")
    local date_format = mw.text.trim(frame.args[3] or "dmy")
    if input_parm == "FETCH_WIKIDATA" then
        local entity = mw.wikibase.getEntity()
        if entity.claims[propertyID] ~= nil then
            local out = {}
            local dt = {}
            for k, v in pairs(entity.claims[propertyID]) do
                local d = v.mainsnak.datavalue.value.time
                dt.year = string.sub(d, 9, 12)
                dt.month = string.sub(d, 14, 15)
                dt.day = string.sub(d, 17, 18)
                if date_format == "dmy" then
                    out[#out + 1] = os.date("%e %B %Y", os.time(dt))
                else
                    out[#out + 1] = os.date("%B %e, %Y", os.time(dt))
                end
            end
            return table.concat(out, ", ")
        else
            return ""
        end
    else
        return input_parm
    end
end

return p