ผู้ใช้:ZilentFyld/creatrule.js

จาก วิกิพจนานุกรม พจนานุกรมเสรี

หมายเหตุ: หลังเผยแพร่ คุณอาจต้องล้างแคชเว็บเบราว์เซอร์ของคุณเพื่อดูการเปลี่ยนแปลง

  • ไฟร์ฟอกซ์ / ซาฟารี: กด Shift ค้างขณะคลิก Reload หรือกด Ctrl-F5 หรือ Ctrl-R (⌘-R บนแมค)
  • กูเกิล โครม: กด Ctrl-Shift-R (⌘-Shift-R บนแมค)
  • อินเทอร์เน็ตเอกซ์พลอเรอร์ และ Edge: กด Ctrl ค้างขณะคลิก Refresh หรือกด Ctrl-F5
  • โอเปร่า: กด Ctrl-F5
//<br />
//<nowiki>This prevents the parser from processing the file and generating transclusions and categories for it.

/*
 * Language-specific entry generation rules for form-of entries, generated by [[WT:ACCEL]].
 * 
 * Each function has two parameters.
 * params holds the parameters given in the template.
 * entry holds the various parts of the entry to be created.
 * 
 * The function's task is to provide new values for some of the parts of the new entry.
 * In most cases, entry.def (the definition line) will be overridden, but the headword (entry.head)
 * or even the part-of-speech or language headers can be overridden if necessary.
 * 
 * If the function is not able to handle the current form for whatever reason, throw an exception:
 * throw new PreloadTextError();
 */

window.creation_rules = window.creation_rules || {};

// Generate the entry's text
window.generate_entry = function (params)
{
	try
	{
		var param = params.lang;
		
		if (!creation_rules[param])
			param = 'others';
		
		if (params.pos == 'cardinal number' || params.pos == 'ordinal number')
			pos = 'numeral';
		else
			pos = params.pos;
		
		var entry = {
			pronunc: null,
			pos_header: params.pos.charAt(0).toUpperCase() + params.pos.substr(1),
			head: '{{head|' + params.lang + '|รูปผัน' + pos + (params.target != params.target_pagename ? '|head=' + params.target : '') + (params.transliteration ? ('|tr=' + params.transliteration) : '') + '}}',
			def: null,
			inflection: null,
			declension: null,
			conjugation: null };
		
		creation_rules[param](params, entry);
		
		return entry;
	}
	catch (e)
	{
		if (e instanceof PreloadTextError)
		{
			console.log(e.message);
			return false;
		}
		else
		{
			throw e;
		}
	}
};

//Dutch
creation_rules['nl'] =
	function (params, entry)
	{
		switch (params.form)
		{
			case 'plural':
				entry.head = '{{head|nl|รูปผันคำนามพหูพจน์}}';
				entry.def = '{{plural of|' + params.origin + '|lang=nl}}';
				break;
			case 'diminutive':
				entry.head = '{{nl-noun-dim}}';
				entry.def = '{{diminutive of|' + params.origin + '|lang=nl}}';
				break;
			default:
				throw new PreloadTextError('No rule for "' + params.form + '" in language "' + params.lang + '".');
		}
	};


// English
creation_rules['en'] =
	function (params, entry)
	{
		switch (params.form)
		{
			case 'comparative':
				entry.head = '{{head|' + params.lang + '|รูปผันคำกริยา}}';
				entry.def = '{{en-comparative of|' + params.origin + (params.pos != 'adjective' ? '|POS=' + params.pos : '') + '}}';
				break;
			case 'superlative':
				entry.head = '{{head|' + params.lang + '|รูปผันคำกริยา}}';
				entry.def = '{{en-superlative of|' + params.origin + (params.pos != 'adjective' ? '|POS=' + params.pos : '') + '}}';
				break;
			case 'third-person-singular':
				entry.head = '{{head|' + params.lang + '|รูปผันคำกริยา}}';
				entry.def = '{{infl of|en|' + params.origin + '||s-verb-form}}';
				break;
			case 'present-participle':
				entry.head = '{{head|' + params.lang + '|รูปผันคำกริยา}}';
				entry.def = '{{infl of|en|' + params.origin + '||ing-form}}';
				break;
			case 'simple-past':
				entry.head = '{{head|' + params.lang + '|รูปผันคำกริยา}}';
				entry.def = '{{infl of|en|' + params.origin + '||spart}}';
				break;
			case 'simple-past-and-participle':
				entry.head = '{{head|' + params.lang + '|รูปผันคำกริยา}}';
				entry.def = '{{infl of|en|' + params.origin + '||ed-form}}';
				break;
			case 'past-participle':
				entry.head = '{{head|' + params.lang + '|รูปผันคำกริยา}}';
				entry.def = '{{infl of|en|' + params.origin + '|past|part}}';
				break;
			case 'plural':
				entry.head = '{{head|' + params.lang + '|รูปผันคำนามพหูพจน์}}';
				entry.def = '{{plural of|' + params.origin + '|lang=' + params.lang + '}}';
				break;
			case 'proper-noun-plural':
				entry.head = '{{head|' + params.lang + '|รูปผันคำวิสามานยนาม}}';
				entry.def = '{{plural of|' + params.origin + '|lang=' + params.lang + '}}';
				break;
			default:
				throw new PreloadTextError('No rule for "' + params.form + '" in language "' + params.lang + '".');
		}
	};

//Esperanto
// Esperanto
creation_rules['eo'] =
	function (params, entry)
	{
		var index = params.origin.indexOf(' de ');
		var word = (index != -1)? params.origin.substr(0, index) : params.origin;
		var stem = word.substr(0, word.length - 1);
		var ending = word.substr(word.length - 1);
		
		if (ending == 'j'){
			stem = 'original=' + params.origin + '|';
			ending = word.substr(word.length - 2, 1);
		}
		
		if (index != -1)
			stem = 'original=' + params.origin + '|';
		
		if (ending != 'o' && ending != 'a' && ending != 'i')
			throw new PreloadTextError('The Esperanto word "' + params.origin + '" does not end in -o or -a or -i or -oj or -aj (index = ' + index + ', word = ' + word + ', stem = ' + stem + ', ending = ' + ending + ').');

		if (ending == 'i')
			ending = '';
		
		var formparam = {
			'uncountable-accusative':'n|unc=yes',
			'plural'                :'j' + (params.pos == 'proper noun' ? '-proper' : ''),
			'accusative'            :'n' + (params.pos == 'proper noun' ? '-properpl' : ''),
			'accusative-plural'     :'jn' + (params.pos == 'proper noun' ? '-properpl' : ''),
			'present'               :'as',
			'past'                  :'is',
			'future'                :'os',
			'conditional'           :'us',
			'volitive'              :'u',
		};
		
		var inflection = formparam[params.form];
		if (!inflection)
			inflection = params.form
		
		if (params.pos != 'proper noun')
			entry.head = '{{eo-head}}';
		
		// if inflection:match("^[aio]n?t[aeo]$") then
		if( inflection.length > 0 && ((inflection.charAt(0) == 'a') || (inflection.charAt(0) == 'i') || (inflection.charAt(0) == 'o')) ){
			if( inflection.length > 1 && ((inflection.charAt(1) == 'n')) ){
				if( inflection.length > 2 && ((inflection.charAt(2) == 't')) ){
					if( inflection.length > 3 && ((inflection.charAt(3) == 'a') || (inflection.charAt(3) == 'e') || (inflection.charAt(3) == 'o')) ){
						switch(inflection.charAt(3)){
							case 'a':
								entry.pos_header = 'คำคุณศัพท์';
								break;
							case 'e':
								entry.pos_header = 'คำกริยาวิเศษณ์';
								break;
							case 'o':
								entry.pos_header = 'คำนาม';
								break;
						}
						entry.head = '{{eo-part}}';
						// elseif inflection:match("^[aio]n?t[aeo]j?n?$") then
						if( inflection.length > 4 && ((inflection.charAt(4) == 'j'))){
							if( inflection.length > 5 && ((inflection.charAt(5) == 'n'))){
								entry.head = '{{eo-part-form}}';
							}else if( inflection.length == 5 ){
								entry.head = '{{eo-part-form}}';
							}
						}else if( inflection.length > 4 && ((inflection.charAt(4) == 'n'))){
							entry.head = '{{eo-part-form}}';
						}
					}
				}
			}else{
				if( inflection.length > 1 && ((inflection.charAt(1) == 't')) ){
					if( inflection.length > 2 && ((inflection.charAt(2) == 'a') || (inflection.charAt(2) == 'e') || (inflection.charAt(2) == 'o')) ){
						switch(inflection.charAt(2)){
							case 'a':
								entry.pos_header = 'คำคุณศัพทื';
								break;
							case 'e':
								entry.pos_header = 'คำกริยาวิเศษณ์';
								break;
							case 'o':
								entry.pos_header = 'คำนาม';
								break;
						}
						entry.head = '{{eo-part}}';
						// elseif inflection:match("^[aio]n?t[aeo]j?n?$") then
						if( inflection.length > 3 && ((inflection.charAt(3) == 'j'))){
							if( inflection.length > 4 && ((inflection.charAt(4) == 'n'))){
								entry.head = '{{eo-part-form}}';
							}else if( inflection.length == 4 ){
								entry.head = '{{eo-part-form}}';
							}
						}else if( inflection.length > 3 && ((inflection.charAt(3) == 'n'))){
							entry.head = '{{eo-part-form}}';
						}
					}
				}
			}
		}
		
		entry.pronunc = '{{eo-IPA}}';
		entry.def = '{{eo-form of|' + stem + '|' + ending + inflection + '}}';
	};

