Module:Declension

提供: VANGUARD FLIGHT wiki
2014年3月30日 (日) 23:14時点におけるTaku.oshino (トーク | 投稿記録)による版 (1版)

(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索
このモジュールについての説明文ページを Module:Declension/doc に作成できます
local p = {}

local langlist = {
	pl = { -- polish 
		adjective = {                     -- Declension of Regular adjectives / Deklinacja Przymiotnikow regularnych
			singular = {                  -- Number: singular  / Liczba pojedyncza
				N = { 'y', 'a', 'e'},     -- nominative: masculine, singular, neutral / mianownik  , rodzaj: męski, żenski, nijaki (np. zielonY chlopiec, zielonA dziewczynka, zielonE dziecko)
				L = {'ym', 'ej', 'ym'}    -- locative  : masculine, singular, neutral / miejscownik, rodzaj: męski, żenski, nijaki (np. na zielonYM chlopiecu, na zielonEJ dziewczynce, na zielonym dziecku)
				},
			plural = {                    -- Number: plural  / Liczba mnoga
				N = {'i', 'e', 'e' },     -- nominative: masculine, singular, neutral / mianownik  , rodzaj: męski, żenski, nijaki (np. zielonI chlopiecy, zielonE dziewczynki, zielonE dzieci)
				L = {'ych', 'ych', 'ych'} -- locative  : masculine, singular, neutral / miejscownik, rodzaj: męski, żenski, nijaki (np. na zielonI chlopiecy, na zielonYCH dziewczynkach, na zielonYCH dzieciach)
			}
		}
	}		
}

function p.makeregular(lang, word, wordtype, number, gender, case)
	if wordtype == "adj" then
		wordtype = 'adjective'
	end
	if gender == 'm' or 'masc' or 'masculine' then 
		gender = 1
	elseif gender == 'f' or 'fem' or 'feminine' then
		gender = 2
	elseif gender == 'n' or 'neutral' then 
		gender = 3
	else 
		return 'unsupported gender'
	end
	
	
	if number == "p" then
		number = "plural"
	end
	if number == "sing" or number == "s" or not number then
		number = "singular"
	end
	
	if not case then
		case = 'N'
	end
	
	-- clip endings 
	if lang == 'pl' then 
		if wordtype == 'adjective' then -- clip "y" at the end
			if mw.ustring.sub(word, mw.ustring.len(word), mw.ustring.len(word)) == 'y' -- use string libraries ?
				then word = mw.ustring.sub(word, 1, mw.ustring.len(word)-1)
			end
		end
	end
	
	return word .. langlist[lang][wordtype][number][case][gender]
end

return p