Module:etymology-only languages, csv format

From Wiktionary, the free dictionary
Jump to navigation Jump to search
This module needs documentation.
Please document this module by describing its purpose and usage on the documentation page.

This module complements Module:list of languages, csv format to include Etymology-only languages. It generates the list at Wiktionary:Etymology-only languages, csv format.

Beta: Columns subject to change.


local languages = require("Module:languages/data/all")
local families = require("Module:families/data")
local etym_data = require('Module:etymology_languages/data')

-- based on Module:list_of_languages

local export = {}

function export.show(frame)
    local rows = {}

    local codes_list = {}
    local items = {}

    for code, data in pairs(etym_data) do
        if not codes_list[data] then
            codes_list[data] = {}
            table.insert(items, data)
        end
        table.insert(codes_list[data], code)
    end

    table.sort(items, function (apple, orange)
            return apple[1] < orange[1]
        end)

    local function make_parent_link(code)
        if languages[code] then
            return (languages[code][1])
        elseif families[code] then
            return (families[code][1])
        elseif etym_data[code] then
            return (etym_data[code][1])
        elseif code then
            return '<code>' .. code .. '</code>'
        else
            return '[missing]'
        end
    end

    local sep = ";"
    local minor_sep = ","

    local column_names = "line" ..sep.. "code" ..sep.. "canonical name" ..sep..
        "parent" ..sep.. "other names"

    for line, data in ipairs(items) do
        local codes = codes_list[data]

        table.sort(codes)

        local row = {}

        table.insert(row, line)
        table.insert(row, table.concat(codes, minor_sep))
        table.insert(row, data[1])
        table.insert(row, make_parent_link(data[3]))
        table.insert(row, data.otherNames and table.concat(data.otherNames, minor_sep) or "")
        
        table.insert(rows, table.concat(row, sep))
    end
    return "<pre>\n" .. column_names .. "\n" .. table.concat(rows, "\n") .. "</pre>"
end

return export