// Greek
creation_rules['el'] =
	function (params, entry)
	{
		switch (params.form)
		{
			case 'nom-singular':
				entry.def = '{{inflection of|' + params.origin + '||nom|s|lang=el}}';
				break;
			case 'nom-plural':
				entry.def = '{{inflection of|' + params.origin + '||nom|p|lang=el}}';
				break;
			case 'gen-singular':
				entry.def = '{{inflection of|' + params.origin + '||gen|s|lang=el}}';
				break;
			case 'gen-plural':
				entry.def = '{{inflection of|' + params.origin + '||gen|p|lang=el}}';
				break;
			case 'acc-singular':
				entry.def = '{{inflection of|' + params.origin + '||acc|s|lang=el}}';
				break;
			case 'acc-plural':
				entry.def = '{{inflection of|' + params.origin + '||acc|p|lang=el}}';
				break;
			case 'voc-singular':
				entry.def = '{{inflection of|' + params.origin + '||voc|s|lang=el}}';
				break;
			case 'voc-plural':
				entry.def = '{{inflection of|' + params.origin + '||voc|p|lang=el}}';
				break;
			default:
				entry.head = '{{head|' + params.lang + '|รูปผันคำนาม}}';
				throw new PreloadTextError('No rule for "' + params.form + '" in language "' + params.lang + '".');
		}
	};
/*
// German 
creation_rules['de'] =
	function (params, entry)
	{
		var headparam = {};
		var formparam = {
			'plural':'nom|pl',
			'genitive':'gen|s',
			'genitive-plural':'gen|p',
			'dative':'dat|s',
			'dative-plural':'dat|p',
			'accusative':'acc|s',
			'accusative-plural':'acc|p',
			'pres-part':'pres|part'};

		switch (params.form)
		{
			case 'plural' || 'genitive' || 'genitive-plural' || 'dative' || 'dative-plural' || 'accusative' || 'accusative-plural':
				entry.head = '{{head|' + params.lang + '|รูปผันคำนาม}}';
				entry.def = '{{inflection of|' + params.origin + '||' + formparam[params.form] + '|lang=de}}';
				break;
			case 'pres-part':
				entry.head = '{{head|' + params.lang + '|รูปผันคำกริยา}}';
				entry.def = '{{inflection of|' + params.origin + '||' + formparam[params.form] + '|lang=de}}';
				break;
		}
	};
*/

