diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2021-08-25 21:58:51 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-25 21:58:51 -0400 | 
| commit | dfd52e1ecd6919094e0b45fde2ca03c30eaad01f (patch) | |
| tree | 7d6e4ad9b25910e6ad29d7553999bc8910b85006 | |
| parent | dd10dd601e8611d8585ce5d7c5945a0e314e86a8 (diff) | |
Hiragana & katakana helpers (#1908)
* Add hiragana and katakana template helpers
* Update documentation
* Fix documentation
| -rw-r--r-- | docs/templates.md | 62 | ||||
| -rw-r--r-- | ext/js/templates/sandbox/anki-template-renderer.js | 16 | 
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); +    }  } |