否定の生成

try to take over the world!

2019/12/12時点のページです。最新版はこちら。

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==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);
})();