// French
creation_rules['fr'] =
	function (params, entry)
	{
		
		var change = {
			'f|s':'s|f',
			'm|p':'p|m',
			'f|p':'p|f',
			'plural':'p'
		}
		
		if (params.pos == 'คำนาม' && params.form == 'plural')
			entry.head = '{{head|' + params.lang + '|รูปผันคำนามพหูพจน์}}';
		
		entry.def = '{{inflection of|'+params.lang+'|' + params.origin + '||' + change[params.form] +'}}';
	};

// Finnish
creation_rules['fi'] =
	function (params, entry)
	{
		var headparam = {};
		var formparam = {
			'plural-nominative':'nom|p',
			'singular-genitive':'gen|s',
			'plural-genitive':'gen|p',
			'singular-partitive':'par|s',
			'plural-partitive':'par|p',
			'singular-inessive':'ine|s',
			'plural-inessive':'ine|p',
			'singular-elative':'ela|s',
			'plural-elative':'ela|p',
			'singular-illative':'ill|s',
			'plural-illative':'ill|p',
			'singular-adessive':'ade|s',
			'plural-adessive':'ade|p',
			'singular-ablative':'abl|s',
			'plural-ablative':'abl|p',
			'singular-allative':'all|s',
			'plural-allative':'all|p',
			'singular-essive':'ess|s',
			'plural-essive':'ess|p',
			'singular-translative':'tra|s',
			'plural-translative':'tra|p',
			'plural-instructive':'ins|p',
			'plural-comitative':'com|p', 
			'singular-abessive':'abe|s',
			'plural-abessive':'abe|p'};

		if (!formparam[params.form])
			throw new PreloadTextError('No rule for "' + params.form + '" in language "' + params.lang + '".');
		
        entry.pronunc = '{{fi-pronunciation}}'
        entry.head = '{{head|' + params.lang + '|' + (headparam[params.form] || 'รูปผันคำนาม') + '}}';
		entry.def = '{{inflection of|' + params.origin + '||' + formparam[params.form] + '|lang=fi}}';
	};
// Icelandic
creation_rules['is'] =
	function (params, entry)
	{
		var headparam = {};
		var formparam = {
			'noms':'nom|s|indf',
			'nomsd':'nom|s|defn',
			'nomp':'nom|p|indf',
			'nompd':'nom|p|defn',
			'accs':'acc|s|indf',
			'accsd':'acc|s|defn',
			'accp':'acc|p|indf',
			'accpd':'acc|p|defn',
			'dats':'dat|s|indf',
			'datsd':'dat|s|defn',
			'datp':'dat|p|indf',
			'datpd':'dat|p|defn',
			'gens':'gen|s|indf',
			'gensd':'gen|s|defn',
			'genp':'gen|p|indf',
			'genpd':'gen|p|defn'};

		if (!formparam[params.form])
			throw new PreloadTextError('No rule for "' + params.form + '" in language "' + params.lang + '".');
		
        entry.head = '{{head|' + params.lang + '|' + (headparam[params.form] || 'รูปผันคำนาม') + '}}';
		entry.def = '{{inflection of|' + params.origin + '||' + formparam[params.form] + '|lang=' + params.lang  + '}}';
	};
// Japanese
creation_rules['ja'] =
	function (params, entry)
	{
		switch (params.form)
		{
			case 'romanized':
				entry.head = '{{' + params.lang + '-romaji}}';
				entry.def = '{{ja-romanization of|' + params.origin + '}}';
				break;
			case 'kana-คำนา�':
				entry.head = '{{' + params.lang + '-noun}}';
				entry.def = '{{ja-def|' + params.origin + '}} ';
				break;
			case 'kana-คำกริย�':
				entry.head = '{{' + params.lang + '-noun}}';
				entry.def = '{{ja-def|' + params.origin + '}} ';
				break;
			default:
				throw new PreloadTextError('No rule for "' + params.form + '" in language "' + params.lang + '".');
		}
	};
//Latin
creation_rules['la'] =
	function (params, entry)
	{
		entry.pronunc= '* {{la-IPA|'+params.target+'}}'

		params.form = params.form.replace(/-/g, ' ');
		params.form += ' of';
		
		entry.def = '{{' + params.form + '|' + params.origin + '|lang=' + params.lang + '}}';
	};
