Module:GroupNameVariations

From The Seven Sages of Rome

This module retrieves name variations associated with a given narrator from Semantic MediaWiki.

Usage

The module can be invoked using #invoke in a template or wiki page.

Parameters

The first unnamed parameter specifies the narrator's name whose name variations should be retrieved.

Behavior

The module queries Semantic MediaWiki for Has Name Variation properties associated with the specified Has Narrator value.

If no results are found, it returns "(no values)".

If multiple results are found, they are concatenated into a list separated by commas, with and before the last item.

Example Output

If NarratorName has the following data in Semantic MediaWiki:

Has Name Variation = John Doe

Has Name Variation = J. Doe

Has Name Variation = Jonathan D.

Then the module will return:

John Doe, J. Doe and Jonathan D.

Notes

The module relies on Semantic MediaWiki (mw.smw.ask).

If the query returns no results, (no values) is displayed.

The function groupMessages is defined but not used in this module.


-- Module:SMW
local p = {}

-- Return results
function p.ask(frame)
	local queryResult = mw.smw.ask( string.format('[[Has Narrator::%s]][[Has Name Variation::+]]|?Has Name Variation', frame.args[1]) )
	   if queryResult == nil then
        return "(no values)"
    end

    if type( queryResult ) == "table" then
        local myResult = ""
        for num, row in pairs( queryResult ) do
            for property, data in pairs( row ) do
                local dataOutput = data
                if type( data ) == 'table' then
                    dataOutput = mw.text.listToText( data, ', ', ' and ')
                end
                myResult = myResult .. dataOutput .. '\n'
            end
        end
        return myResult
    end
end

function groupMessages(array)
    local result = {};
    for k, v in ipairs(array) do
        if not result[v.sender] then
            result[v.sender] = {};
        end

        table.insert(result[v.sender], v);
    end

   return result;
end

return p