aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2021-08-25 21:58:51 -0400
committerGitHub <noreply@github.com>2021-08-25 21:58:51 -0400
commitdfd52e1ecd6919094e0b45fde2ca03c30eaad01f (patch)
tree7d6e4ad9b25910e6ad29d7553999bc8910b85006
parentdd10dd601e8611d8585ce5d7c5945a0e314e86a8 (diff)
Hiragana & katakana helpers (#1908)
* Add hiragana and katakana template helpers * Update documentation * Fix documentation
-rw-r--r--docs/templates.md62
-rw-r--r--ext/js/templates/sandbox/anki-template-renderer.js16
2 files changed, 75 insertions, 3 deletions
diff --git a/docs/templates.md b/docs/templates.md
index f1777fde..be17c30a 100644
--- a/docs/templates.md
+++ b/docs/templates.md
@@ -539,8 +539,8 @@ Returns the type of a value.
<details>
<summary>Syntax:</summary>
- <code>{{#typeof <i>value</i>}}{{/get}}</code><br>
- <code>{{#typeof}}<i>value</i>{{/get}}</code><br>
+ <code>{{#typeof <i>value</i>}}{{/typeof}}</code><br>
+ <code>{{#typeof}}<i>value</i>{{/typeof}}</code><br>
* _`value`_ <br>
The value to check.
@@ -775,6 +775,64 @@ same as the system used for generating popup and search page dictionary entries.
</details>
+### `hiragana`
+
+Converts katakana text to hiragana.
+
+<details>
+ <summary>Syntax:</summary>
+
+ <code>{{#hiragana <i>value</i>}}{{/hiragana}}</code><br>
+ <code>{{#hiragana}}<i>value</i>{{/hiragana}}</code><br>
+
+ * _`value`_ <br>
+ The text to convert.
+</details>
+<details>
+ <summary>Example:</summary>
+
+ ```handlebars
+ {{#hiragana "よみちゃん ヨミちゃん ヨミチャン"}}{{/hiragana}}
+ {{#hiragana}}よみちゃん ヨミちゃん ヨミチャン{{/hiragana}}
+ ```
+
+ Output:
+ ```html
+ よみちゃん よみちゃん よみちゃん
+ よみちゃん よみちゃん よみちゃん
+ ```
+</details>
+
+
+### `katakana`
+
+Converts hiragana text to katakana.
+
+<details>
+ <summary>Syntax:</summary>
+
+ <code>{{#katakana <i>text</i>}}{{/katakana}}</code><br>
+ <code>{{#katakana}}<i>text</i>{{/katakana}}</code><br>
+
+ * _`text`_ <br>
+ The text to convert.
+</details>
+<details>
+ <summary>Example:</summary>
+
+ ```handlebars
+ {{#hiragana "よみちゃん ヨミちゃん ヨミチャン"}}{{/hiragana}}
+ {{#hiragana}}よみちゃん ヨミちゃん ヨミチャン{{/hiragana}}
+ ```
+
+ Output:
+ ```html
+ ヨミチャン ヨミチャン ヨミチャン
+ ヨミチャン ヨミチャン ヨミチャン
+ ```
+</details>
+
+
## Legacy Helpers
Yomichan has historically used Handlebars templates to generate the HTML used on the search page and results popup.
diff --git a/ext/js/templates/sandbox/anki-template-renderer.js b/ext/js/templates/sandbox/anki-template-renderer.js
index 43092ec2..8a257bcc 100644
--- a/ext/js/templates/sandbox/anki-template-renderer.js
+++ b/ext/js/templates/sandbox/anki-template-renderer.js
@@ -87,7 +87,9 @@ class AnkiTemplateRenderer {
['formatGlossary', this._formatGlossary.bind(this)],
['hasMedia', this._hasMedia.bind(this)],
['getMedia', this._getMedia.bind(this)],
- ['pronunciation', this._pronunciation.bind(this)]
+ ['pronunciation', this._pronunciation.bind(this)],
+ ['hiragana', this._hiragana.bind(this)],
+ ['katakana', this._katakana.bind(this)]
]);
this._templateRenderer.registerDataType('ankiNote', {
modifier: ({marker, commonData}) => this._ankiNoteDataCreator.create(marker, commonData),
@@ -591,4 +593,16 @@ class AnkiTemplateRenderer {
return '';
}
}
+
+ _hiragana(context, ...args) {
+ const ii = args.length - 1;
+ const value = (ii > 0 ? args[0] : args[ii].fn(context));
+ return this._japaneseUtil.convertKatakanaToHiragana(value);
+ }
+
+ _katakana(context, ...args) {
+ const ii = args.length - 1;
+ const value = (ii > 0 ? args[0] : args[ii].fn(context));
+ return this._japaneseUtil.convertHiraganaToKatakana(value);
+ }
}