// Polish
creation_rules['pl'] =
	function (params, entry)
	{
		var headparam = {};
		var formparam = {
			'noms':'nom|s',
			'nomp':'nom|p',
			'gens':'gen|s',
			'genp':'gen|p',
			'dats':'dat|s',
			'datp':'dat|p',
			'accs':'acc|s',
			'accp':'acc|p',
			'inss':'ins|s',
			'insp':'ins|p',
			'locs':'loc|s',
			'locp':'loc|p',
			'vocs':'voc|s',
			'vocp':'voc|p',};

		if (!formparam[params.form])
			throw new PreloadTextError('No rule for "' + params.form + '" in language "' + params.lang + '".');
		
		entry.pronunc = '* {{pl-IPA}}'
        entry.head = '{{head|' + params.lang + '|' + (headparam[params.form] || 'รูปผันคำนาม') + '}}';
		entry.def = '{{inflection of|' + params.origin + '||' + formparam[params.form] + '|lang=' + params.lang + '}}';
	};
// Romanian
creation_rules['ro'] =
	function (params, entry)
	{
		var headparam = {};
		var formparam = {
			'nsi':'nom|and|acc|s|indf',
			'nsd':'nom|and|acc|s|defn',
			'npi':'nom|and|acc|p|indf',
			'npd':'nom|and|acc|p|defn',
			'gsi':'gen|and|dat|s|indf',
			'gsd':'gen|and|dat|s|defn',
			'gpi':'gen|and|dat|p|indf',
			'gpd':'gen|and|dat|p|defn',
			'vs':'voc|s',
			'vp':'voc|p'};

		if (!formparam[params.form])
			throw new PreloadTextError('No rule for "' + params.form + '" in language "' + params.lang + '".');
		
        entry.head = '{{head|' + params.lang + '|' + (headparam[params.form] || 'รูปผันคำนาม') + '}}';
		entry.def = '{{inflection of|' + params.origin + '||' + formparam[params.form] + '|lang=' + params.lang + '}}';
	};
// Russian
creation_rules['ru'] =
	function (params, entry)
	{
		var headparam = {};
		var formparam = {
			'nom-s':'nom|s',
			'nom-p':'nom|p',
			'gen-s':'gen|s',
			'gen-p':'gen|p',
			'dat-s':'dat|s',
			'dat-p':'dat|p',
			'acc-s':'acc|s',
			'acc-p':'acc|p',
			'acc-s-an':'acc|s|an',
			'acc-p-an':'acc|p|an',
			'acc-s-inan':'acc|s|in',
			'acc-p-inan':'acc|p|in',
			'ins-s':'ins|s',
			'ins-p':'ins|p',
			'pre-s':'pre|s',
			'pre-p':'pre|p'};

		if (!formparam[params.form])
			throw new PreloadTextError('No rule for "' + params.form + '" in language "' + params.lang + '".');
		
        entry.head = '{{head|' + params.lang + '|' + (headparam[params.form] || 'รูปผันคำนาม') + '}}';
		entry.def = '{{inflection of|' + params.origin + '||' + formparam[params.form] + '|lang=ru}}';
	};
// Serbo-Croatian
creation_rules['sh'] =
	function (params, entry)
	{
		var headparam = {};
		var formparam = {
			'nom-s':'nom|s',
			'nom-p':'nom|p',
			'gen-s':'gen|s',
			'gen-p':'gen|p',
			'dat-s':'dat|s',
			'dat-p':'dat|p',
			'acc-s':'acc|s',
			'acc-p':'acc|p',
			'ins-s':'ins|s',
			'ins-p':'ins|p',
			'loc-s':'loc|s',
			'loc-p':'loc|p',
			'voc-s':'voc|s',
			'voc-p':'voc|p',};

		if (!formparam[params.form])
			throw new PreloadTextError('No rule for "' + params.form + '" in language "' + params.lang + '".');
		
        entry.head = '{{head|' + params.lang + '|' + (headparam[params.form] || 'รูปผันคำนาม') + '}}';
		entry.def = '{{inflection of|' + params.origin + '||' + formparam[params.form] + '|lang=sh}}';
	};
