var su; function redirectURL(u) { var sr = u.toString(); if (sr==su) { return u; } var mw = sr.match(new RegExp('^http://ja\\.wikipedia\\.org/wiki/([^:?#]+)$')); if (!mw) { return u; } createPopupString(mw[1]); return null; } function findEndTag(sh,its,sp,ns) { if (its<0) { return -1; } var rt = new RegExp(sp,'ig'); rt.lastIndex = its + ns; var nt=1; var mt; while ((mt=rt.exec(sh))!=null) { if (mt[0].charAt(1)=='/') { nt--; if (nt==0) { return rt.lastIndex+1; } } else { nt++; } } return -1; } function findTablesEnd(sh,its) { if (its<0) { return -1; } var ite; while (true) { ite = findEndTag(sh,its,'ite+1)) { return ite; } } } function createPopupString(sw) { if (!sw) { v2c.alert('検索語を取得できませんでした。'); return; } var su0 = 'http://ja.wikipedia.org/wiki/'; su = su0 + sw; var sh = v2c.readURL(su); if (!sh) { v2c.alert('ページを取得できませんでした。'); return; } var rh = new RegExp('>([^<>]+)','ig'); var mh = rh.exec(sh); if (mh) { sw = mh[1]; } else { sw = decodeURIComponent(sw); } var sr; var ma = sh.match(new RegExp(' title="\\w+:曖昧さ回避"','i')); if (ma) { var ia = ma.index; var rl = new RegExp('','ig'); rl.lastIndex = rh.lastIndex; sr = ''; var nu=0; var iu=0; var ml; while ((ml=rl.exec(sh))!=null) { if (ml.index>ia) { break; } if (ml[0].length==4) { if (nu==0) { iu = ml.index; } nu++; } else { nu--; if (nu<0) { break; } if (nu==0) { //println('range: '+iu+','+rl.lastIndex); sr += sh.substring(iu,rl.lastIndex); } } } if (!sr) { v2c.alert('曖昧さ回避の説明を抽出できませんでした。'); return; } sr = '

'+sw+'】(曖昧さ回避)

'+sr; } else { var re = new RegExp('(?:

[^]+?

|<[ou]l>[^]+?)\\n?','ig'); var id = sh.indexOf('-Disambig.'); if (id>0) { re.lastIndex = id + 100; } else { re.lastIndex = rh.lastIndex; } var its = sh.indexOf('0)&&(mei>li)) { break; } var me0 = me[0]; if (li==0) { if (me0.charAt(1)!='p') { continue; } while ((ite>0)&&(ite0)&&(mei>its)&&(mei\\s*','ig'); rr.lastIndex = li; var mr = rr.exec(sh); if (mr&&(mr.index==li)) { li = rr.lastIndex; } sx += sh.substring(me.index,li); re.lastIndex = li; } else { sx += me0; li = re.lastIndex; } } if (!sx) { v2c.alert('説明を抽出できませんでした。'); return; } sx = sx.replace(new RegExp('','ig'),''); sr = '
'+sw+'
'; var si; var args = v2c.context.args; if ((args.length>0)&&(args[0]=='i')) { var ri = new RegExp(']*" +title="([^"]+)"[^>]*>(]+>)','ig'); var mi; while ((mi=ri.exec(sh))!=null) { var si2 = mi[2]; var mw = si2.match(new RegExp(' width="(\\d+)"')); var mh = si2.match(new RegExp(' height="(\\d+)"')); if (mw&&(mw[1].length>=3)&&mh&&(mh[1].length>=3)) { si = mi[0]+'
'+mi[1]; break; } } } if (si) { sr += '
'+sx+''+si+'
'; } else { sr += sx; } sr += '
'; } sr = sr.replace(new RegExp('(]*)class="new"([^>]*>)','gi'),'$1style="color:red"$2'); v2c.context.setPopupHTML(''+sr+''); v2c.context.setRedirectURL(true); } function encodeWord(sw) { if (sw) { sw = sw.trim(); var nc = sw.length(); var sb = null; for (var i=0; i=0xFF01)&&(ci<=0xFF5A)) { if (sb==null) { sb = new java.lang.StringBuilder(sw); } sb.setCharAt(i,ci-0xFEE0); } } if (sb) { sw = sb.toString(); } } return (sw&&(sw.length()>0))?encodeURIComponent(sw):null; } createPopupString(encodeWord(v2c.context.selText));