Advertisement
Xelieu

Yomichan Handlebar

Jul 1st, 2022 (edited)
677
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 32.72 KB | None | 0 0
  1. {{#*inline "glossary-single"}}
  2. {{~#if (op "||" (op "===" targetDictionary undefined) (op "===" targetDictionary dictionary))~}}
  3. {{~#unless brief~}}
  4. {{~#scope~}}
  5. {{~#set "any" false}}{{/set~}}
  6. {{~#each definitionTags~}}
  7. {{~#if (op "||" (op "!" @root.compactTags) (op "!" redundant))~}}
  8. {{~#if (get "any")}}, {{else}}<i>({{/if~}}
  9. {{name}}
  10. {{~#set "any" true}}{{/set~}}
  11. {{~/if~}}
  12. {{~/each~}}
  13. {{~#unless noDictionaryTag~}}
  14. {{~#if (op "||" (op "!" @root.compactTags) (op "!==" dictionary (get "previousDictionary")))~}}
  15. {{~#if (get "any")}}, {{else}}<i>({{/if~}}
  16. {{dictionary}}
  17. {{~#set "any" true}}{{/set~}}
  18. {{~/if~}}
  19. {{~/unless~}}
  20. {{~#if (get "any")}})</i> {{/if~}}
  21. {{~/scope~}}
  22. {{~#if only~}}({{#each only}}{{.}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}}
  23. {{~/unless~}}
  24. {{~#if (op "<=" glossary.length 1)~}}
  25. {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{/each}}
  26. {{~else if @root.compactGlossaries~}}
  27. {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{#unless @last}} | {{/unless}}{{/each}}
  28. {{~else~}}
  29. {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}<br>{{/each}}
  30. {{~/if~}}
  31. {{~#set "previousDictionary" dictionary~}}{{~/set~}}
  32. {{~/if~}}
  33. {{/inline}}
  34.  
  35. {{~#*inline "glossary-all-jmdict-compact"~}}
  36. {{~#scope~}}
  37. {{~#if (op "===" definition.type "term")~}}
  38. {{~> glossary-single-jmdict-compact definition brief=brief noDictionaryTag=noDictionaryTag ~}}
  39. {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}}
  40. {{~#if (op ">" definition.definitions.length 1)~}}
  41. {{~#each definition.definitions~}}{{~> glossary-single-jmdict-compact . brief=../brief noDictionaryTag=../noDictionaryTag targetDictionary=../targetDictionary ~}}{{~/each~}}
  42. {{~else~}}
  43. {{~#each definition.definitions~}}{{~> glossary-single-jmdict-compact . brief=../brief noDictionaryTag=../noDictionaryTag targetDictionary=../targetDictionary ~}}{{~/each~}}
  44. {{~/if~}}
  45. {{~else if (op "===" definition.type "kanji")~}}
  46. {{~#if (op ">" definition.glossary.length 1)~}}
  47. <ol>{{#each definition.glossary}}<li>{{.}}</li>{{/each}}</ol>
  48. {{~else~}}
  49. {{~#each definition.glossary~}}{{.}}{{~/each~}}
  50. {{~/if~}}
  51. {{~/if~}}
  52. {{~/scope~}}
  53. {{~/inline~}}
  54.  
  55. {{#*inline "glossary-single-jmdict-compact"}}
  56. {{~#if (op "||" (op "===" targetDictionary undefined) (op "===" targetDictionary dictionary))~}}
  57. {{~#unless brief~}}
  58. {{~#scope~}}
  59. {{~#set "any" false}}{{/set~}}
  60. {{~#each definitionTags~}}
  61. {{~#if (op "||" (op "!" @root.compactTags) (op "!" redundant))~}}
  62. {{~#if (get "any")}}, {{else}}<i>({{/if~}}
  63. {{name}}
  64. {{~#set "any" true}}{{/set~}}
  65. {{~/if~}}
  66. {{~/each~}}
  67. {{~#unless noDictionaryTag~}}
  68. {{~#if (op "||" (op "!" @root.compactTags) (op "!==" dictionary (get "previousDictionary")))~}}
  69. {{~#if (get "any")}}, {{else}}<i>({{/if~}}
  70. {{dictionary}}
  71. {{~#set "any" true}}{{/set~}}
  72. {{~/if~}}
  73. {{~/unless~}}
  74. {{~#if (get "any")}})</i> {{/if~}}
  75. {{~/scope~}}
  76. {{~#if only~}}({{#each only}}{{.}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}}
  77. {{~/unless~}}
  78. {{~#if (op "<=" glossary.length 1)~}}
  79. {{#regexReplace "&#x;" "'"}}
  80. {{#regexReplace "(.*)\." "$1"}}
  81. {{#regexReplace "<br>(.*)" "$1"}}
  82. {{#regexReplace "<br><br>" "<br>"}}
  83. {{#regexReplace "(((( |)〘[^〘]*〙)+( |))|(( |)(→|↔)([^0-9]+)([0-9]|)( |))|(( |)[0-9]+( |))| \.\.\.)" ""}}
  84. {{#each glossary}}{{#formatGlossary ../dictionary}}{{#regexReplace "^[^\n].*\n" ""}}{{{.}}}{{/regexReplace}}{{/formatGlossary}}{{/each}}
  85. {{/regexReplace}}
  86. {{/regexReplace}}
  87. {{/regexReplace}}
  88. {{/regexReplace}}
  89. {{/regexReplace}}
  90.  
  91. {{~else if @root.compactGlossaries~}}
  92. {{#regexReplace "&#x;" "'"}}
  93. {{#regexReplace "(.*)\." "$1"}}
  94. {{#regexReplace "<br>(.*)" "$1"}}
  95. {{#regexReplace "<br><br>" "<br>"}}
  96. {{#regexReplace "(((( |)〘[^〘]*〙)+( |))|(( |)(→|↔)([^0-9]+)([0-9]|)( |))|(( |)[0-9]+( |))| \.\.\.)" ""}}
  97. {{#each glossary}}{{#formatGlossary ../dictionary}}{{#regexReplace "^[^\n].*\n" ""}}{{{.}}}{{/regexReplace}}{{/formatGlossary}}{{#unless @last}} | {{/unless}}{{/each}}
  98. {{/regexReplace}}
  99. {{/regexReplace}}
  100. {{/regexReplace}}
  101. {{/regexReplace}}
  102. {{/regexReplace}}
  103. {{~else~}}
  104. <ul>{{#each glossary}}<li>{{#formatGlossary ../dictionary}}{{{.}}}{{/formatGlossary}}</li>{{/each}}</ul>
  105. {{~/if~}}
  106. {{~#set "previousDictionary" dictionary~}}{{~/set~}}
  107. {{~/if~}}
  108. {{/inline}}
  109.  
  110. {{~#*inline "glossary-all-remove-first"~}}
  111. {{~#scope~}}
  112. {{~#if (op "===" definition.type "term")~}}
  113. {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}}
  114. {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}}
  115. {{~#if (op ">" definition.definitions.length 1)~}}
  116. {{~#each definition.definitions~}}{{~> glossary-single-remove-first . brief=../brief noDictionaryTag=../noDictionaryTag targetDictionary=../targetDictionary ~}}{{~/each~}}
  117. {{~else~}}
  118. {{~#each definition.definitions~}}{{~> glossary-single-remove-first . brief=../brief noDictionaryTag=../noDictionaryTag targetDictionary=../targetDictionary ~}}{{~/each~}}
  119. {{~/if~}}
  120. {{~else if (op "===" definition.type "kanji")~}}
  121. {{~#if (op ">" definition.glossary.length 1)~}}
  122. <ol>{{#each definition.glossary}}<li>{{.}}</li>{{/each}}</ol>
  123. {{~else~}}
  124. {{~#each definition.glossary~}}{{.}}{{~/each~}}
  125. {{~/if~}}
  126. {{~/if~}}
  127. {{~/scope~}}
  128. {{~/inline~}}
  129.  
  130. {{#*inline "glossary-single-remove-first"}}
  131. {{~#if (op "||" (op "===" targetDictionary undefined) (op "===" targetDictionary dictionary))~}}
  132. {{~#unless brief~}}
  133. {{~#scope~}}
  134. {{~#set "any" false}}{{/set~}}
  135. {{~#each definitionTags~}}
  136. {{~#if (op "||" (op "!" @root.compactTags) (op "!" redundant))~}}
  137. {{~#if (get "any")}}, {{else}}<i>({{/if~}}
  138. {{name}}
  139. {{~#set "any" true}}{{/set~}}
  140. {{~/if~}}
  141. {{~/each~}}
  142. {{~#unless noDictionaryTag~}}
  143. {{~#if (op "||" (op "!" @root.compactTags) (op "!==" dictionary (get "previousDictionary")))~}}
  144. {{~#if (get "any")}}, {{else}}<i>({{/if~}}
  145. {{dictionary}}
  146. {{~#set "any" true}}{{/set~}}
  147. {{~/if~}}
  148. {{~/unless~}}
  149. {{~#if (get "any")}})</i> {{/if~}}
  150. {{~/scope~}}
  151. {{~#if only~}}({{#each only}}{{.}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}}
  152. {{~/unless~}}
  153. {{~#if (op "<=" glossary.length 1)~}}
  154. {{#multiLine}}{{#regexReplace "^[^\n].*\n" ""}}{{glossary.[0]}}{{/regexReplace}}{{/multiLine}}
  155. {{~else if @root.compactGlossaries~}}
  156. {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{#unless @last}} | {{/unless}}{{/each}}
  157. {{~else~}}
  158. {{#regexReplace "^.*?<br>" ""}}
  159. {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}<br>{{/each}}
  160. {{/regexReplace}}
  161. {{~/if~}}
  162. {{~#set "previousDictionary" dictionary~}}{{~/set~}}
  163. {{~/if~}}
  164. {{/inline}}
  165.  
  166. {{~#*inline "glossary-all-kenkyusha-ne"~}}
  167. {{~#scope~}}
  168. {{~#if (op "===" definition.type "term")~}}
  169. {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}}
  170. {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}}
  171. {{~#if (op ">" definition.definitions.length 1)~}}
  172. {{~#each definition.definitions~}}{{~> glossary-single-kenkyusha-ne . brief=../brief noDictionaryTag=../noDictionaryTag targetDictionary=../targetDictionary ~}}{{~/each~}}
  173. {{~else~}}
  174. {{~#each definition.definitions~}}{{~> glossary-single-kenkyusha-ne . brief=../brief noDictionaryTag=../noDictionaryTag targetDictionary=../targetDictionary ~}}{{~/each~}}
  175. {{~/if~}}
  176. {{~else if (op "===" definition.type "kanji")~}}
  177. {{~#if (op ">" definition.glossary.length 1)~}}
  178. <ol>{{#each definition.glossary}}<li>{{.}}</li>{{/each}}</ol>
  179. {{~else~}}
  180. {{~#each definition.glossary~}}{{.}}{{~/each~}}
  181. {{~/if~}}
  182. {{~/if~}}
  183. {{~/scope~}}
  184. {{~/inline~}}
  185.  
  186. {{#*inline "glossary-single-kenkyusha-ne"}}
  187. {{~#if (op "||" (op "===" targetDictionary undefined) (op "===" targetDictionary dictionary))~}}
  188. {{~#unless brief~}}
  189. {{~#scope~}}
  190. {{~#set "any" false}}{{/set~}}
  191. {{~#each definitionTags~}}
  192. {{~#if (op "||" (op "!" @root.compactTags) (op "!" redundant))~}}
  193. {{~#if (get "any")}}, {{else}}<i>({{/if~}}
  194. {{name}}
  195. {{~#set "any" true}}{{/set~}}
  196. {{~/if~}}
  197. {{~/each~}}
  198. {{~#unless noDictionaryTag~}}
  199. {{~#if (op "||" (op "!" @root.compactTags) (op "!==" dictionary (get "previousDictionary")))~}}
  200. {{~#if (get "any")}}, {{else}}<i>({{/if~}}
  201. {{dictionary}}
  202. {{~#set "any" true}}{{/set~}}
  203. {{~/if~}}
  204. {{~/unless~}}
  205. {{~#if (get "any")}})</i> {{/if~}}
  206. {{~/scope~}}
  207. {{~#if only~}}({{#each only}}{{.}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}}
  208. {{~/unless~}}
  209. {{~#if (op "<=" glossary.length 1)~}}
  210. {{#multiLine}}
  211. {{#regexReplace "^[^\n].*\n|►.*?\n" ""}}
  212. {{#regexReplace "\n・.*?" "\n"}}
  213. {{glossary.[0]}}
  214. {{/regexReplace}}
  215. {{/regexReplace}}
  216. {{/multiLine}}
  217. {{~else if @root.compactGlossaries~}}
  218. {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{#unless @last}} | {{/unless}}{{/each}}
  219. {{~else~}}
  220. {{#regexReplace "^.*?<br>" ""}}
  221. {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}<br>{{/each}}
  222. {{/regexReplace}}
  223. {{~/if~}}
  224. {{~#set "previousDictionary" dictionary~}}{{~/set~}}
  225. {{~/if~}}
  226. {{/inline}}
  227.  
  228. {{~#*inline "glossary-all-generic"~}}
  229. {{~#scope~}}
  230. {{~#if (op "===" definition.type "term")~}}
  231. {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}}
  232. {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}}
  233. {{~#if (op ">" definition.definitions.length 1)~}}
  234. {{~#each definition.definitions~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag targetDictionary=../targetDictionary ~}}{{~/each~}}
  235. {{~else~}}
  236. {{~#each definition.definitions~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag targetDictionary=../targetDictionary ~}}{{~/each~}}
  237. {{~/if~}}
  238. {{~else if (op "===" definition.type "kanji")~}}
  239. {{~#if (op ">" definition.glossary.length 1)~}}
  240. <ol>{{#each definition.glossary}}<li>{{.}}</li>{{/each}}</ol>
  241. {{~else~}}
  242. {{~#each definition.glossary~}}{{.}}{{~/each~}}
  243. {{~/if~}}
  244. {{~/if~}}
  245. {{~/scope~}}
  246. {{~/inline~}}
  247.  
  248. {{#*inline "audio"}}
  249. {{~#if (hasMedia "audio")~}}
  250. [sound:{{#getMedia "audio"}}{{/getMedia}}]
  251. {{~/if~}}
  252. {{/inline}}
  253.  
  254. {{#*inline "character"}}
  255. {{~definition.character~}}
  256. {{/inline}}
  257.  
  258. {{#*inline "dictionary"}}
  259. {{~definition.dictionary~}}
  260. {{/inline}}
  261.  
  262. {{#*inline "expression"}}
  263. {{~#if merge~}}
  264. {{~#if modeTermKana~}}
  265. {{~#each definition.reading~}}
  266. {{{.}}}
  267. {{~#unless @last}}、{{/unless~}}
  268. {{~else~}}
  269. {{~#each definition.expression~}}
  270. {{{.}}}
  271. {{~#unless @last}}、{{/unless~}}
  272. {{~/each~}}
  273. {{~/each~}}
  274. {{~else~}}
  275. {{~#each definition.expression~}}
  276. {{{.}}}
  277. {{~#unless @last}}、{{/unless~}}
  278. {{~/each~}}
  279. {{~/if~}}
  280. {{~else~}}
  281. {{~#if modeTermKana~}}
  282. {{~#if definition.reading~}}
  283. {{definition.reading}}
  284. {{~else~}}
  285. {{definition.expression}}
  286. {{~/if~}}
  287. {{~else~}}
  288. {{definition.expression}}
  289. {{~/if~}}
  290. {{~/if~}}
  291. {{/inline}}
  292.  
  293. {{#*inline "furigana"}}
  294. {{~#if merge~}}
  295. {{~#each definition.expressions~}}
  296. <span class="expression-{{termFrequency}}">{{~#furigana}}{{{.}}}{{/furigana~}}</span>
  297. {{~#unless @last}}、{{/unless~}}
  298. {{~/each~}}
  299. {{~else~}}
  300. {{#furigana}}{{{definition}}}{{/furigana}}
  301. {{~/if~}}
  302. {{/inline}}
  303.  
  304. {{#*inline "furigana-plain"}}
  305. {{~#if merge~}}
  306. {{~#each definition.expressions~}}
  307. <span class="expression-{{termFrequency}}">{{~#furiganaPlain}}{{{.}}}{{/furiganaPlain~}}</span>
  308. {{~#unless @last}}、{{/unless~}}
  309. {{~/each~}}
  310. {{~else~}}
  311. {{#furiganaPlain}}{{{definition}}}{{/furiganaPlain}}
  312. {{~/if~}}
  313. {{/inline}}
  314.  
  315. {{~#*inline "glossary"~}}
  316. {{~#scope~}}
  317. {{~#if (op "===" definition.type "term")~}}
  318. {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}}
  319. {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}}
  320. {{~#if (op ">" definition.definitions.length 1)~}}
  321. <ol>{{~#each definition.definitions~}}<li>{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag targetDictionary=../targetDictionary ~}}</li>{{~/each~}}</ol>
  322. {{~else~}}
  323. {{~#each definition.definitions~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag targetDictionary=../targetDictionary ~}}{{~/each~}}
  324. {{~/if~}}
  325. {{~else if (op "===" definition.type "kanji")~}}
  326. {{~#if (op ">" definition.glossary.length 1)~}}
  327. <ol>{{#each definition.glossary}}<li>{{.}}</li>{{/each}}</ol>
  328. {{~else~}}
  329. {{~#each definition.glossary~}}{{.}}{{~/each~}}
  330. {{~/if~}}
  331. {{~/if~}}
  332. {{~/scope~}}
  333. {{~/inline~}}
  334.  
  335. {{#*inline "glossary-no-dictionary"}}
  336. {{~> glossary noDictionaryTag=true ~}}
  337. {{/inline}}
  338.  
  339. {{#*inline "glossary-brief"}}
  340. {{~> glossary brief=true ~}}
  341. {{/inline}}
  342.  
  343. {{#*inline "kunyomi"}}
  344. {{~#each definition.kunyomi}}{{.}}{{#unless @last}}, {{/unless}}{{/each~}}
  345. {{/inline}}
  346.  
  347. {{#*inline "onyomi"}}
  348. {{~#each definition.onyomi}}{{.}}{{#unless @last}}, {{/unless}}{{/each~}}
  349. {{/inline}}
  350.  
  351. {{#*inline "reading"}}
  352. {{~#unless modeTermKana~}}
  353. {{~#if merge~}}
  354. {{~#each definition.reading~}}
  355. {{{.}}}
  356. {{~#unless @last}}、{{/unless~}}
  357. {{~/each~}}
  358. {{~else~}}
  359. {{~definition.reading~}}
  360. {{~/if~}}
  361. {{~/unless~}}
  362. {{/inline}}
  363.  
  364. {{#*inline "sentence"}}
  365. {{~#if definition.cloze}}{{definition.cloze.sentence}}{{/if~}}
  366. {{/inline}}
  367.  
  368. {{#*inline "cloze-prefix"}}
  369. {{~#if definition.cloze}}{{definition.cloze.prefix}}{{/if~}}
  370. {{/inline}}
  371.  
  372. {{#*inline "cloze-body"}}
  373. {{~#if definition.cloze}}{{definition.cloze.body}}{{/if~}}
  374. {{/inline}}
  375.  
  376. {{#*inline "cloze-suffix"}}
  377. {{~#if definition.cloze}}{{definition.cloze.suffix}}{{/if~}}
  378. {{/inline}}
  379.  
  380. {{#*inline "tags"}}
  381. {{~#mergeTags definition group merge}}{{this}}{{/mergeTags~}}
  382. {{/inline}}
  383.  
  384. {{#*inline "url"}}
  385. <a href="{{definition.url}}">{{definition.url}}</a>
  386. {{/inline}}
  387.  
  388. {{#*inline "screenshot"}}
  389. <img src="{{definition.screenshotFileName}}" />
  390. {{/inline}}
  391.  
  392. {{#*inline "document-title"}}
  393. {{~context.document.title~}}
  394. {{/inline}}
  395.  
  396. {{! Pitch Accents }}
  397. {{#*inline "pitch-accent-item"}}
  398. {{~#pronunciation format=format reading=reading downstepPosition=position nasalPositions=nasalPositions devoicePositions=devoicePositions~}}{{~/pronunciation~}}
  399. {{/inline}}
  400.  
  401. {{#*inline "pitch-accent-item-disambiguation"}}
  402. {{~#scope~}}
  403. {{~#set "exclusive" (spread exclusiveExpressions exclusiveReadings)}}{{/set~}}
  404. {{~#if (op ">" (property (get "exclusive") "length") 0)~}}
  405. {{~#set "separator" ""~}}{{/set~}}
  406. <em>({{#each (get "exclusive")~}}
  407. {{~#get "separator"}}{{/get~}}{{{.}}}
  408. {{~/each}} only) </em>
  409. {{~/if~}}
  410. {{~/scope~}}
  411. {{/inline}}
  412.  
  413. {{#*inline "pitch-accent-list"}}
  414. {{~#if (op ">" pitchCount 0)~}}
  415. {{~#if (op ">" pitchCount 1)~}}{{~/if~}}
  416. {{~#each pitches~}}
  417. {{~#each pitches~}}
  418. {{~#if (op ">" ../../pitchCount 1)~}}{{~/if~}}
  419. {{~> pitch-accent-item-disambiguation~}}
  420. {{~> pitch-accent-item format=../../format~}}
  421. {{~#if (op ">" ../../pitchCount 1)~}}{{~/if~}}
  422. {{~/each~}}
  423. {{~/each~}}
  424. {{~#if (op ">" pitchCount 1)~}}{{~/if~}}
  425. {{~else~}}
  426. {{~/if~}}
  427. {{/inline}}
  428.  
  429. {{#*inline "pitch-accents"}}
  430. {{~> pitch-accent-list format='text'~}}
  431. {{/inline}}
  432.  
  433. {{#*inline "pitch-accent-graphs"}}
  434. {{~> pitch-accent-list format='graph'~}}
  435. {{/inline}}
  436.  
  437. {{#*inline "pitch-accent-positions"}}
  438. {{#regexReplace "<(.|\n)*?>" ""}}{{~> pitch-accent-list format='position'~}}{{/regexReplace}}
  439. {{/inline}}
  440. {{! End Pitch Accents }}
  441.  
  442. {{#*inline "clipboard-image"}}
  443. {{~#if (hasMedia "clipboardImage")~}}
  444. <img src="{{#getMedia "clipboardImage"}}{{/getMedia}}" />
  445. {{~/if~}}
  446. {{/inline}}
  447.  
  448. {{#*inline "clipboard-text"}}
  449. {{~#if (hasMedia "clipboardText")}}{{#regexReplace "\n(?!$)" "<br>"}}{{#getMedia "clipboardText"}}{{/getMedia}}{{/regexReplace}}{{/if~}}
  450. {{/inline}}
  451.  
  452. {{#*inline "conjugation"}}
  453. {{~#if definition.reasons~}}
  454. {{~#each definition.reasons~}}
  455. {{~#if (op ">" @index 0)}} « {{/if~}}
  456. {{.}}
  457. {{~/each~}}
  458. {{~/if~}}
  459. {{/inline}}
  460.  
  461. {{#*inline "frequencies"}}
  462. {{~#if (op ">" definition.frequencies.length 0)~}}
  463. <ul style="text-align: left;">
  464. {{~#each definition.frequencies~}}
  465. <li>
  466. {{~#if (op "!==" ../definition.type "kanji")~}}
  467. {{~#if (op "||" (op ">" ../uniqueExpressions.length 1) (op ">" ../uniqueReadings.length 1))~}}(
  468. {{~#furigana expression reading~}}{{~/furigana~}}
  469. ) {{/if~}}
  470. {{~/if~}}
  471. {{~dictionary}}: {{frequency~}}
  472. </li>
  473. {{~/each~}}
  474. </ul>
  475. {{~/if~}}
  476. {{/inline}}
  477.  
  478. {{#*inline "stroke-count"}}
  479. {{~#scope~}}
  480. {{~#set "found" false}}{{/set~}}
  481. {{~#each definition.stats.misc~}}
  482. {{~#if (op "===" name "strokes")~}}
  483. {{~#set "found" true}}{{/set~}}
  484. Stroke count: {{value}}
  485. {{~/if~}}
  486. {{~/each~}}
  487. {{~#if (op "!" (get "found"))~}}
  488. Stroke count: Unknown
  489. {{~/if~}}
  490. {{~/scope~}}
  491. {{/inline}}
  492.  
  493. {{~#*inline "one-dict"~}}
  494. {{~#scope~}}
  495. {{~#if (op "===" definition.type "term")~}}
  496. {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}}
  497. {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}}
  498. {{~> glossary-single definition.definitions.[0] brief=brief noDictionaryTag=noDictionaryTag ~}}
  499. {{~else if (op "===" definition.type "kanji")~}}
  500. {{definition.glossary.[0]}}
  501. {{~/if~}}
  502. {{~/scope~}}
  503. {{~/inline~}}
  504.  
  505. {{#*inline "one-dict-no-dictionary"}}
  506. {{~> one-dict noDictionaryTag=true ~}}
  507. {{/inline}}
  508.  
  509. {{#*inline "one-dict-brief"}}
  510. {{~> one-dict brief=true ~}}
  511. {{/inline}}
  512.  
  513. {{~#*inline "two-dict"~}}
  514. {{~#scope~}}
  515. {{~#if (op "===" definition.type "term")~}}
  516. {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}}
  517. {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}}
  518. {{~#if (op ">" definition.definitions.length 1)~}}
  519. <ol>
  520. <li>{{~> glossary-single definition.definitions.[0] brief=brief noDictionaryTag=noDictionaryTag ~}}</li>
  521. <li>{{~> glossary-single definition.definitions.[1] brief=brief noDictionaryTag=noDictionaryTag ~}}</li>
  522. </ol>
  523. {{~else~}}
  524. {{~#each definition.definitions~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}{{~/each~}}
  525. {{~/if~}}
  526. {{~else if (op "===" definition.type "kanji")~}}
  527. {{~#if (op ">" definition.glossary.length 1)~}}
  528. <ol>
  529. <li>{{definition.glossary.[0]}}</li>
  530. <li>{{definition.glossary.[1]}}</li>
  531. </ol>
  532. {{~else~}}
  533. {{~#each definition.glossary~}}{{.}}{{~/each~}}
  534. {{~/if~}}
  535. {{~/if~}}
  536. {{~/scope~}}
  537. {{~/inline~}}
  538.  
  539. {{#*inline "two-dict-no-dictionary"}}
  540. {{~> two-dict noDictionaryTag=true ~}}
  541. {{/inline}}
  542.  
  543. {{#*inline "two-dict-brief"}}
  544. {{~> two-dict brief=true ~}}
  545. {{/inline}}
  546.  
  547. {{~#*inline "glossary-jmdict"~}}
  548. {{~> glossary-all-remove-first brief=brief noDictionaryTag=noDictionaryTag targetDictionary="JMdict (English)" ~}}
  549. {{~/inline~}}
  550.  
  551. {{#*inline "glossary-jmdict-no-dictionary"}}
  552. {{~> glossary-jmdict noDictionaryTag=true ~}}
  553. {{/inline}}
  554.  
  555. {{#*inline "glossary-jmdict-brief"}}
  556. {{~> glossary-jmdict brief=true ~}}
  557. {{/inline}}
  558.  
  559. {{~#*inline "glossary-jmdict-compact"~}}
  560. {{~> glossary-all-jmdict-compact brief=brief noDictionaryTag=noDictionaryTag targetDictionary="JMdict (English)" ~}}
  561. {{~/inline~}}
  562.  
  563. {{#*inline "glossary-jmdict-compact-no-dictionary"}}
  564. {{~> glossary-jmdict-compact noDictionaryTag=true ~}}
  565. {{/inline}}
  566.  
  567. {{#*inline "glossary-jmdict-compact-brief"}}
  568. {{~> glossary-jmdict-compact brief=true ~}}
  569. {{/inline}}
  570.  
  571. {{~#*inline "glossary-kenkyusha"~}}
  572. {{~> glossary-all-remove-first brief=brief noDictionaryTag=noDictionaryTag targetDictionary="研究社 新和英大辞典 第5版" ~}}
  573. {{~/inline~}}
  574.  
  575. {{#*inline "glossary-kenkyusha-no-dictionary"}}
  576. {{~> glossary-kenkyusha noDictionaryTag=true ~}}
  577. {{/inline}}
  578.  
  579. {{#*inline "glossary-kenkyusha-brief"}}
  580. {{~> glossary-kenkyusha brief=true ~}}
  581. {{/inline}}
  582.  
  583. {{~#*inline "glossary-kenkyusha-ne"~}}
  584. {{~> glossary-all-kenkyusha-ne brief=brief noDictionaryTag=noDictionaryTag targetDictionary="研究社 新和英大辞典 第5版" ~}}
  585. {{~/inline~}}
  586.  
  587. {{#*inline "glossary-kenkyusha-ne-no-dictionary"}}
  588. {{~> glossary-kenkyusha-ne noDictionaryTag=true ~}}
  589. {{/inline}}
  590.  
  591. {{#*inline "glossary-kenkyusha-ne-brief"}}
  592. {{~> glossary-kenkyusha-ne brief=true ~}}
  593. {{/inline}}
  594.  
  595. {{~#*inline "glossary-kireicake"~}}
  596. {{~> glossary-all-remove-first brief=brief noDictionaryTag=noDictionaryTag targetDictionary="KireiCake" ~}}
  597. {{~/inline~}}
  598.  
  599. {{#*inline "glossary-kireicake-no-dictionary"}}
  600. {{~> glossary-kireicake noDictionaryTag=true ~}}
  601. {{/inline}}
  602.  
  603. {{#*inline "glossary-kireicake-brief"}}
  604. {{~> glossary-kireicake brief=true ~}}
  605. {{/inline}}
  606.  
  607. {{~#*inline "glossary-meikyou"~}}
  608. {{~> glossary-all-remove-first brief=brief noDictionaryTag=noDictionaryTag targetDictionary="明鏡国語辞典" ~}}
  609. {{~/inline~}}
  610.  
  611. {{#*inline "glossary-meikyou-no-dictionary"}}
  612. {{~> glossary-meikyou noDictionaryTag=true ~}}
  613. {{/inline}}
  614.  
  615. {{#*inline "glossary-meikyou-brief"}}
  616. {{~> glossary-meikyou brief=true ~}}
  617. {{/inline}}
  618.  
  619. {{~#*inline "glossary-shinjirin"~}}
  620. {{~> glossary-all-remove-first brief=brief noDictionaryTag=noDictionaryTag targetDictionary="ハイブリッド新辞林" ~}}
  621. {{~/inline~}}
  622.  
  623. {{#*inline "glossary-shinjirin-no-dictionary"}}
  624. {{~> glossary-shinjirin noDictionaryTag=true ~}}
  625. {{/inline}}
  626.  
  627. {{#*inline "glossary-shinjirin-brief"}}
  628. {{~> glossary-shinjirin brief=true ~}}
  629. {{/inline}}
  630.  
  631. {{~#*inline "glossary-shinmeikai"~}}
  632. {{~> glossary-all-remove-first brief=brief noDictionaryTag=noDictionaryTag targetDictionary="新明解国語辞典 第五版" ~}}
  633. {{~/inline~}}
  634.  
  635. {{#*inline "glossary-shinmeikai-no-dictionary"}}
  636. {{~> glossary-shinmeikai noDictionaryTag=true ~}}
  637. {{/inline}}
  638.  
  639. {{#*inline "glossary-shinmeikai-brief"}}
  640. {{~> glossary-shinmeikai brief=true ~}}
  641. {{/inline}}
  642.  
  643. {{~#*inline "glossary-jitsuyou"~}}
  644. {{~> glossary-all-remove-first brief=brief noDictionaryTag=noDictionaryTag targetDictionary="実用日本語表現辞典" ~}}
  645. {{~/inline~}}
  646.  
  647. {{#*inline "glossary-jitsuyou-no-dictionary"}}
  648. {{~> glossary-jitsuyou noDictionaryTag=true ~}}
  649. {{/inline}}
  650.  
  651. {{#*inline "glossary-jitsuyou-brief"}}
  652. {{~> glossary-jitsuyou brief=true ~}}
  653. {{/inline}}
  654.  
  655. {{~#*inline "glossary-daijisen"~}}
  656. {{~> glossary-all-remove-first brief=brief noDictionaryTag=noDictionaryTag targetDictionary="デジタル大辞泉" ~}}
  657. {{~/inline~}}
  658.  
  659. {{#*inline "glossary-daijisen-no-dictionary"}}
  660. {{~> glossary-daijisen noDictionaryTag=true ~}}
  661. {{/inline}}
  662.  
  663. {{#*inline "glossary-daijisen-brief"}}
  664. {{~> glossary-daijisen brief=true ~}}
  665. {{/inline}}
  666.  
  667. {{~#*inline "glossary-oukoku"~}}
  668. {{~> glossary-all-remove-first brief=brief noDictionaryTag=noDictionaryTag targetDictionary="旺文社国語辞典 第十一版" ~}}
  669. {{~/inline~}}
  670.  
  671. {{#*inline "glossary-oukoku-no-dictionary"}}
  672. {{~> glossary-oukoku noDictionaryTag=true ~}}
  673. {{/inline}}
  674.  
  675. {{#*inline "glossary-oukoku-brief"}}
  676. {{~> glossary-oukoku brief=true ~}}
  677. {{/inline}}
  678.  
  679. {{#*inline "selection-text"}}
  680. {{~#if (hasMedia "selectionText")}}{{#getMedia "selectionText"}}{{/getMedia}}{{/if~}}
  681. {{/inline}}
  682.  
  683. {{~> (lookup . "marker") ~}}
  684.  
  685. {{#*inline "freq"}}
  686. {{~! Frequency sort handlebars: v23.02.05.1 ~}}
  687. {{~! The latest version can be found at https://github.com/MarvNC/JP-Resources ~}}
  688. {{~#scope~}}
  689. {{~! Options ~}}
  690. {{~#set "opt-ignored-freq-dict-regex"~}} ^(JLPT_Level)$ {{~/set~}}
  691. {{~#set "opt-keep-freqs-past-first-regex"~}} ^()$ {{~/set~}}
  692. {{~set "opt-no-freq-default-value" 0 ~}}
  693. {{~set "opt-freq-sorting-method" "harmonic" ~}} {{~! "min", "first", "avg", "harmonic" ~}}
  694. {{~! End of options ~}}
  695.  
  696. {{~! Do not change the code below unless you know what you are doing. ~}}
  697. {{~set "result-freq" -1 ~}} {{~! -1 is chosen because no frequency dictionaries should have an entry as -1 ~}}
  698. {{~set "prev-freq-dict" "" ~}}
  699. {{~set "t" 1 ~}}
  700.  
  701. {{~#each definition.frequencies~}}
  702.  
  703. {{~! rx-match-ignored-freq is not empty if ignored <=> rx-match-ignored-freq is empty if not ignored ~}}
  704. {{~#set "rx-match-ignored-freq" ~}}
  705. {{~#regexMatch (get "opt-ignored-freq-dict-regex") "gu"~}}{{this.dictionary}}{{~/regexMatch~}}
  706. {{/set~}}
  707. {{~#if (op "===" (get "rx-match-ignored-freq") "") ~}}
  708.  
  709. {{~!
  710. only uses the 1st frequency of any dictionary.
  711. For example, if JPDB lists 440 and 26189㋕, only the first 440 will be used.
  712. ~}}
  713. {{~set "read-freq" false ~}}
  714. {{~#if (op "!==" (get "prev-freq-dict") this.dictionary ) ~}}
  715. {{~set "read-freq" true ~}}
  716. {{~set "prev-freq-dict" this.dictionary ~}}
  717. {{/if~}}
  718.  
  719. {{~#if (op "!" (get "read-freq") ) ~}}
  720. {{~#set "rx-match-keep-freqs" ~}}
  721. {{~#regexMatch (get "opt-keep-freqs-past-first-regex") "gu"~}}{{this.dictionary}}{{~/regexMatch~}}
  722. {{/set~}}
  723.  
  724. {{~! rx-match-keep-freqs is not empty if keep freqs ~}}
  725. {{~#if (op "!==" (get "rx-match-keep-freqs") "") ~}}
  726. {{~set "read-freq" true ~}}
  727. {{/if~}}
  728. {{/if~}}
  729.  
  730. {{~#if (get "read-freq") ~}}
  731. {{~set "f" (op "+" (regexMatch "\d+" "" this.frequency)) ~}}
  732.  
  733. {{~#if (op "===" (get "opt-freq-sorting-method") "min") ~}}
  734. {{~#if
  735. (op "||"
  736. (op "===" (get "result-freq") -1)
  737. (op ">" (get "result-freq") (get "f"))
  738. )
  739. ~}}
  740. {{~set "result-freq" (op "+" (get "f")) ~}}
  741. {{~/if~}}
  742.  
  743. {{~else if (op "===" (get "opt-freq-sorting-method") "first") ~}}
  744. {{~#if (op "===" (get "result-freq") -1) ~}}
  745. {{~set "result-freq" (get "f") ~}}
  746. {{~/if~}}
  747.  
  748. {{~else if (op "===" (get "opt-freq-sorting-method") "avg") ~}}
  749.  
  750. {{~#if (op "===" (get "result-freq") -1) ~}}
  751. {{~set "result-freq" (get "f") ~}}
  752. {{~else~}}
  753. {{~!
  754. iterative mean formula (to prevent floating point overflow):
  755. $S_{(t+1)} = S_t + \frac{1}{t+1} (x - S_t)$
  756. - example java implementation: https://stackoverflow.com/a/1934266
  757. - proof: https://www.heikohoffmann.de/htmlthesis/node134.html
  758. ~}}
  759. {{~set "result-freq"
  760. (op "+"
  761. (get "result-freq")
  762. (op "/"
  763. (op "-"
  764. (get "f")
  765. (get "result-freq")
  766. )
  767. (get "t")
  768. )
  769. )
  770. }}
  771. {{~/if~}}
  772. {{~set "t" (op "+" (get "t") 1) ~}}
  773.  
  774. {{~else if (op "===" (get "opt-freq-sorting-method") "harmonic") ~}}
  775. {{~#if (op ">" (get "f") 0) ~}} {{~! ensures only positive numbers are used ~}}
  776. {{~#if (op "===" (get "result-freq") -1) ~}}
  777. {{~set "result-freq" (op "/" 1 (get "f")) ~}}
  778. {{~else ~}}
  779. {{~set "result-freq"
  780. (op "+"
  781. (get "result-freq")
  782. (op "/" 1 (get "f"))
  783. )
  784. }}
  785. {{~set "t" (op "+" (get "t") 1) ~}}
  786. {{~/if~}}
  787. {{~/if~}}
  788.  
  789. {{~else if (op "===" (get "opt-freq-sorting-method") "debug") ~}}
  790.  
  791. {{ this.dictionary }}: {{ this.frequency }} -> {{ get "f" }} <br>
  792.  
  793. {{~else~}}
  794. (INVALID opt-freq-sorting-method value)
  795. {{~/if~}}
  796.  
  797. {{~/if~}}
  798.  
  799. {{~/if~}}
  800.  
  801. {{~/each~}}
  802.  
  803. {{~! (x) >> 0 apparently floors x: https://stackoverflow.com/a/4228528 ~}}
  804. {{~#if (op "===" (get "result-freq") -1) ~}}
  805. {{~set "result-freq" (get "opt-no-freq-default-value") ~}}
  806. {{~ else if (op "===" (get "opt-freq-sorting-method") "avg") ~}}
  807. {{~set "result-freq"
  808. (op ">>" (get "result-freq") 0 )
  809. ~}}
  810. {{~ else if (op "===" (get "opt-freq-sorting-method") "harmonic") ~}}
  811. {{~set "result-freq"
  812. (op ">>"
  813. (op "*"
  814. (op "/" 1 (get "result-freq"))
  815. (get "t")
  816. )
  817. 0
  818. )
  819. ~}}
  820. {{~/if~}}
  821.  
  822. {{~get "result-freq"~}}
  823. {{~/scope~}}
  824. {{/inline}}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement