diff options
| -rw-r--r-- | docs/templates.md | 20 | ||||
| -rw-r--r-- | ext/data/templates/anki-field-templates-upgrade-v21.handlebars | 61 | ||||
| -rw-r--r-- | ext/data/templates/default-anki-field-templates.handlebars | 24 | ||||
| -rw-r--r-- | test/test-options-util.js | 110 | 
4 files changed, 189 insertions, 26 deletions
| diff --git a/docs/templates.md b/docs/templates.md index e0ea0861..e19309a7 100644 --- a/docs/templates.md +++ b/docs/templates.md @@ -351,7 +351,7 @@ Gets a value from the custom state stack.  <details>    <summary>Syntax:</summary> -  <code>{{#get <i>name</i>}}{{/get}}</code> +  <code>{{get <i>name</i>}}</code>    * _`name`_ <br>      The name of the variable to get. @@ -360,7 +360,7 @@ Gets a value from the custom state stack.    <summary>Example:</summary>    ```handlebars -  {{#get "some-text"}}{{/get}} +  {{get "some-text"}}    ```    Output: @@ -378,7 +378,7 @@ Assigns a value to the custom state stack.    <summary>Syntax:</summary>    <code>{{#set <i>name</i>}}<i>value</i>{{/get}}</code><br> -  <code>{{#set <i>name</i> <i>value</i>}}{{/get}}</code><br> +  <code>{{set <i>name</i> <i>value</i>}}</code><br>    * _`name`_ <br>      The name of the variable to assign. @@ -390,7 +390,7 @@ Assigns a value to the custom state stack.    ```handlebars    {{#set "some-text"}}This is the value of some-text!{{/set~}} -  {{~#set "some-number" 32}}{{/set}} +  {{~set "some-number" 32}}    ```    Output: @@ -419,14 +419,14 @@ and variable lookups will start from the most recent scope and work backwards un    <summary>Example:</summary>    ```handlebars -  {{~#set "key" 32}}{{/set~}} -  {{~#get "key"}}{{/get~}}, +  {{~set "key" 32~}} +  {{~get "key"~}},    {{~#scope~}} -    {{~#get "key"}}{{/get~}}, -    {{~#set "key" 64}}{{/set~}} -    {{~#get "key"}}{{/get~}}, +    {{~#get "key"~}}, +    {{~#set "key" 64~}} +    {{~#get "key"~}},    {{~/scope~}} -  {{~#get "key"}}{{/get~}} +  {{~get "key"~}}    ```    Output: diff --git a/ext/data/templates/anki-field-templates-upgrade-v21.handlebars b/ext/data/templates/anki-field-templates-upgrade-v21.handlebars index 99db50b6..2fa0f0aa 100644 --- a/ext/data/templates/anki-field-templates-upgrade-v21.handlebars +++ b/ext/data/templates/anki-field-templates-upgrade-v21.handlebars @@ -1,3 +1,14 @@ +{{<<<<<<<}} +{{~#set "any" false}}{{/set~}} +{{=======}} +{{~set "any" false~}} +{{>>>>>>>}} + +{{<<<<<<<}} +{{~#set "any" true}}{{/set~}} +{{=======}} +{{~set "any" true~}} +{{>>>>>>>}}  {{<<<<<<<}}  {{#each glossary}}{{#formatGlossary ../dictionary}}{{{.}}}{{/formatGlossary}}{{/each}} @@ -18,6 +29,12 @@  {{>>>>>>>}}  {{<<<<<<<}} +{{~#set "previousDictionary" dictionary~}}{{~/set~}} +{{=======}} +{{~set "previousDictionary" dictionary~}} +{{>>>>>>>}} + +{{<<<<<<<}}  <span class="expression-{{termFrequency}}">{{~#furigana}}{{{.}}}{{/furigana~}}</span>  {{=======}}  <span class="expression-{{termFrequency}}">{{~furigana .~}}</span> @@ -46,3 +63,47 @@  {{=======}}  {{~furigana expression reading~}}  {{>>>>>>>}} + +{{<<<<<<<}} +{{~#set "exclusive" (spread exclusiveExpressions exclusiveReadings)}}{{/set~}} +{{=======}} +{{~set "exclusive" (spread exclusiveExpressions exclusiveReadings)~}} +{{>>>>>>>}} + +{{<<<<<<<}} +{{~#set "separator" ""~}}{{/set~}} +{{=======}} +{{~set "separator" ""~}} +{{>>>>>>>}} + +{{<<<<<<<}} +{{~#get "separator"}}{{/get~}}{{{.}}} +{{=======}} +{{~get "separator"~}}{{{.}}} +{{>>>>>>>}} + +{{<<<<<<<}} +{{~#set "found" false}}{{/set~}} +{{=======}} +{{~set "found" false~}} +{{>>>>>>>}} + +{{<<<<<<<}} +{{~#set "found" true}}{{/set~}} +{{=======}} +{{~set "found" true~}} +{{>>>>>>>}} + +{{<<<<<<<}} +{{~#set "first" true}}{{/set~}} +{{=======}} +{{~set "first" true~}} +{{>>>>>>>}} + +{{<<<<<<<}} +                        {{~#set (concat "used_" .) true~}}{{~/set~}} +                        {{~#set "first" false~}}{{~/set~}} +{{=======}} +                        {{~set (concat "used_" .) true~}} +                        {{~set "first" false~}} +{{>>>>>>>}} diff --git a/ext/data/templates/default-anki-field-templates.handlebars b/ext/data/templates/default-anki-field-templates.handlebars index 58bc68e2..69c7e7a1 100644 --- a/ext/data/templates/default-anki-field-templates.handlebars +++ b/ext/data/templates/default-anki-field-templates.handlebars @@ -1,19 +1,19 @@  {{#*inline "glossary-single"}}      {{~#unless brief~}}          {{~#scope~}} -            {{~#set "any" false}}{{/set~}} +            {{~set "any" false~}}              {{~#each definitionTags~}}                  {{~#if (op "||" (op "!" @root.compactTags) (op "!" redundant))~}}                      {{~#if (get "any")}}, {{else}}<i>({{/if~}}                      {{name}} -                    {{~#set "any" true}}{{/set~}} +                    {{~set "any" true~}}                  {{~/if~}}              {{~/each~}}              {{~#unless noDictionaryTag~}}                  {{~#if (op "||" (op "!" @root.compactTags) (op "!==" dictionary (get "previousDictionary")))~}}                      {{~#if (get "any")}}, {{else}}<i>({{/if~}}                      {{dictionary}} -                    {{~#set "any" true}}{{/set~}} +                    {{~set "any" true~}}                  {{~/if~}}              {{~/unless~}}              {{~#if (get "any")}})</i> {{/if~}} @@ -27,7 +27,7 @@      {{~else~}}          <ul>{{#each glossary}}<li>{{formatGlossary ../dictionary .}}</li>{{/each}}</ul>      {{~/if~}} -    {{~#set "previousDictionary" dictionary~}}{{~/set~}} +    {{~set "previousDictionary" dictionary~}}  {{/inline}}  {{#*inline "audio"}} @@ -189,11 +189,11 @@  {{#*inline "pitch-accent-item-disambiguation"}}      {{~#scope~}} -        {{~#set "exclusive" (spread exclusiveExpressions exclusiveReadings)}}{{/set~}} +        {{~set "exclusive" (spread exclusiveExpressions exclusiveReadings)~}}          {{~#if (op ">" (property (get "exclusive") "length") 0)~}} -            {{~#set "separator" ""~}}{{/set~}} +            {{~set "separator" ""~}}              <em>({{#each (get "exclusive")~}} -                {{~#get "separator"}}{{/get~}}{{{.}}} +                {{~get "separator"~}}{{{.}}}              {{~/each}} only) </em>          {{~/if~}}      {{~/scope~}} @@ -267,10 +267,10 @@  {{#*inline "stroke-count"}}      {{~#scope~}} -        {{~#set "found" false}}{{/set~}} +        {{~set "found" false~}}          {{~#each definition.stats.misc~}}              {{~#if (op "===" name "strokes")~}} -                {{~#set "found" true}}{{/set~}} +                {{~set "found" true~}}                  Stroke count: {{value}}              {{~/if~}}          {{~/each~}} @@ -295,14 +295,14 @@  {{#*inline "part-of-speech"}}      {{~#scope~}}          {{~#if (op "!==" definition.type "kanji")~}} -            {{~#set "first" true}}{{/set~}} +            {{~set "first" true~}}              {{~#each definition.expressions~}}                  {{~#each wordClasses~}}                      {{~#unless (get (concat "used_" .))~}}                          {{~> part-of-speech-pretty . ~}}                          {{~#unless (get "first")}}, {{/unless~}} -                        {{~#set (concat "used_" .) true~}}{{~/set~}} -                        {{~#set "first" false~}}{{~/set~}} +                        {{~set (concat "used_" .) true~}} +                        {{~set "first" false~}}                      {{~/unless~}}                  {{~/each~}}              {{~/each~}} diff --git a/test/test-options-util.js b/test/test-options-util.js index c2780650..78204de9 100644 --- a/test/test-options-util.js +++ b/test/test-options-util.js @@ -1348,19 +1348,19 @@ async function testFieldTemplatesUpdate(extDir) {  {{#*inline "glossary-single"}}      {{~#unless brief~}}          {{~#scope~}} -            {{~#set "any" false}}{{/set~}} +            {{~set "any" false~}}              {{~#each definitionTags~}}                  {{~#if (op "||" (op "!" @root.compactTags) (op "!" redundant))~}}                      {{~#if (get "any")}}, {{else}}<i>({{/if~}}                      {{name}} -                    {{~#set "any" true}}{{/set~}} +                    {{~set "any" true~}}                  {{~/if~}}              {{~/each~}}              {{~#unless noDictionaryTag~}}                  {{~#if (op "||" (op "!" @root.compactTags) (op "!==" dictionary (get "previousDictionary")))~}}                      {{~#if (get "any")}}, {{else}}<i>({{/if~}}                      {{dictionary}} -                    {{~#set "any" true}}{{/set~}} +                    {{~set "any" true~}}                  {{~/if~}}              {{~/unless~}}              {{~#if (get "any")}})</i> {{/if~}} @@ -1374,7 +1374,109 @@ async function testFieldTemplatesUpdate(extDir) {      {{~else~}}          <ul>{{#each glossary}}<li>{{formatGlossary ../dictionary .}}</li>{{/each}}</ul>      {{~/if~}} -    {{~#set "previousDictionary" dictionary~}}{{~/set~}} +    {{~set "previousDictionary" dictionary~}} +{{/inline}} + +{{~> (lookup . "marker") ~}}`.trimStart() +        }, +        // block helper update: set and get +        { +            oldVersion: 20, +            newVersion: 21, +            old: ` +{{#*inline "pitch-accent-item-disambiguation"}} +    {{~#scope~}} +        {{~#set "exclusive" (spread exclusiveExpressions exclusiveReadings)}}{{/set~}} +        {{~#if (op ">" (property (get "exclusive") "length") 0)~}} +            {{~#set "separator" ""~}}{{/set~}} +            <em>({{#each (get "exclusive")~}} +                {{~#get "separator"}}{{/get~}}{{{.}}} +            {{~/each}} only) </em> +        {{~/if~}} +    {{~/scope~}} +{{/inline}} + +{{#*inline "stroke-count"}} +    {{~#scope~}} +        {{~#set "found" false}}{{/set~}} +        {{~#each definition.stats.misc~}} +            {{~#if (op "===" name "strokes")~}} +                {{~#set "found" true}}{{/set~}} +                Stroke count: {{value}} +            {{~/if~}} +        {{~/each~}} +        {{~#if (op "!" (get "found"))~}} +            Stroke count: Unknown +        {{~/if~}} +    {{~/scope~}} +{{/inline}} + +{{#*inline "part-of-speech"}} +    {{~#scope~}} +        {{~#if (op "!==" definition.type "kanji")~}} +            {{~#set "first" true}}{{/set~}} +            {{~#each definition.expressions~}} +                {{~#each wordClasses~}} +                    {{~#unless (get (concat "used_" .))~}} +                        {{~> part-of-speech-pretty . ~}} +                        {{~#unless (get "first")}}, {{/unless~}} +                        {{~#set (concat "used_" .) true~}}{{~/set~}} +                        {{~#set "first" false~}}{{~/set~}} +                    {{~/unless~}} +                {{~/each~}} +            {{~/each~}} +            {{~#if (get "first")~}}Unknown{{~/if~}} +        {{~/if~}} +    {{~/scope~}} +{{/inline}} + +{{~> (lookup . "marker") ~}}`.trimStart(), + +            expected: ` +{{#*inline "pitch-accent-item-disambiguation"}} +    {{~#scope~}} +        {{~set "exclusive" (spread exclusiveExpressions exclusiveReadings)~}} +        {{~#if (op ">" (property (get "exclusive") "length") 0)~}} +            {{~set "separator" ""~}} +            <em>({{#each (get "exclusive")~}} +                {{~get "separator"~}}{{{.}}} +            {{~/each}} only) </em> +        {{~/if~}} +    {{~/scope~}} +{{/inline}} + +{{#*inline "stroke-count"}} +    {{~#scope~}} +        {{~set "found" false~}} +        {{~#each definition.stats.misc~}} +            {{~#if (op "===" name "strokes")~}} +                {{~set "found" true~}} +                Stroke count: {{value}} +            {{~/if~}} +        {{~/each~}} +        {{~#if (op "!" (get "found"))~}} +            Stroke count: Unknown +        {{~/if~}} +    {{~/scope~}} +{{/inline}} + +{{#*inline "part-of-speech"}} +    {{~#scope~}} +        {{~#if (op "!==" definition.type "kanji")~}} +            {{~set "first" true~}} +            {{~#each definition.expressions~}} +                {{~#each wordClasses~}} +                    {{~#unless (get (concat "used_" .))~}} +                        {{~> part-of-speech-pretty . ~}} +                        {{~#unless (get "first")}}, {{/unless~}} +                        {{~set (concat "used_" .) true~}} +                        {{~set "first" false~}} +                    {{~/unless~}} +                {{~/each~}} +            {{~/each~}} +            {{~#if (get "first")~}}Unknown{{~/if~}} +        {{~/if~}} +    {{~/scope~}}  {{/inline}}  {{~> (lookup . "marker") ~}}`.trimStart() |