diff options
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/data/templates/anki-field-templates-upgrade-v13.handlebars | 83 | ||||
| -rw-r--r-- | ext/data/templates/default-anki-field-templates.handlebars | 67 | ||||
| -rw-r--r-- | ext/js/data/options-util.js | 1 | ||||
| -rw-r--r-- | ext/js/data/sandbox/anki-note-data-creator.js | 4 | 
4 files changed, 89 insertions, 66 deletions
| diff --git a/ext/data/templates/anki-field-templates-upgrade-v13.handlebars b/ext/data/templates/anki-field-templates-upgrade-v13.handlebars index b3e0f1b9..afa5a2c0 100644 --- a/ext/data/templates/anki-field-templates-upgrade-v13.handlebars +++ b/ext/data/templates/anki-field-templates-upgrade-v13.handlebars @@ -63,3 +63,86 @@  {{=======}}  {{~#if (hasMedia "clipboardText")}}{{#getMedia "clipboardText"}}{{/getMedia}}{{/if~}}  {{>>>>>>>}} + +{{<<<<<<<}} +{{#*inline "pitch-accent-item-downstep-notation"}} +    {{~#scope~}} +        <span> +        {{~#set "style1a"~}}display:inline-block;position:relative;{{~/set~}} +        {{~#set "style1b"~}}padding-right:0.1em;margin-right:0.1em;{{~/set~}} +        {{~#set "style2a"~}}display:block;user-select:none;pointer-events:none;position:absolute;top:0.1em;left:0;right:0;height:0;border-top:0.1em solid;{{~/set~}} +        {{~#set "style2b"~}}right:-0.1em;height:0.4em;border-right:0.1em solid;{{~/set~}} +        {{~#each (getKanaMorae reading)~}} +            {{~#set "style1"}}{{#get "style1a"}}{{/get}}{{/set~}} +            {{~#set "style2"}}{{/set~}} +            {{~#if (isMoraPitchHigh @index ../position)}} +                {{~#set "style2"}}{{#get "style2a"}}{{/get}}{{/set~}} +                {{~#if (op "!" (isMoraPitchHigh (op "+" @index 1) ../position))~}} +                    {{~#set "style1" (op "+" (get "style1") (get "style1b"))}}{{/set~}} +                    {{~#set "style2" (op "+" (get "style2") (get "style2b"))}}{{/set~}} +                {{~/if~}} +            {{~/if~}} +            <span style="{{#get "style1"}}{{/get}}">{{{.}}}<span style="{{#get "style2"}}{{/get}}"></span></span> +        {{~/each~}} +        </span> +    {{~/scope~}} +{{/inline}} + +{{#*inline "pitch-accent-item-graph-position-x"}}{{#op "+" 25 (op "*" index 50)}}{{/op}}{{/inline}} +{{#*inline "pitch-accent-item-graph-position-y"}}{{#op "+" 25 (op "?:" (isMoraPitchHigh index position) 0 50)}}{{/op}}{{/inline}} +{{#*inline "pitch-accent-item-graph-position"}}{{> pitch-accent-item-graph-position-x index=index position=position}} {{> pitch-accent-item-graph-position-y index=index position=position}}{{/inline}} +{{#*inline "pitch-accent-item-graph"}} +    {{~#scope~}} +        {{~#set "morae" (getKanaMorae reading)}}{{/set~}} +        {{~#set "morae-count" (property (get "morae") "length")}}{{/set~}} +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 {{#op "+" 50 (op "*" 50 (get "morae-count"))}}{{/op}} 100" style="display:inline-block;height:2em;"> +    <defs> +        <g id="term-pitch-accent-graph-dot"><circle cx="0" cy="0" r="15" style="fill:#000;stroke:#000;stroke-width:5;" /></g> +        <g id="term-pitch-accent-graph-dot-downstep"><circle cx="0" cy="0" r="15" style="fill:none;stroke:#000;stroke-width:5;" /><circle cx="0" cy="0" r="5" style="fill:none;stroke:#000;stroke-width:5;" /></g> +        <g id="term-pitch-accent-graph-triangle"><path d="M0 13 L15 -13 L-15 -13 Z" style="fill:none;stroke:#000;stroke-width:5;" /></g> +    </defs> +    <path style="fill:none;stroke:#000;stroke-width:5;" d=" +    {{~#set "cmd" "M"}}{{/set~}} +    {{~#each (get "morae")~}} +        {{~#get "cmd"}}{{/get~}} +        {{~> pitch-accent-item-graph-position index=@index position=../position~}} +        {{~#set "cmd" "L"}}{{/set~}} +    {{~/each~}} +    "></path> +    <path style="fill:none;stroke:#000;stroke-width:5;stroke-dasharray:5 5;" d="M{{> pitch-accent-item-graph-position index=(op "-" (get "morae-count") 1) position=position}} L{{> pitch-accent-item-graph-position index=(get "morae-count") position=position}}"></path> +    {{#each (get "morae")}} +    <use href="{{#if (op "&&" (isMoraPitchHigh @index ../position) (op "!" (isMoraPitchHigh (op "+" @index 1) ../position)))}}#term-pitch-accent-graph-dot-downstep{{else}}#term-pitch-accent-graph-dot{{/if}}" x="{{> pitch-accent-item-graph-position-x index=@index position=../position}}" y="{{> pitch-accent-item-graph-position-y index=@index position=../position}}"></use> +    {{/each}} +    <use href="#term-pitch-accent-graph-triangle" x="{{> pitch-accent-item-graph-position-x index=(get "morae-count") position=position}}" y="{{> pitch-accent-item-graph-position-y index=(get "morae-count") position=position}}"></use> +</svg> +    {{~/scope~}} +{{/inline}} + +{{#*inline "pitch-accent-item-position"~}} +    <span>[{{position}}]</span> +{{~/inline}} + +{{#*inline "pitch-accent-item"}} +    {{~#if (op "==" format "downstep-notation")~}} +        {{~> pitch-accent-item-downstep-notation~}} +    {{~else if (op "==" format "graph")~}} +        {{~> pitch-accent-item-graph~}} +    {{~else if (op "==" format "position")~}} +        {{~> pitch-accent-item-position~}} +    {{~/if~}} +{{/inline}} +{{=======}} +{{#*inline "pitch-accent-item"}} +    {{~#pronunciation format=format reading=reading downstepPosition=position nasalPositions=nasalPositions devoicePositions=devoicePositions~}}{{~/pronunciation~}} +{{/inline}} +{{>>>>>>>}} + +{{<<<<<<<}} +{{#*inline "pitch-accents"}} +    {{~> pitch-accent-list format='downstep-notation'~}} +{{/inline}} +{{=======}} +{{#*inline "pitch-accents"}} +    {{~> pitch-accent-list format='text'~}} +{{/inline}} +{{>>>>>>>}} diff --git a/ext/data/templates/default-anki-field-templates.handlebars b/ext/data/templates/default-anki-field-templates.handlebars index 92f9c6b7..31d5d13f 100644 --- a/ext/data/templates/default-anki-field-templates.handlebars +++ b/ext/data/templates/default-anki-field-templates.handlebars @@ -183,71 +183,8 @@  {{/inline}}  {{! Pitch Accents }} -{{#*inline "pitch-accent-item-downstep-notation"}} -    {{~#scope~}} -        <span> -        {{~#set "style1a"~}}display:inline-block;position:relative;{{~/set~}} -        {{~#set "style1b"~}}padding-right:0.1em;margin-right:0.1em;{{~/set~}} -        {{~#set "style2a"~}}display:block;user-select:none;pointer-events:none;position:absolute;top:0.1em;left:0;right:0;height:0;border-top:0.1em solid;{{~/set~}} -        {{~#set "style2b"~}}right:-0.1em;height:0.4em;border-right:0.1em solid;{{~/set~}} -        {{~#each (getKanaMorae reading)~}} -            {{~#set "style1"}}{{#get "style1a"}}{{/get}}{{/set~}} -            {{~#set "style2"}}{{/set~}} -            {{~#if (isMoraPitchHigh @index ../position)}} -                {{~#set "style2"}}{{#get "style2a"}}{{/get}}{{/set~}} -                {{~#if (op "!" (isMoraPitchHigh (op "+" @index 1) ../position))~}} -                    {{~#set "style1" (op "+" (get "style1") (get "style1b"))}}{{/set~}} -                    {{~#set "style2" (op "+" (get "style2") (get "style2b"))}}{{/set~}} -                {{~/if~}} -            {{~/if~}} -            <span style="{{#get "style1"}}{{/get}}">{{{.}}}<span style="{{#get "style2"}}{{/get}}"></span></span> -        {{~/each~}} -        </span> -    {{~/scope~}} -{{/inline}} - -{{#*inline "pitch-accent-item-graph-position-x"}}{{#op "+" 25 (op "*" index 50)}}{{/op}}{{/inline}} -{{#*inline "pitch-accent-item-graph-position-y"}}{{#op "+" 25 (op "?:" (isMoraPitchHigh index position) 0 50)}}{{/op}}{{/inline}} -{{#*inline "pitch-accent-item-graph-position"}}{{> pitch-accent-item-graph-position-x index=index position=position}} {{> pitch-accent-item-graph-position-y index=index position=position}}{{/inline}} -{{#*inline "pitch-accent-item-graph"}} -    {{~#scope~}} -        {{~#set "morae" (getKanaMorae reading)}}{{/set~}} -        {{~#set "morae-count" (property (get "morae") "length")}}{{/set~}} -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 {{#op "+" 50 (op "*" 50 (get "morae-count"))}}{{/op}} 100" style="display:inline-block;height:2em;"> -    <defs> -        <g id="term-pitch-accent-graph-dot"><circle cx="0" cy="0" r="15" style="fill:#000;stroke:#000;stroke-width:5;" /></g> -        <g id="term-pitch-accent-graph-dot-downstep"><circle cx="0" cy="0" r="15" style="fill:none;stroke:#000;stroke-width:5;" /><circle cx="0" cy="0" r="5" style="fill:none;stroke:#000;stroke-width:5;" /></g> -        <g id="term-pitch-accent-graph-triangle"><path d="M0 13 L15 -13 L-15 -13 Z" style="fill:none;stroke:#000;stroke-width:5;" /></g> -    </defs> -    <path style="fill:none;stroke:#000;stroke-width:5;" d=" -    {{~#set "cmd" "M"}}{{/set~}} -    {{~#each (get "morae")~}} -        {{~#get "cmd"}}{{/get~}} -        {{~> pitch-accent-item-graph-position index=@index position=../position~}} -        {{~#set "cmd" "L"}}{{/set~}} -    {{~/each~}} -    "></path> -    <path style="fill:none;stroke:#000;stroke-width:5;stroke-dasharray:5 5;" d="M{{> pitch-accent-item-graph-position index=(op "-" (get "morae-count") 1) position=position}} L{{> pitch-accent-item-graph-position index=(get "morae-count") position=position}}"></path> -    {{#each (get "morae")}} -    <use href="{{#if (op "&&" (isMoraPitchHigh @index ../position) (op "!" (isMoraPitchHigh (op "+" @index 1) ../position)))}}#term-pitch-accent-graph-dot-downstep{{else}}#term-pitch-accent-graph-dot{{/if}}" x="{{> pitch-accent-item-graph-position-x index=@index position=../position}}" y="{{> pitch-accent-item-graph-position-y index=@index position=../position}}"></use> -    {{/each}} -    <use href="#term-pitch-accent-graph-triangle" x="{{> pitch-accent-item-graph-position-x index=(get "morae-count") position=position}}" y="{{> pitch-accent-item-graph-position-y index=(get "morae-count") position=position}}"></use> -</svg> -    {{~/scope~}} -{{/inline}} - -{{#*inline "pitch-accent-item-position"~}} -    <span>[{{position}}]</span> -{{~/inline}} -  {{#*inline "pitch-accent-item"}} -    {{~#if (op "==" format "downstep-notation")~}} -        {{~> pitch-accent-item-downstep-notation~}} -    {{~else if (op "==" format "graph")~}} -        {{~> pitch-accent-item-graph~}} -    {{~else if (op "==" format "position")~}} -        {{~> pitch-accent-item-position~}} -    {{~/if~}} +    {{~#pronunciation format=format reading=reading downstepPosition=position nasalPositions=nasalPositions devoicePositions=devoicePositions~}}{{~/pronunciation~}}  {{/inline}}  {{#*inline "pitch-accent-item-disambiguation"}} @@ -280,7 +217,7 @@  {{/inline}}  {{#*inline "pitch-accents"}} -    {{~> pitch-accent-list format='downstep-notation'~}} +    {{~> pitch-accent-list format='text'~}}  {{/inline}}  {{#*inline "pitch-accent-graphs"}} diff --git a/ext/js/data/options-util.js b/ext/js/data/options-util.js index d131d0c6..42d8a93a 100644 --- a/ext/js/data/options-util.js +++ b/ext/js/data/options-util.js @@ -857,6 +857,7 @@ class OptionsUtil {          //  Added {selection-text} field marker.          //  Added {sentence-furigana} field marker.          //  Added anki.duplicateScopeCheckAllModels. +        //  Updated pronunciation templates.          await this._applyAnkiFieldTemplatesPatch(options, '/data/templates/anki-field-templates-upgrade-v13.handlebars');          for (const profile of options.profiles) {              profile.options.anki.duplicateScopeCheckAllModels = false; diff --git a/ext/js/data/sandbox/anki-note-data-creator.js b/ext/js/data/sandbox/anki-note-data-creator.js index 3622e837..e09c6d7b 100644 --- a/ext/js/data/sandbox/anki-note-data-creator.js +++ b/ext/js/data/sandbox/anki-note-data-creator.js @@ -159,11 +159,13 @@ class AnkiNoteDataCreator {          if (dictionaryEntry.type === 'term') {              for (const {dictionary, pitches} of DictionaryDataUtil.getPitchAccentInfos(dictionaryEntry)) {                  const pitches2 = []; -                for (const {terms, reading, position, tags, exclusiveTerms, exclusiveReadings} of pitches) { +                for (const {terms, reading, position, nasalPositions, devoicePositions, tags, exclusiveTerms, exclusiveReadings} of pitches) {                      pitches2.push({                          expressions: terms,                          reading,                          position, +                        nasalPositions, +                        devoicePositions,                          tags,                          exclusiveExpressions: exclusiveTerms,                          exclusiveReadings |