// ==UserScript==
// @name 否定の生成
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://yaju1919.github.io/edita/
// @match http://worddrow.net/*
// @require https://greasyfork.org/scripts/387509-yaju1919-library/code/yaju1919_library.js?version=755144
// @require https://greasyfork.org/scripts/387086-tinysegmenter-js/code/TinySegmenterjs.js?version=714668
// @grant GM.setValue
// @grant GM.getValue
// @grant GM.xmlHttpRequest
// ==/UserScript==
(function() {
'use strict';
var segmenter = new TinySegmenter();
const yaju1919 = yaju1919_library;
let rev_counter = 0;
function getRev(word, callback, lastFunc){
yaju1919.get("http://worddrow.net/searchReverse?keyword="+word+"&",{
success: r => {
var dom_parser = new DOMParser();
const docs = dom_parser.parseFromString(r,"text/html");
const elm = docs.querySelector(".base_word");
if(elm) {
const base = elm.innerText;
if(base === word) {
const rev = docs.querySelector(".reverse_word").innerText;
//console.log("元:"+base);
//console.log("対義語:"+rev);
callback(rev);
rev_counter++;
}
}
lastFunc();
},
fail: m => console.error(m)
});
}
function denial(str){
segmenter.segment(str).filter(v=>{
return ((
exclude.indexOf(v) === -1 // 除外リストに一致しなかったなら
) && (
!/^[^一-龠々〆ヵヶ]$/.test(v) // 漢字以外の一文字なら
))}).map((word, i, a) => {
getRev(word, rev => {
if(rev_counter > 0) return;
str = str.replace(word, rev);
console.log(str);
}, () => {
if(i !== a.length - 1) return;
if(rev_counter !== 0) {
rev_counter = 0;
return;
}
str = str.replace(/だ$/, "では無い");
console.log(str);
return;
});
});
}
yaju1919.win.f = denial;
const JOSHI = [
"から","より","やら","なり","だの","ばかり","まで",
"だけ","ほど","くらい","ぐらい","など","がてら","なぞ","なんぞ",
"かり","ずつ","のみ","きり","こそ","でも","しか","さえ","ても",
"でも","けれど","けれども","のに","ので","から","ながら","たり",
"つつ","ところで","まま","ものの","とも","しん","かい","のに",
"やら","ものか","こと","てよ","ことよ","もの","かしら","たら"
];
const JODOSHI = [
"げす","さす","させる","じゃ","せる","そうだ","たい","だす","だら",
"だろう","ちゃう","です","てる","とき","とく","どす","なく","のだ",
"はる","ひん","べし","へん","まい","ます","やす","やん","やんす",
"よう","ようだ","らしい","られる","れる","んす","んず","んだ","んとす",
];
const exclude = JOSHI.concat(JODOSHI);
})();