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

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

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

  • ไฟร์ฟอกซ์ / ซาฟารี: กด Shift ค้างขณะคลิก Reload หรือกด Ctrl-F5 หรือ Ctrl-R (⌘-R บนแมค)
  • กูเกิล โครม: กด Ctrl-Shift-R (⌘-Shift-R บนแมค)
  • อินเทอร์เน็ตเอกซ์พลอเรอร์ และ Edge: กด Ctrl ค้างขณะคลิก Refresh หรือกด Ctrl-F5
  • โอเปร่า: กด Ctrl-F5
var pn = mw.config.get('wgPageName');
var apiUrl = mw.util.wikiScript('api');
var version = 'ทดลอง 1.2';

var rplc = {
	'́':'','ā':'a','ī':'i','ō':'o','ō':'o','ū':'u','ȳ':'y'
};

mw.loader.load( '/w/index.php?title=User:ZilentFyld/autocreatrule.js&action=raw&ctype=text/javascript' );

$(document).ready(function() {
	
var savelist = {};
var saveform = {};
var skipheader = ['การออกเสียง','รากศัพท์','การผันรูป','อ่านเพิ่ม','ลูกคำ','คำที่เกี่ยวข้อง','การผันคำนาม'];

//add pos to every form-of
$('.mw-headline').each(function(){
	var hc = $(this).attr('id');
	if (hc.includes('_')) hc = hc.substr(0, hc.lastIndexOf('_'));
	if (skipheader.includes(hc) === false) {
		$(this).parent().addClass('header-of-'+hc);
		$(this).parent().addClass('focused-header');
	}
});
$('.focused-header').each(function(){
	var area = $(this).nextUntil('.focused-header');
	var pos = $(this).attr('class').split(' ')[0].substring(10);
	area.find('.form-of').addClass('pos-'+pos);
	$(this).attr("class",'');
});

//get every form-of in page
$('.form-of').each(function(){
	var allword = $(this).find('.new');
	var thisel = $(this)
	allword.each(function(){
	var word = $(this).text();
	for (var char in rplc) {
		word = word.replace(char,rplc[char]);
	}
	if (word in savelist === false) {
		savelist[word] = {};
		saveform[word] = {};
	}
	var clas = thisel.attr('class').split(" ");
	var lang,form,pos;
	if (thisel.attr('lang')) lang = thisel.attr('lang');
	clas.forEach(function(e) {
		if (e.includes("lang-")) lang = e.substring(5);
		if (e.includes("-form-of")) form = e.slice(0,-8);
		if (e.includes("pos-")) pos = e.substring(4);
	});
	if (lang!==''&&form!==''&&pos!=='') {
		if (lang in savelist[word] === false) {
			savelist[word][lang] = [];
			saveform[word][lang] = [];
		}
		if (!saveform[word][lang].includes(form)) {
			savelist[word][lang].push([form,pos]);
			saveform[word][lang].push(form);
		}
	}
	});
});

console.log(savelist);
console.log(saveform);

$('.form-of').find('.new').each(function(){
	var ele = $(this).parent();
	var word = ele.text();
	for (var char in rplc) {
		word = word.replace(char,rplc[char]);
	}
	$(this).addClass('word-'+word);
	var button = $(' <span style="size:80%;color:green" class="button-'+word+'">[สร้าง]</button>').click(function() {
		var err = 0;
		var exp = '';
		try {
		var savelistlang = savelist[word];
		Object.keys(savelistlang).forEach(function(lang){
			var formlist = savelistlang[lang];
			var text = preset(lang,formlist,ele);
			if (text == 'error') err++;
			else exp += text;
		}); 
		}
		catch (error) {
			console.log(error);
			err++;
		}
		if (err === 0) {
			$.post(apiUrl, {
			'action': 'edit',
			'title': word,
			'summary': 'สร้างคำผันจาก [[' + pageName + ']] โดย [[User:ZilentFyld/bettercreate.js|bettercreate.js]] รุ่น'+version,
			'createonly': '1',
			'appendtext': exp,
			'token': mw.user.tokens.get('csrfToken'),
			'format': 'xml'
			}, function () {
				mw.notify('สร้างหน้า ' + word + ' เรียบร้อยแล้ว');
				$('.word-'+word).removeClass('new');
			});
		}
		else mw.notify('ยังไม่รองรับรูปแบบนี้');
		$('.button-'+word).fadeOut();
	});
	$(ele).after(button);
});

});