From d84aa03dbc88a37333c75d220103c6e7c815b249 Mon Sep 17 00:00:00 2001 From: kanasimi Date: Wed, 4 Dec 2024 04:03:20 +0800 Subject: [PATCH] + CeL.wiki.prefix_page_name() --- _structure/module.js | 22 +++++---- _test suite/test.js | 10 +++++ application/net/wiki/namespace.js | 36 +++++++++++---- application/net/wiki/parser/evaluate.js | 5 ++- application/net/wiki/parser/section.js | 29 +++++++++--- application/net/wiki/parser/wikitext.js | 10 +++++ ce.js | Bin 559870 -> 559988 bytes .../OpenCC/additional.to_TW.phrases.txt | 16 +++++++ .../zh_conversion/OpenCC/additional.to_TW.txt | 42 ++++++++++++++++-- 9 files changed, 143 insertions(+), 27 deletions(-) diff --git a/_structure/module.js b/_structure/module.js index dc093ac8..0b28332b 100644 --- a/_structure/module.js +++ b/_structure/module.js @@ -1293,22 +1293,26 @@ if (typeof CeL === 'function') { ) { // TODO: unload 時 delete .script_node // _.script_node = node; - var env = _.env, config, matched; + var env = _.env, config; try { - config = node.innerText || (config = node.firstChild) - && config.nodeValue; + config = node.innerText || node.firstChild + && node.firstChild.nodeValue; // IE8 沒有 .innerText || .nodeValue - if (!config - && typeof (config = node.innerHTML) === 'string') - config = (matched = config - .match(/^[\s\n]*[\s\n]*$/)) ? matched[1] - : config.replace(//g, ''); + if (!config && typeof node.innerHTML === 'string') { + config = node.innerHTML; + var matched = config + .match(/^[\s\n]*<\!--(.+?)-->[\s\n]*$/); + config = matched ? matched[1] + // + : config.replace(/<\!--[\s\S]*?-->/g, ''); + } if (config) { // http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting-1.html#inline-documentation-for-external-scripts // If there is a src attribute, the element must be // either empty or contain only script documentation // that also matches script content restrictions. - if (matched = config.match(/\/\*([\s\S]+?)\*\//)) + var matched = config.match(/\/\*([\s\S]+?)\*\//); + if (matched) config = matched[1]; if (config = (typeof JSON === 'object' && JSON.parse || eval_parse) (config.replace(/[\s\r\n]*\/\//g, ''))) diff --git a/_test suite/test.js b/_test suite/test.js index 2925919f..4e85349c 100644 --- a/_test suite/test.js +++ b/_test suite/test.js @@ -3490,6 +3490,7 @@ function test_wiki() { assert(['深圳', CeL.wiki.wikitext_to_plain_text('深圳')], 'wikitext_to_plain_text() #4'); assert(['大稻埕', CeL.wiki.wikitext_to_plain_text('大稻埕')], 'wikitext_to_plain_text() #5'); assert(['H1\tH2\tH3\n11\t12\t13\n21\t22\t23', CeL.wiki.wikitext_to_plain_text('{| class="wikitable"\n|-\n! H1 !! H2 !! H3\n|-\n| 11 || 12 || 13\n|-\n| 21 || 22 || 23\n|}')], 'wikitext_to_plain_text() #6'); + assert(['| =', CeL.wiki.wikitext_to_plain_text('{{ ! }} {{ = }}')], 'wikitext_to_plain_text() #7'); wikitext = '\'t\' "t"'; parsed = CeL.wiki.parse(wikitext); assert([wikitext, parsed], 'wiki.parse: quoted text'); @@ -3668,6 +3669,10 @@ function test_wiki() { assert([wikitext, parsed.toString()], 'wiki.parse.link #17'); assert(["高1%", parsed.anchor], 'wiki.parse.link #17-1'); assert(["高1%", parsed.page_title], 'wiki.parse.link #17-2'); + wikitext = '[[1+1{{=}}1#Nouri Mabrouk and the 1+1{{=}}1 Revolution]]'; parsed = CeL.wiki.parse(wikitext); + assert([wikitext, parsed.toString()], 'wiki.parse.link #18'); + assert(["Nouri Mabrouk and the 1+1=1 Revolution", parsed.anchor], 'wiki.parse.link #18-1'); + assert(["1+1=1", parsed.page_title], 'wiki.parse.link #18-2'); wikitext = '[[Image:a.svg|thumb|20px|b{{c|d[[e]]f}}]]'; parsed = CeL.wiki.parser(wikitext).parse(); assert([wikitext, parsed.toString()], 'wiki.parse.file #1'); @@ -4022,6 +4027,11 @@ function test_wiki() { assert(['transclusion', parsed.type], 'wiki.parse.transclusion #47-1'); assert(['plain', parsed[0].type], 'wiki.parse.transclusion #47-2'); + wikitext = '{{{{=}}D}}'; parsed = CeL.wiki.parse(wikitext); + assert([wikitext, parsed.toString()], 'wiki.parse.transclusion #48'); + assert(['transclusion', parsed.type], 'wiki.parse.transclusion #48-1'); + assert(['=D', parsed.name], 'wiki.parse.transclusion #48-2'); + assert(['Template:=D', parsed.page_title], 'wiki.parse.transclusion #48-3'); wikitext = 'a[[link]]b'; parsed = CeL.wiki.parser(wikitext).parse(); assert([wikitext, parsed.toString()]); diff --git a/application/net/wiki/namespace.js b/application/net/wiki/namespace.js index fc546cc1..65e327c9 100644 --- a/application/net/wiki/namespace.js +++ b/application/net/wiki/namespace.js @@ -1145,9 +1145,8 @@ function module_code(library_namespace) { // console.log(namespace); if (typeof namespace === 'string') { var list = []; - namespace = namespace // e.g., 'main{{!}}template' → 'main|template' - .replace(/{{\s*!\s*}}/g, '|') + namespace = prefix_page_name(namespace) // e.g., 'User_talk' → 'User talk' .replace(/[\s_]+/g, ' '); (is_page_title ? [ namespace.toLowerCase() ] @@ -1724,16 +1723,13 @@ function module_code(library_namespace) { return wikitext; } // TODO: "《茶花女》维基百科词条'''(法语)'''" - wikitext = wikitext - // 去除註解。 Remove comments. + wikitext // e.g., "親会社" // "ロイ・トーマス" - .replace(/<\!--[\s\S]*?-->/g, '') + = prefix_page_name(wikitext) // 沒先處理的話,也會去除
.replace(/\s*]*)?>/ig, '\n').replace( /<\/?[a-z][^>]*>/g, '') - // "{{=}}" → "=" - .replace(/{{=\s*}}/ig, '=') // e.g., remove "{{En icon}}" .replace(/{{[a-z\s]+}}/ig, '') // e.g., "[[link]]" → "link" @@ -1814,6 +1810,28 @@ function module_code(library_namespace) { }); } + // CeL.wiki.prefix_page_name(page_name) + // 前置作業,用以簡化頁面名稱。 + // or prefix_parameter_name() ? + function prefix_page_name(page_name) { + page_name = String(page_name); + + // 去除註解。 Remove comments. "" + page_name = page_name.replace(/<\!--[\s\S]*?-->/g, ''); + + // [[mw:Help:Magic words#Escaped characters]] + page_name = page_name + // '{{!}}' → '|' + .replace(/{{\s*!\s*}}/g, '|') + // '{{=}}' → '=' + .replace(/{{\s*=\s*}}/g, '='); + + // CeL.wiki.parse.anchor.normalize_anchor() needs preserving spaces + // page_name = page_name.trim(); + + return page_name; + } + /** @inner */ var PATTERN_anchor_of_page_title; try { @@ -1894,8 +1912,7 @@ function module_code(library_namespace) { // true === /^\s$/.test('\uFEFF') - // 去除註解。 Remove comments. - page_name = page_name.replace(//g, ''); + page_name = prefix_page_name(page_name); // [[A"A]]→[[A"A]] // fix "'". 由於裡面包含"#",所以必須在 PATTERN_anchor_of_page_title 之前處理。 @@ -4301,6 +4318,7 @@ function module_code(library_namespace) { title_link_of : get_page_title_link, revision_content : revision_content, content_of : get_page_content, + prefix_page_name : prefix_page_name, // normalize_page_title normalize_title : normalize_page_name, normalize_title_pattern : normalize_name_pattern, diff --git a/application/net/wiki/parser/evaluate.js b/application/net/wiki/parser/evaluate.js index 75de7670..747df94c 100644 --- a/application/net/wiki/parser/evaluate.js +++ b/application/net/wiki/parser/evaluate.js @@ -1295,10 +1295,13 @@ function module_code(library_namespace) { // @ CeL.application.net.wiki.parser.wikitext switch (token.name) { + // @see prefix_page_name(page_name) @ CeL.application.net.wiki.namespace case '!': + // '{{!}}' → '|' return '|'; case '=': + // '{{=}}' → '=' return '='; // ---------------------------------------------------------------- @@ -1999,7 +2002,7 @@ function module_code(library_namespace) { function Yesno(value, default_value) { if (value === undefined) return; - value = String(value).replace(//g, '').trim(); + value = wiki_API.prefix_page_name(value).trim(); if (/^(?:[0nf否关關]|no|false|off)$/i.test(value)) return false; if (/^(?:[1yt是开開]|yes|true|on)$/i.test(value)) diff --git a/application/net/wiki/parser/section.js b/application/net/wiki/parser/section.js index 88c6c1c5..4921051b 100644 --- a/application/net/wiki/parser/section.js +++ b/application/net/wiki/parser/section.js @@ -113,6 +113,7 @@ function module_code(library_namespace) { return token; } + // 去除註解。 Remove comments. "" if (token.type === 'comment') { return ''; } @@ -386,10 +387,25 @@ function module_code(library_namespace) { } // console.trace(token); - if (token.type in { - magic_word_function : true, - parameter : true - }) { + + if (token.type === 'magic_word_function') { + // e.g., {{!}} {{=}} + token = wiki_API.evaluate_parser_function_token + .call(token, options); + + if (typeof token !== 'object') + return token; + + token.unconvertible = true; + } + + /** + * TODO: check all + [[mw:Help:Advanced editing#Reformatting and/or disabling wikitext interpretation|character]] + + */ + + if (token.type === 'parameter') { // TODO: return token.evaluate() token.unconvertible = true; } @@ -1710,7 +1726,9 @@ function module_code(library_namespace) { if (anchor) { anchor = // ''' → "'" - library_namespace.HTML_to_Unicode(anchor.toString()) + library_namespace.HTML_to_Unicode(anchor.toString()); + + anchor = wiki_API.prefix_page_name(anchor) /** * 包括 "\xa0" ( ), "\u206F" 在目錄的網頁錨點中都會被轉為空白字元 "_"。 * @@ -1719,6 +1737,7 @@ function module_code(library_namespace) { * 因此採用"P Q"。 */ .replace(/[_\s]/g, ' '); + if (!preserve_spaces) { // " a " → "a" anchor = anchor.trim(); diff --git a/application/net/wiki/parser/wikitext.js b/application/net/wiki/parser/wikitext.js index 21bd3fa0..fb5c5a6e 100644 --- a/application/net/wiki/parser/wikitext.js +++ b/application/net/wiki/parser/wikitext.js @@ -3025,6 +3025,16 @@ function module_code(library_namespace) { // parameters.splice = template_token__splice; // parameters.push = template_token__push; + if (false && matched + // [[mw:Help:Magic words#Escaped characters]] + // TODO: '{{!|}}' 其實會呼叫 [[Template:!]] + && parameters.length > 1 && parameters.name in { + '!' : true, + '=' : true + }) { + // matched = false; + } + _set_wiki_type(parameters, matched ? 'magic_word_function' : 'transclusion'); queue.push(parameters); diff --git a/ce.js b/ce.js index 97bac5359ac45fcb3839689d8ad82ff39cd39c72..9614ea727fc3a20953ba53a276f6d64dd75eac05 100644 GIT binary patch delta 353 zcmY+9%}WAd5XNWM*>^XSC2aeG(06SsEtE7ND@f{61VWIvw&)Zcf(~6giO|7Ir=*^1 z-3tOEPtwO<5Ofd!1P>|EA$ln&I{b#2;d$oc^DOpu9=o}7j5N*AWNmr4AFpxEskfYU zXDm$_N~(T_iYm_20%a+u;w;TkO66(F9TyVSLPAsMjY1;ec2J41k9LG3D86tQ&$c0c z%50QRYMJmLKB7E|)80S|p{8lob`AwLB!8=dV5v+`9X*WJBU`wzgo6XgE1HjM$7GX`7}fk5!k) zu{)w>F5PQETzMR7R9r6U|JR2gJ3R%P!C Db@O2w delta 326 zcmYk0&q@Me6vgk1*KYH!{?cY}7SSis?+M2F6mMu*^jsc=WpM拼情报,你就是把玉玲珑叫来, (~拚v:是 wp:

+v:拼+n:情报+wp:,+r:你+c:就是+p:把+n:玉玲珑+v:叫+v:来+wp:,) 拼情報 拚情報 +// 《速通修仙!》 除了颜值之外,就只能拼情绪价值了。 (~拚v:没 ~拚季长生 ~拚除了颜值之外 ~拚就 ~拚只能 ~拚情绪价值 ~拚于是 ~拚季长生 ~拚就 p:除了+n:颜值+nd:之外+wp:,+d:就+d:只能+v:拼+n:情绪+n:价值+u:了+wp:。) +拼情緒 拚情緒 // 《开局奖励一亿条命》 拼武技, (~拚武技 v:拼+n:武技+wp:,) 拼武技 拚武技 // 《女侠且慢》 拼武艺他打不过、 (~拚v:打 ~拚武艺 v:拼+n:武艺+r:他+v:打+d:不+v:过+wp:、) @@ -672,6 +674,8 @@ 命來拼 命來拚 // 《最仙遊》 我云清门不会用血本去拼苍茫盟, (~拚v:分散 ~拚苍茫盟 r:我+nh:云清门+d:不+v:会+p:用+n:血本+v:去+v:拼+nh:苍茫盟+wp:,) 血本去拼 血本去拚 +// 《速通修仙!》 五五开的时候,祂会去拼, (~拚v:有 ~拚五五开的时候 ~拚祂 ~拚这样一来 m:五五开+u:的+n:时候+wp:,+r:祂+v:会+v:去+v:拼+wp:,) +祂會去拼, 祂會去拚, // 《一品修仙》 跟小魔佛拼什么命, (~拚跟小魔佛 ~拚什么命 p:跟+a:小+n:魔佛+v:拼+r:什么+n:命+wp:,) 拼什麼命 拚什麼命 // 《苟在仙武娶妻长生》 想要出人头地,那就得去拼,去闯。 (~拚v:想 ~拚那 ~拚就 ~拚那 ~拚韩永春 v:想+v:要+i:出人头地+wp:,+c:那+d:就+v:得+v:去+v:拼+wp:,+v:去+v:闯+wp:。) @@ -789,6 +793,8 @@ // 解析錯誤 @ 《平平无奇大师兄》 年轻就要醒着拼, (~拚v:醒 ~拚v:醒 v:醒+u:着+v:拼) 若是不拼,这辈子也就如此了。 (c:若是+d:不+v:拼+wp:,) 醒着拼 醒著拚 若是不拼 若是不拚 +// 《速通修仙!》 不拼,把希望寄托在别人手中, (~拚v:敢 ~拚不 ~拚诸圣 ~拚还是 d:不+v:拼+wp:,+p:把+n:希望+v:寄托+p:在+r:别人+nl:手中+wp:,) +不拼,把希望 不拚,把希望 // 解析錯誤 @ 《大奉打更人》 妖族没有皈依佛门,反而与佛门拼的两败俱伤, (~佛門拚m:两败俱伤 d:反而+p:与+n:佛门拼+u:的+m:两败俱伤) 佛門拼 佛門拚 // 《剑仙三千万》 (r:这+n:门+v:蓄力杀招拼+u:得+v:乃是+n:玉石+d:俱+v:焚) @@ -856,10 +862,16 @@ // 《大奉打更人》 其实拼的是底蕴。 (v:拼+u:的+v:是+n:底蕴) 拼的是 拚的是 +// 《速通修仙!》 拼的不是你的长板到底有多长,而是你的短板到底有多短。 (~拚v:是 v:拼+u:的+d:不+v:是+r:你+u:的+n:长板+d:到底+v:有+d:多+a:长+wp:,+c:而是+r:你+u:的+n:短板+d:到底+v:有+d:多+a:短+wp:。) +拼的不是 拚的不是 +// 《从红月开始》 拼的不是很好看啊……” (~拼v:是 v:拼+u:的+d:不+v:是+d:很+a:好看+u:啊+wp:……”) 單純 zh_conversion 轉換過程: 拼的不是→拚的不是 +拼的不是很好看 拼的不是很好看 // 《开局奖励一亿条命》 拼的只是仙魂 (~拚v:是 v:拼+u:的+d:只+v:是+n:仙魂) 拼的只是 拚的只是 // 解析錯誤 @ 《我师兄实在太稳健了》 (v:拼+u:的+d:就+v:是+r:这个+n:尿性+wp:。) (v:拼+u:的+d:就+v:是+m:一个+n:运气+wp:!) 拼的就是 拚的就是 +// 《速通修仙!》 拼的更多的是硬实力。 (~拚v:是 v:拼+u:的+d:更+a:多+u:的+v:是+n:硬实力+wp:。) +拼的更多的是 拚的更多的是 // 《烂柯棋缘》 钓鱼拼得就是耐心, (n:钓鱼+v:拼+u:得+d:就+v:是+a:耐心+wp:,) (v:釣魚+v:拚+u:得+d:就+v:是+a:耐心+wp:,) (~拚就是耐心 v:钓鱼+v:拼+u:得+d:就是+a:耐心+wp:,) 拼得就是 拚得就是 // 《中国历史那些事儿系列套装》 他能拼的只有青春、斗志、耐力以及智慧。 (v:能+v:拼+u:的+d:只+v:有+n:青春) @@ -1033,6 +1045,8 @@ 此時還願意拼 此時還願意拚 // 《我在修仙界长生不死》 拼起狠劲儿来, (~拚v:认为 ~拚狠劲儿 v:拼+v:起+n:狠劲儿+v:来+wp:,) 拼起狠 拚起狠 +// 《别人练级我修仙,苟到大乘再出山》 拼起神通术法! (~拚n:术法 v:拼+v:起+n:神通+n:术法+wp:!) +拼起神通 拚起神通 // 《回到过去变成猫》 真正拼起来自己还是很吃亏的, (~拚真正 d:真正+v:拼+v:起来+r:自己+d:还是+d:很+a:吃亏+u:的+wp:,) 真正拼起來 真正拚起來 // 《回到过去变成猫》 总之人家拼起来的时候咱装死就好。 (~拚n:时候 ~拚人家 c:总之+r:人家+v:拼+v:起来+u:的+n:时候+r:咱+v:装+a:死+d:就+a:好+wp:。) @@ -1070,6 +1084,8 @@ 匈奴血拼 匈奴血拚 // 《速通修仙!》 甚至有可能引发正魔两道的血拼。 (~血拚v:引发 d:甚至+v:有+n:可能+v:引发+j:正魔+m:两+q:道+u:的+n:血拼+wp:。) 兩道的血拼 兩道的血拚 +// 《速通修仙!》 都残血了还拼,666。 (~拚a:高 d:都+v:残+n:血+u:了+d:还+v:拼+wp:,+e:666+wp:。) +殘血了還拼 殘血了還拚 // ------------------------------------------------------------------------------------------------ diff --git a/extension/zh_conversion/OpenCC/additional.to_TW.txt b/extension/zh_conversion/OpenCC/additional.to_TW.txt index c91fc4c0..cfef48b4 100644 --- a/extension/zh_conversion/OpenCC/additional.to_TW.txt +++ b/extension/zh_conversion/OpenCC/additional.to_TW.txt @@ -823,6 +823,8 @@ 上头发了 上頭發了 // 解析錯誤 @ 《一品修仙》 他的脸色变得乌黑发青, (n:脸色+v:变+u:得+z:乌黑发青) 乌黑发青 烏黑發青 +// 《别人练级我修仙,苟到大乘再出山》 你的肉身开始滚烫发红, (~發v:滚烫 ~發你的肉身 ~發红 r:你+u:的+n:肉身+v:开始+v:滚烫+v:发+a:红+wp:,) 單純 zh_conversion 轉換過程: 烫发→燙髮 +滚烫发红 滾燙發紅 // 《中国历史那些事儿系列套装》 韩信就曾生发精彩一言: (nh:韩信+d:就+d:曾+v:生发+a:精彩+m:一+n:言+wp::) 生发精彩一言 生發精彩一言 // 《一品修仙》 这世上最伟大的造化生发之力, (~生發n:力 r:这+nl:世上+d:最+a:伟大+u:的+n:造化+v:生发+u:之+n:力+wp:,) @@ -2519,6 +2521,8 @@ 王与后 王與后 // 解析錯誤 @ 《女侠且慢》 被劫走,一后二妃就缺了人, (~后n:妃 p:被+v:劫+v:走+wp:,+m:一+nd:后+m:二+n:妃+d:就+v:缺+u:了+n:人+wp:,) 一后二妃 一后二妃 +// 《速通修仙!》 地藏王菩萨在地府内已经是一后之下,万鬼之上。 (~后nd:之下 n:地藏王+n:菩萨+p:在+n:地府+nd:内+d:已经+v:是+m:一+nd:后+nd:之下+wp:,+n:万鬼+nd:之上+wp:。) 單純 zh_conversion 轉換過程: 后→後 +一后之下 一后之下 // 《大奉打更人》 我觉得册封为后, (~后v:为 r:我+v:觉得+v:册封+v:为+nd:后+wp:,) // 《大奉打更人》 希望朕能从中选出一位,册封为后。 (~后v:为 v:希望+r:朕+v:能+d:从中+v:选出+m:一+q:位+wp:,+v:册封+v:为+n:后+wp:。) 册封为后 冊封為后 @@ -3816,6 +3820,8 @@ // 恢復 // 《术师手册》 我听说二翼术师的灵魂回复期都很长…… (~回復期a:长 r:我+v:听说+m:二+n:翼+n:术师+u:的+n:灵魂+nt:回复期+d:都+d:很+a:长+wp:……) 單純 zh_conversion 轉換過程: 回复→回覆 回复期 回復期 +// 《别人练级我修仙,苟到大乘再出山》 毕竟低阶回复药剂,在关键时刻, (~回復n:药剂 d:毕竟+b:低阶+v:回复+n:药剂+wp:,+p:在+a:关键+n:时刻+wp:,) 單純 zh_conversion 轉換過程: 回复→回覆 +回复药剂 回復藥劑 // [general.TW.txt] 这里好像也没什么草药之类的回复道具。 (~回復n:道具 r:这里+v:好像+d:也+v:没+r:什么+n:草药+r:之类+u:的+v:回复+n:道具+wp:。) 回复道具 回復道具 // [general.TW.txt] 恶魔的回复能力。 (~回復n:能力 n:恶魔+u:的+v:回复+n:能力) @@ -4065,7 +4071,15 @@ 一粒谷 一粒穀 // 解析錯誤 @ 《仙人只想躺着》

