Siirry sisältöön

Moduuli:Ety/taulukot

Wikisanakirjasta

Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:Ety/taulukot/ohje

local etykielet = {
    ['baltt'] = {
        "balttilainen kielimuoto",
        "balttilaisen kielimuodon",
        "balttilaista kielimuotoa",
    },
    ['germ'] = {
        "kantagermaani",
        "kantagermaanin",
        "kantagermaania",
    },
    ['ieur'] = {
        "indoeurooppalainen kantakieli",
        "indoeurooppalaisen kantakielen",
        "indoeurooppalaista kantakieltä",
    },
    ['kantaurali'] = {
        "kantaurali",
        "kantauralin",
        "kantauralia",
    },
    ['klat'] = {
        "keskilatina",
        "keskilatinan",
        "keskilatinaa",
    },
    ['*ksm'] = {
        "kantasuomi",
        "kantasuomen",
        "kantasuomea",
    },
    ['vksm'] = {
        "varhaiskantasuomi",
        "varhaiskantasuomen",
        "varhaiskantasuomea",
    },
    ['mksm'] = {
        "myöhäiskantasuomi",
        "myöhäiskantasuomen",
        "myöhäiskantasuomea",
    },
    ['*ims'] = {
        "itämerensuomi",
        "itämerensuomen",
        "itämerensuomea",
    },
    ['+mr'] = {
        "muinaisruotsi",
        "muinaisruotsin",
        "muinaisruotsia",
    },
    ['skand'] = {
        "kantaskandinaavi",
        "kantaskandinaavin",
        "kantaskandinaavia",
    },
    ['*kas'] = {
        "keskialasaksa",
        "keskialasaksan",
        "keskialasaksaa",
    },
    ['*kys'] = {
        "keskiyläsaksa",
        "keskiyläsaksan",
        "keskiyläsaksaa",
    },
    ['*vur'] = {
        "varhaisempi uusruotsi",
        "varhaisemman uusruotsin",
        "varhaisempaa uusruotsia",
    },
}


-- Kielikoodit ovat aina kaksi tai kolme kirjainta pitkiä. Muiden merkintöjen 
-- pitää olla aina vähintään neljä merkkiä.
local kielipuu = {
    ['ieur'] = { -- indoeurooppalainen
        ['la'] = { -- latina
        	'ca', --katalaani
            'es', --espanja
            ['fro'] = { -- muinaisranska
            	'fr', -- ranska
            },
            'it', -- italia
            'pt', -- portugali
            'ro', -- romania
            'sc', -- sardi
        },
        ['germ'] = { -- germaaninen
        	['*kys'] = { -- keskiyläsaksa
            	'de', -- saksa
            },
            ['ang'] = { -- muinaisenglanti
            	'en', -- englanti
            },
            ['skand'] = { -- skandinaavinen
                'da', -- tanska
                'no', -- norja
                ['*mr'] = { -- muinaisruotsi
                	'sv',-- ruotsi
				},
            }
        }
    },
    ['kantaurali'] = { -- uralilainen kantakieli
    	['*ksm'] = { -- kantasuomi
    		['vksm'] = { -- myöhäiskantasuomi
    			['mksm'] = { -- myöhäiskantasuomi
	    			['*ims'] = { -- itämerensuomi
    	    			'et', -- viro
        				'fi', -- suomi
        				'krl', -- karjala
        				'vot', -- vatja
        				'vep', -- vepsä
        				'ink', -- inkeroinen
        				'lud', -- lyydi
        				'liv', -- liivi
        			},
        		},
        		'sme', -- pohjoissaame
        	},
        },
    },
}




--------------------------------------------------------------------------------

local function clone_and_append(orig, value)
    local copy = {}

    for k, v in pairs(orig) do
        copy[k] = v
    end

    table.insert(copy, value)

    return copy
end


local function print_path(path)
    print("[ " .. table.concat(path, ", ") .. " ]")
end


local function create_descendant_table()
    local descs = {}

    local function traverse(subtree, path)
        for key, val in pairs(subtree) do
            if type(val) == "table" then
                traverse(val, clone_and_append(path, key))
            elseif type(val) == "string" then
                for _, ancestor in ipairs(path) do
                    descs[val .. ":" .. ancestor] = "true"
                end
            end
        end

    end


    for key, val in pairs(kielipuu) do
        traverse(val, { key })
    end

    return descs
end


return {
    ['etykielet'] = etykielet,
    ['sukulaisuudet'] = create_descendant_table(),

}