참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.
- 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
- 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
- 인터넷 익스플로러 / 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
- 오페라: Ctrl-F5를 입력.
/* made by zhuny */
/* 왜 쓰는지 알았다?! */
window.addEventListener("load",function(){
/* 오른쪽 상단 math태그 버튼 만들기 */
var textarea = document.getElementById("wpTextbox1");
if(!textarea) return;
var div = document.createElement("div");
div.style.position = "fixed";
div.style.left = "0px";
div.style.top = "50px";
function add_button(value, func){
var button = document.createElement("input");
button.type = "button";
button.classList.add("add_math_zhuny");
button.value = value;
button.onclick = func;
div.appendChild(button);
}
add_button("Math", function(){
var start = textarea.selectionStart, end = textarea.selectionEnd;
if(start > end){
start = textarea.selectionEnd;
end = textarea.selectionStart;
}
textarea.value = textarea.value.substring(0,start) + "<math>"+textarea.value.substring(start,end)+"</math>" + textarea.value.substring(end);
textarea.selectionEnd = textarea.selectionStart = start+6;
textarea.focus();
});
add_button("Translate", function(){
/* 본문에서 영어 찾기 */
var re1 = /[a-zA-Z][a-zA-Z0-9' -]{2,}[a-zA-Z0-9]/g;
/* 페이지에서 영어 번역 가져오기 */
var re2 = /\|[^-].+\n\|[^-].+/g;
/* python에서 str.strip() */
function strip(string){
return string.replace(/^\s+/,"").replace(/\s+$/,"");
}
/* 사용된 영어를 찾아보자 */
var match = textarea.value.match(re1);
var first = {};
for(var i in match){
match[i] = match[i].toLowerCase()
first[match[i][0].toUpperCase()] = 0;
}
var pages = [];
for(var ch in first){
pages.push("리브레 위키:편집지침/수학 용어/"+ch);
}
/* 필요한 페이지 로드 */
$.ajax({
dateType: "json",
url: ("/api.php" +
"?action=query&prop=revisions&rvprop=content"+
"&format=json&titles="+
pages.join('|')),
}).done(function(elem){
/* 일단 영어명 -> 한국어명 단어사전 만든 뒤 */
var word_map = {};
var pages = elem.query.pages;
for(var page in pages){
var content = pages[page].revisions[0]['*'];
var c_match = content.match(re2);
for(var i in c_match){
var word_m = c_match[i].split('|');
var word_e = strip(word_m[1]);
var word_k = strip(word_m[2]);
word_map[word_e.toLowerCase()] = word_k;
}
}
/* 바꿀 단어 정리하고 바꾸기 */
var text_body = textarea.value;
var rep_word_set = {};
var rep_word_list = [];
for(var i in match){
if(word_map[match[i]]){
rep_word_set[match[i]] = 0;
}
}
for(var i in rep_word_set)rep_word_list.push(i);
rep_word_list.sort(function(e1,e2){
if(e1.length > e2.length) return -1;
if(e1.length < e2.length) return 1;
return 0;
});
for(var i in rep_word_list){
var word_e = rep_word_list[i];
var word_k = word_map[word_e].split(',')[0];
var word_r = new RegExp(word_e,'ig');
text_body = text_body.replace(word_r,word_k);
}
textarea.value = text_body;
});
});
document.body.appendChild(div);
});