护谷阵,专门用来杀死蚊虫的阵法, (~護穀陣v:是 wp:

+v:护谷阵+wp:,+d:专门+v:用+v:来+v:杀死+n:蚊虫+u:的+n:阵法+wp:,) 护谷阵 護穀陣 - +// 《别人练级我修仙,苟到大乘再出山》 «其他專有名詞» >毕竟他的随身灵田福地中还有三千多斤灵谷, (~靈穀v:还有 wp:>+d:毕竟+r:他+u:的+b:随身+n:灵田+n:福地+nd:中+v:还有+m:三千+m:多+q:斤+n:灵谷+wp:,) 單純 zh_conversion 轉換過程: 灵→靈 +斤灵谷 斤靈穀 +// 《别人练级我修仙,苟到大乘再出山》 «其他專有名詞» 你手中已经有了三千万斤的灵谷! (~靈穀v:有 r:你+nl:手中+d:已经+v:有+u:了+m:三千万+q:斤+u:的+n:灵谷+wp:!) 單純 zh_conversion 轉換過程: 灵→靈 +斤的灵谷 斤的靈穀 +// 《别人练级我修仙,苟到大乘再出山》 «其他專有名詞» 融入几株灵谷上。 (~靈穀nd:上 v:融入+m:几+q:株+n:灵谷+nd:上+wp:。) 單純 zh_conversion 轉換過程: 几株→幾株 +几株灵谷 幾株靈穀 +// 錯別字 +// 《别人练级我修仙,苟到大乘再出山》 «其他專有名詞» 看到你灵田中的灵谷涨势喜人, (~靈穀n:涨势 v:看到+r:你+n:灵田+nd:中+u:的+n:灵谷+n:涨势+a:喜人+wp:,) 單純 zh_conversion 轉換過程: 灵→靈 +灵谷涨势 靈穀長勢 // 解析錯誤 @ 《剑仙三千万》 只要具备御剑飞行之力, (v:具备御剑+v:飞行+u:之+n:力) 御剑 御劍 @@ -4168,6 +4182,8 @@ // 《宋朝游历指南》 有克择官报时辰, (~剋v:择 v:有+v:克+v:择+n:官+v:报+n:时辰+wp:,) // 《宋朝游历指南》 又有阴阳克择官拿着花斗, (~陰陽剋擇v:有 d:又+v:有+n:阴阳克择+n:官+v:拿+u:着+n:花斗+wp:,) 克择 剋擇 +// 《速通修仙!》 不克扣该给她的年终分红就行。 (~剋v:肃 ~剋不 ~剋该给她的年终分红 d:不+v:克+v:扣+v:该+p:给+r:她+u:的+nt:年终+v:分红+d:就+a:行+wp:。) 單純 zh_conversion 轉換過程: 不克→不克 +不克扣 不剋扣 // 《我在田宗剑道成仙》 他这个亚父命硬克不死, (~剋v:道 ~剋他这个亚父 ~剋命 ~剋硬 r:他+r:这个+n:亚父+n:命+d:硬+v:克+d:不+v:死+wp:,) 克不死 剋不死 // 《从红月开始》 以下克上 (~以下剋上 p:以下克上) @@ -4431,6 +4447,8 @@ 被克制 被剋制 // 《速通修仙!》 那蝎妖正好被我克制, (~剋制i:相生 ~剋制你 ~剋制我 r:那+n:蝎妖+z:正好+p:被+r:我+v:克制+wp:,) 單純 zh_conversion 轉換過程: 克制→克制 被我克制 被我剋制 +// 《别人练级我修仙,苟到大乘再出山》 眼见着神通也被你克制, (~剋制v:眼见 ~剋制神通 ~剋制也 ~剋制你 v:眼见+u:着+n:神通+d:也+p:被+r:你+v:克制+wp:,) 單純 zh_conversion 轉換過程: 克制→克制 +被你克制 被你剋制 // 《术师手册》 专门欺负那些可以被他们克制的知识生物! (~剋制n:生物 ~剋制他们 d:专门+v:欺负+r:那些+v:可以+p:被+r:他们+v:克制+u:的+n:知识+n:生物+wp:!) 單純 zh_conversion 轉換過程: 克制→克制 被他们克制的 被他們剋制的 // 《苍青之剑》 恰好被对方所克制了。 (~剋制恰好 ~剋制对方 d:恰好+p:被+n:对方+u:所+v:克制+u:了+wp:。) @@ -4439,9 +4457,9 @@ 受克制 受剋制 // 《请公子斩妖》 只有在姜月白面前受到克制。 (~剋制v:受到 c:只有+p:在+nh:姜月白+nd:面前+v:受到+v:克制+wp:。) 受到克制 受到剋制 -// 《最仙遊》 因为互相不克, (~剋互相 ~剋不 c:因为+d:互相+d:不+v:克+wp:,) +// 《最仙遊》 因为互相不克, (~剋互相 ~剋不 c:因为+d:互相+d:不+v:克+wp:,) 單純 zh_conversion 轉換過程: 不克→不克 相不克 相不剋 -// 《最仙遊》 神雷非五行,本什么都不克,但又什么都克, (~剋v:非 ~剋本 ~剋都 ~剋不 n:神雷+v:非+n:五行+wp:,+d:本+r:什么+d:都+d:不+v:克+wp:,+c:但+d:又+r:什么+d:都+v:克+wp:,) +// 《最仙遊》 神雷非五行,本什么都不克,但又什么都克, (~剋v:非 ~剋本 ~剋都 ~剋不 n:神雷+v:非+n:五行+wp:,+d:本+r:什么+d:都+d:不+v:克+wp:,+c:但+d:又+r:什么+d:都+v:克+wp:,) 單純 zh_conversion 轉換過程: 不克→不克 什么都不克 什麼都不剋 // 《最仙遊》 神雷非五行,本什么都不克,但又什么都克, (~剋v:非 ~剋但 ~剋又 ~剋什么 ~剋都 n:神雷+v:非+n:五行+wp:,+d:本+r:什么+d:都+d:不+v:克+wp:,+c:但+d: 又+r:什么+d:都+v:克+wp:,) 什么都克 什麼都剋 @@ -4461,6 +4479,8 @@ 进行针对克制 進行針對剋制 // 《速通修仙!》 对其进行针对性的克制, (~剋制v:进行 p:对+r:其+v:进行+n:针对性+u:的+v:克制+wp:,) 單純 zh_conversion 轉換過程: 行针→行鍼 克制→克制 进行针对性的克制 進行針對性的剋制 +// 《我在幕后调教大佬》 显然是为了克制什么而专程打造, (~剋制p:为了 ~剋制什么 a:显然+v:是+p:为了+v:克制+r:什么+c:而+d:专程+v:打造+wp:,) 單純 zh_conversion 轉換過程: 克制→克制 +为了克制什么而 為了剋制什麼而 // 《请公子斩妖》 除非是同等级别的强者出手,否则很难受到任何克制! (~剋制v:受到 c:除非+v:是+b:同等+n:级别+u:的+n:强者+v:出手+wp:,+c:否则+d:很+a:难+v:受到+r:任何+v:克制+wp:!) 受到任何克制 受到任何剋制 // 《我师兄实在太稳健了》 这,还是己方众师弟师妹有所克制,并未全露道境, (~克制d:还是 ~克制己方众师弟师妹 r:这+wp:,+d:还是+r:己方+a:众+n:师弟+n:师妹+v:有所+v:克制+wp:,+d:并+d:未+d:全+v:露+n:道境+wp:,) @@ -5429,6 +5449,8 @@ https://byvoid.com/zht/blog/lian-dc/ 日思夜念 日思夜念 // 《大奉打更人》 让你念就念, (~唸v:让 ~唸你 v:让+r:你+v:念+d:就+v:念+wp:,) 單純 zh_conversion 轉換過程: 就念→就唸 你念就念 你唸就唸 +// 《别人练级我修仙,苟到大乘再出山》 口中迅速地念动法决…… (~唸v:拉开 ~唸你 ~唸就 ~唸全部 ~唸和他 ~唸大战 ~唸肉疼之色 ~唸口中 ~唸迅速地 ~唸法决 nl:口中+a:迅速+u:地+v:念+v:动+n:法决+wp:……) 單純 zh_conversion 轉換過程: 地念→地念 +迅速地念动 迅速地唸動 // 解析錯誤 @ 《剑仙三千万》 如果不用神念的话, (~念如果 ~念不 ~念用神 c:如果+d:不+p:用+n:神+v:念+u:的话+wp:,) 單純 zh_conversion 轉換過程: 念的→唸的 // 《剑仙三千万》 在这道神念的特殊结构中, (~念n:结构 p:在+r:这+q:道+n:神+n:念+u:的+a:特殊+n:结构+nd:中+wp:,) 單純 zh_conversion 轉換過程: 念的→唸的 @@ -5453,6 +5475,8 @@ https://byvoid.com/zht/blog/lian-dc/ 善恶念 善惡念 // 《我为长生仙》 还是囊括苍生诸多法,诸多意,诸多念的佛塔更贵重? (~念v:囊括 c:还是+v:囊括+n:苍生+m:诸多+n:法+wp:,+m:诸多+n:意+wp:,+m:诸多+v:念+u:的+n:佛塔+d:更+a:贵重+wp:?) 诸多念的 諸多念的 +// 《别人练级我修仙,苟到大乘再出山》 你认为自己对色念的抵抗已然足够, (~色念p:对 r:你+v:认为+r:自己+p:对+n:色念+u:的+v:抵抗+d:已然+v:足够+wp:,) 單純 zh_conversion 轉換過程: 念的→唸的 +色念的 色念的 // 《大奉打更人》 叠加在念珠细剑上。 (~念珠a:细剑 v:叠加+p:在+n:念珠+a:细剑+nd:上+wp:。) 在念珠 在念珠 // 《神国之上》 你这是在念及故情心慈手软么? (~念v:是 ~念你 ~念这 ~念在 ~念故情 r:你+r:这+v:是+d:在+v:念+v:及+n:故情+i:心慈手软+u:么+wp:?) @@ -5536,6 +5560,8 @@ https://byvoid.com/zht/blog/lian-dc/ 火拼 火併 // 《如此堕怠,怎能成仙》 ”\n\n   小火拼命地摇头, (~拚命v:摇头 wp:”+\n\n   nh:小火+d:拼命+u:地+v:摇头+wp:,) 單純 zh_conversion 轉換過程: 火并→火併 小火拼命 小火拚命 +// 《别人练级我修仙,苟到大乘再出山》 居然能够和离火拼个五五开? (~拚v:知道 ~拚那黑气 ~拚居然 ~拚和离火 ~拚个五五开 d:居然+v:能够+p:和+n:离火+v:拼+q:个+m:五五+v:开+wp:?) 單純 zh_conversion 轉換過程: 火拼→火併 +和离火拼个 和離火拚個 // 《大隐》 里面的人和战马浑身冒火拼命往外冲, (~拚命v:冲 nd:里面+u:的+n:人+c:和+n:战马+n:浑身+v:冒火+d:拼命+p:往+nd:外+v:冲+wp:,) 單純 zh_conversion 轉換過程: 火拼→火併 冒火拼命 冒火拚命 // 《小仙有毒》 早就扑出巫火拼命去了! (~拚命v:去 d:早就+v:扑+v:出+n:巫火+d:拼命+v:去+u:了+wp:!) 單純 zh_conversion 轉換過程: 火拼→火併 @@ -6044,6 +6070,8 @@ https://blog.udn.com/glwang/130670390 扇巴掌大 扇巴掌大 // 《速通修仙!》 这家伙被余老魔一巴掌扇到了九霄云外。 (~搧v:道 r:这+n:家伙+p:被+nh:余老+n:魔+m:一+n:巴掌+v:扇+v:到+u:了+i:九霄云外+wp:。) 巴掌扇到 巴掌搧到 +// 《别人练级我修仙,苟到大乘再出山》 百里屠一巴掌扇在百里奇胖乎乎的脸上, (~搧n:前辈 ~搧反观苏醒 ~搧另外两位武皇供奉 ~搧就在这时 ~搧百里屠 ~搧说罢 ~搧百里屠 nh:百里屠+m:一+n:巴掌+v:扇+p:在+nh:百里奇+z:胖乎乎+u:的+nl:脸上+wp:,) +巴掌扇在 巴掌搧在 // 《术师手册》 一巴掌一巴掌扇过去。 (~搧v:是 ~搧亚修 ~搧忽然 m:一+q:巴掌+m:一+q:巴掌+v:扇+v:过去+wp:。) 巴掌扇过去 巴掌搧過去 // 《术师手册》 好想啪啪几巴掌扇上去! (~搧v:想 ~搧你 d:好+v:想+o:啪啪+m:几+q:巴掌+v:扇+v:上去+wp:!) @@ -6088,8 +6116,12 @@ https://blog.udn.com/glwang/130670390 被扇进了 被搧進了 // 《术师手册》 剑姬为什么会气得想扇你? (~搧v:想 ~搧你 nh:剑姬+r:为什么+v:会+v:气+u:得+v:想+v:扇+r:你+wp:?) 想扇你 想搧你 +// 《速通修仙!》 但是季长生他扇不动。 (~搧v:是 ~搧他 c:但是+nh:季长生+r:他+v:扇+d:不+v:动+wp:。) +他扇不动 他搧不動 // 《术师手册》 索妮娅将亚修的脸都扇红了, (~搧v:是 nh:索妮娅+p:将+nh:亚修+u:的+n:脸+d:都+v:扇+a:红+u:了+wp:,) 脸都扇红了 臉都搧紅了 +// 《别人练级我修仙,苟到大乘再出山》 一巴掌扇在百里奇脸上,险些把他门牙扇掉。 (~搧v:扇 ~搧险些 m:一+q:巴掌+v:扇+p:在+nh:百里奇+nl:脸上+wp:,+d:险些+p:把+r:他+n:门牙+v:扇+v:掉+wp:。) +牙扇掉 牙搧掉 // 解析錯誤 @ 《我师兄实在太稳健了》 这些,应该就是追随后土娘娘的当年之巫吧。 (~后土n:娘娘 v:应该+d:就是+v:追随+n:后土+n:娘娘+u:的) (v:追随+nd:后+nh:土娘娘) @@ -7630,6 +7662,10 @@ https://ctext.org/post-han/zh?searchu=%E4%BA%8B%E8%B7%A1 学生质量 學生素質 // 《都重生了谁谈恋爱啊》 你有没有觉得咱们班的男生质量太差了? (~素質a:差 r:你+v:有+d:没+v:有+v:觉得+r:咱们+n:班+u:的+n:男生+n:质量+d:太+a:差+u:了+wp:?) 男生质量 男生素質 +// 《别人练级我修仙,苟到大乘再出山》 同时灵气质量也提高了百分之一。 (~質地v:提高 c:同时+n:灵气+n:质量+d:也+v:提高+u:了+m:百分之一+wp:。) 單純 zh_conversion 轉換過程: 质→質 +灵气质量 靈氣質地 +// 《别人练级我修仙,苟到大乘再出山》 而且灵力质量也有所提升! (~質地v:有所 c:而且+n:灵力+n:质量+d:也+v:有所+v:提升+wp:!) 單純 zh_conversion 轉換過程: 质→質 +灵力质量 靈力質地 // 《回到过去变成猫》 重要的是经得住质量检测。 (~品質v:检测 a:重要+u:的+v:是+v:经得住+n:质量+v:检测+wp:。) 质量检测 品質檢測 // 《速通修仙!》 质量有待检验。 (~品質v:有待 n:质量+v:有待+v:检验+wp:。)