/*=========================================================== 処理(変更しないでね!) ===========================================================*/ /*----------------------------------------------------------- アンカー自動置換 OnTranslate関数に _text = TranslateAnchor(_text) と追加すること -----------------------------------------------------------*/ OnTranslateInternal.ANCHOR { TranslateAnchor(_argv[0]) } TranslateAnchor { _wl = AnchorWordList //大括弧=タグパラメータの内側は無視 //このへんほんとはちゃんと解析しないと…… _resarr = RE_SPLIT(_argv[0],'\\_*[0-9a-z!?]\[.+?\]') _restok = RE_GETSTR _n = ARRAYSIZE(_resarr) _m = ARRAYSIZE(_wl) for _i = 0 ; _i < _n ; _i++ { for _j = 0 ; _j < _m ; _j++ { _resarr[_i] = REPLACE(_resarr[_i],_wl[_j],'\_a[OnAnchorWordExec,' + _wl[_j] + ']' + _wl[_j] + '\_a') } } _text = _resarr[0] for _i = 1 ; _i < _n ; _i++ { _text += _restok[_i-1] _text += _resarr[_i] } if STRSTR(_text,'OnAnchorWordExec',0) >= 0 { if STRSTR(_text,'OnAnchorWordReturn',0) < 0 { LastAnchorWordScript = IARRAY } LastAnchorWordScript ,= _text } _text } OnSystemLoad.ANCHOR { AnchorWordList = GETFUNCLIST('アンカー解説:') _n = ARRAYSIZE(AnchorWordList) for _i = 0 ; _i < _n ; _i++ { AnchorWordList[_i] = SUBSTR(AnchorWordList[_i],7,STRLEN(AnchorWordList[_i])-7) } LastAnchorWordScript = IARRAY } OnSystemUnload.ANCHOR { ERASEVAR('AnchorWordList') ERASEVAR('LastAnchorWordScript') } /*----------------------------------------------------------- 単語解説処理用 -----------------------------------------------------------*/ OnLib.AnchorWordSelect { _txt = EVAL('アンカー解説:' + reference[0]) アンカー単語解説(reference[0],_txt) } OnAnchorWordExec { REPLACE(EVAL('アンカー解説:' + reference[0]),'\e','') -- '\0\n\n[half]' + メニュー('戻る','OnAnchorWordReturn') + '\e' } OnAnchorWordReturn { LastAnchorWordScript } /*----------------------------------------------------------- 単語リスト作成 -----------------------------------------------------------*/ アンカー単語リスト表示 { _wa = AnchorWordList _n = ARRAYSIZE(_wa) _txt = '\_q' for _i = 0 ; _i < _n ; _i++ { _txt += '\q[' + _wa[_i] + ',OnLib.AnchorWordSelect,' + _wa[_i] + ']\n' } _txt += '\_q' アンカー単語リスト(_txt) } /*=========================================================== データ(ここからは変えよう) ===========================================================*/ //単語リストの選択肢を表示する アンカー単語リスト { //_argv[0] = 単語リスト(選択肢スクリプト) '' -- _argv[0] -- '\0\n[half]' + メニュー('戻る','OpenMenu') } //解説・「戻る」 アンカー単語解説 { //_argv[0] = 単語 //_argv[1] = 解説スクリプト '\_q【' + _argv[0] + '】\_q\n' -- _argv[1] -- '\0\n\n[half]' + メニュー('戻る','アンカー単語リスト表示') } //実際の説明 /*アンカー解説:サポート { }*/