// Swedish
creation_rules['sv'] =
	function (params, entry)
	{
		var headparam = {};
		var formparam = {
			'sv-indf-nom-sg':'nom|s|indf',
			'sv-defn-nom-sg':'nom|s|defn',
			'sv-indf-nom-pl':'nom|p|indf',
			'sv-defn-nom-pl':'nom|p|defn',
			'sv-indf-gen-sg':'gen|s|indf',
			'sv-defn-gen-sg':'gen|s|defn',
			'sv-indf-gen-pl':'gen|p|indf',
			'sv-defn-gen-pl':'gen|p|defn'};

		if (!formparam[params.form])
			throw new PreloadTextError('No rule for "' + params.form + '" in language "' + params.lang + '".');
		
        entry.head = '{{head|' + params.lang + '|' + (headparam[params.form] || 'รูปผันคำนาม') + '}}';
		entry.def = '{{inflection of|' + params.origin + '||' + formparam[params.form] + '|lang=sv}}';
	};
// Southern Thai
creation_rules['sou'] =
	function (params, entry)
	{
		switch (params.form)
		{
			case 'abstract-noun':
				entry.pos_header = 'คำอาการนาม';
				entry.etym = '{{อุปสรรค|' + params.lang + '|ก่าน|' + params.origin + '}}';
				entry.head = '{{' + params.lang + '-noun}}';
				entry.def = '{{abstract noun of|' + params.origin + '|lang=' + params.lang + '}}';
				break;
			case 'abstract-noun-adj':
				entry.pos_header = 'คำอาการนาม';
				entry.etym = '{{อุปสรรค|' + params.lang + '|ขว่าม|' + params.origin + '}}';
				entry.head = '{{' + params.lang + '-noun}}';
				entry.def = '{{abstract noun of|' + params.origin + '|lang=' + params.lang + '}}';
				break;
			default:
				throw new PreloadTextError('No rule for "' + params.form + '" in language "' + params.lang + '".');
		}
	};
// Hungarian
creation_rules['hu'] =
	function (params, entry)
	{
		var headparam = {};
		var formparam = {
			'nominative-plural':'nom|p',
			'accusative-singular':'acc|s',
			'accusative-plural':'acc|p',
			'dative-singular':'dat|s',
			'dative-plural':'dat|p',
			'instrumental-singular':'ins|s',
			'instrumental-plural':'ins|p',
			'causal-final-singular':'cfin|s',
			'causal-final-plural':'cfin|p',
			'translative-singular':'tra|s',
			'translative-plural':'tra|p',
			'terminative-singular':'ter|s',
			'terminative-plural':'ter|p',
			'essive-formal-singular':'efor|s',
			'essive-formal-plural':'efor|p',
			'essive-modal-singular':'emod|s',
			'essive-modal-plural':'emod|p',
			'inessive-singular':'ine|s',
			'inessive-plural':'ine|p',
			'superessive-singular':'spe|s',
			'superessive-plural':'spe|p',
			'adessive-singular':'ade|s',
			'adessive-plural':'ade|p',
			'illative-singular':'ill|s',
			'illative-plural':'ill|p',
			'sublative-singular':'sub|s',
			'sublative-plural':'sub|p',
			'allative-singular':'all|s',
			'allative-plural':'all|p',
			'elative-singular':'ela|s',
			'elative-plural':'ela|p',
			'delative-singular':'del|s',
			'delative-plural':'del|p',
			'ablative-singular':'abl|s',
			'ablative-plural':'abl|p'};

		if (!formparam[params.form])
			throw new PreloadTextError('No rule for "' + params.form + '" in language "' + params.lang + '".');
        entry.pronunc = '* {{hu-IPA}}'
        entry.head = '{{head|' + params.lang + '|' + (headparam[params.form] || 'รูปผันคำนาม') + '}}';
		entry.def = '{{inflection of|' + params.origin + '||' + formparam[params.form] + '|lang=' + params.lang + '}}';
	};
// Others
creation_rules['others'] =
	function (params, entry)
	{
		params.form = params.form.replace(/-/g, ' ');
		params.form += ' of';
		
		entry.def = '{{' + params.form + '|' + params.origin + '|lang=' + params.lang + '}}';
	};