diff --git a/Rules/Braille/Swedish/Swedish_Rules.yaml b/Rules/Braille/Swedish/Swedish_Rules.yaml
index bdd4031f6..028574914 100644
--- a/Rules/Braille/Swedish/Swedish_Rules.yaml
+++ b/Rules/Braille/Swedish/Swedish_Rules.yaml
@@ -4,7 +4,7 @@
tag: "!*"
match: "not(self::m:math) and not($MatchingWhitespace) and (@data-previous-space-width >= 0.25 or @data-following-space-width >= 0.25)"
replace:
- - with:
+ - with:
variables: [MatchingWhitespace: "true()"]
replace:
- test:
@@ -24,25 +24,25 @@
then: [t: "W"]
-
- name: omission-intent
- tag: "!*"
- match: "contains(@intent, ':blank')"
- replace:
- - t: "⠬"
+ name: omission-intent
+ tag: "!*"
+ match: "contains(@intent, ':blank')"
+ replace:
+ - t: "⠬"
-
- name: unicode-override
- tag: "*"
- match: "@data-unicode"
- replace:
- - x: "@data-unicode"
+ name: unicode-override
+ tag: "*"
+ match: "@data-unicode"
+ replace:
+ - x: "@data-unicode"
-
- name: default
- tag: msqrt
- match: .
- replace:
- - test:
+ name: default
+ tag: msqrt
+ match: .
+ replace:
+ - test:
if: "NeedsToBeGrouped(*[1], 'Swedish', true())"
then:
- t: "⠘⠩"
@@ -79,76 +79,76 @@
# Fraction rules
- # The fraction part of a mixed number is always simple
- # They also differ because a two character sequence is needed to bracket the fraction
- # The invisible plus should produce an empty string
-
--
- name: common-fraction-mixed-number
- tag: mfrac
- match:
- - "preceding-sibling::*[1][self::m:mo][.='\u2064'] and" # preceding element is invisible plus
- - "*[1][self::m:mn][not(contains(., '.'))] and"
- - "*[2][self::m:mn][not(contains(., '.'))]"
- replace:
- - t: "#" # signal end of previous numeric mode
- - x: "*[1]"
- - t: "⠳"
- - x: "*[2]"
-
--
- name: nested-fraction
- tag: mfrac
- match: "*[self::m:mfrac or (self::m:mrow and *[2]='/')] or */*[self::m:mfrac]"
- replace:
- - t: "⠿⠦"
- - x: "*[1]"
- - t: "⠳⠳"
- - x: "*[2]"
- - t: "⠿⠴"
+ # The fraction part of a mixed number is always simple
+ # They also differ because a two character sequence is needed to bracket the fraction
+ # The invisible plus should produce an empty string
+
+-
+ name: common-fraction-mixed-number
+ tag: mfrac
+ match:
+ - "preceding-sibling::*[1][self::m:mo][.='\u2064'] and" # preceding element is invisible plus
+ - "*[1][self::m:mn][not(contains(., '.'))] and"
+ - "*[2][self::m:mn][not(contains(., '.'))]"
+ replace:
+ - t: "#" # signal end of previous numeric mode
+ - x: "*[1]"
+ - t: "⠳"
+ - x: "*[2]"
+
+-
+ name: nested-fraction
+ tag: mfrac
+ match: "*[self::m:mfrac or (self::m:mrow and *[2]='/')] or */*[self::m:mfrac]"
+ replace:
+ - t: "⠿⠦"
+ - x: "*[1]"
+ - t: "⠳⠳"
+ - x: "*[2]"
+ - t: "⠿⠴"
- # needs to be after nested-fraction rule as long as this rule uses the NeedsToBeGrouped test
- name: simple-fraction
- tag: mfrac
- # first clause due to Ex. 6.8
- match: "not(preceding-sibling::*[1][. ='\u2061' and IsInDefinition(preceding-sibling::*[1], 'Braille', 'TrigFunctionNames')]) and
- not(NeedsToBeGrouped(*[1], 'Swedish', true()) or NeedsToBeGrouped(*[2], 'Swedish', true()))"
- replace:
- - x: "*[1]"
- - t: "⠳"
- - x: "*[2]"
-
--
- name: nested-linear-fraction
- tag: mrow
- match: "*[2][.='/'] and (*[1][self::m:mfrac] or *[3][self::m:mfrac])"
- replace:
- - x: "*[1]"
- - t: "⠌⠌"
- - x: "*[3]"
+ name: simple-fraction
+ tag: mfrac
+ # first clause due to Ex. 6.8
+ match: "not(preceding-sibling::*[1][. ='\u2061' and IsInDefinition(preceding-sibling::*[1], 'Braille', 'TrigFunctionNames')]) and
+ not(NeedsToBeGrouped(*[1], 'Swedish', true()) or NeedsToBeGrouped(*[2], 'Swedish', true()))"
+ replace:
+ - x: "*[1]"
+ - t: "⠳"
+ - x: "*[2]"
-
- name: default
- tag: mfrac
- match: "."
- replace:
- - t: "⠿⠦"
- - x: "*[1]"
- - t: "⠳"
- - x: "*[2]"
- - t: "⠿⠴"
-
--
- # 6.5
- name: binomial-frac
- tag: mrow
- match: "IsBracketed(., '(', ')') and *[2][self::m:mfrac][@linethickness=0]"
- replace:
- - x: "*[1]"
- - x: "*[2]/*[1]"
- - t: "⠘⠳"
- - x: "*[2]/*[2]"
- - x: "*[3]"
+ name: nested-linear-fraction
+ tag: mrow
+ match: "*[2][.='/'] and (*[1][self::m:mfrac] or *[3][self::m:mfrac])"
+ replace:
+ - x: "*[1]"
+ - t: "⠌⠌"
+ - x: "*[3]"
+
+-
+ name: default
+ tag: mfrac
+ match: "."
+ replace:
+ - t: "⠿⠦"
+ - x: "*[1]"
+ - t: "⠳"
+ - x: "*[2]"
+ - t: "⠿⠴"
+
+-
+ # 6.5
+ name: binomial-frac
+ tag: mrow
+ match: "IsBracketed(., '(', ')') and *[2][self::m:mfrac][@linethickness=0]"
+ replace:
+ - x: "*[1]"
+ - x: "*[2]/*[1]"
+ - t: "⠘⠳"
+ - x: "*[2]/*[2]"
+ - x: "*[3]"
- name: binomial-table
tag: mrow
@@ -250,55 +250,55 @@
replace: [x: "*"]
-
- name: empty-mrow
- tag: mrow
- match: "not(*)"
- replace: [t: "W"] # not sure what is correct -- if in a fraction, probably something is better than nothing
+ name: empty-mrow
+ tag: mrow
+ match: "not(*)"
+ replace: [t: "W"] # not sure what is correct -- if in a fraction, probably something is better than nothing
-
- name: default
- tag: mrow
- match: "."
- replace: [x: "*"]
-
--
- # operator omission
- name: operator-omission
- tag: mo
- # normally(?) this is an omission, but the case 6'2" causes problems due to WIRIS
- # in that case, it doesn't put the ft/in in a superscript and thinks the space is an operator
- # canonicalization moves them into with base , so this shouldn't be an omission for that case
- match: ".='\u00A0' and @width > 1.1 and
- not( preceding-sibling::*[1][self::m:msup and *[2][self::m:mo]] and
- following-sibling::*[1][self::m:msup and *[2][self::m:mo]] )"
- replace:
- - t: "⠬" # empty space for omission
+ name: default
+ tag: mrow
+ match: "."
+ replace: [x: "*"]
-
- name: default
- tag: mo
- # add spaces around comparison operators unless they are in a script position,
- variables: # ratio not spaced in UEB
- - AddSpaces: "$UseSpacesAroundAllOperators or
- ( parent::*[self::m:mrow] and $NewScriptContext='' and
- .!='∶' and not(ancestor::*[self::m:mfrac]) and
- (IsInDefinition(., 'Braille', 'NemethComparisonOperators') or IsInDefinition(., 'Braille', 'BinaryOperators')))"
- match: "."
- replace:
- - test:
- if: "$AddSpaces"
- then:
- - test:
- if: "preceding-sibling::*"
- then: [t: "W"]
- # can't call BrailleChars() for U+2061 because that needs the appropriate context. But need to do it for bold/italic, so we have the following hack
- - test:
- if: "@mathvariant"
- then: [x: "BrailleChars(., 'Swedish')"]
- else: [x: "text()"]
- - test:
- if: "$AddSpaces and following-sibling::*"
- then: [t: "W"]
+ # operator omission
+ name: operator-omission
+ tag: mo
+ # normally(?) this is an omission, but the case 6'2" causes problems due to WIRIS
+ # in that case, it doesn't put the ft/in in a superscript and thinks the space is an operator
+ # canonicalization moves them into with base , so this shouldn't be an omission for that case
+ match: ".='\u00A0' and @width > 1.1 and
+ not( preceding-sibling::*[1][self::m:msup and *[2][self::m:mo]] and
+ following-sibling::*[1][self::m:msup and *[2][self::m:mo]] )"
+ replace:
+ - t: "⠬" # empty space for omission
+
+-
+ name: default
+ tag: mo
+ # add spaces around comparison operators unless they are in a script position,
+ variables: # ratio not spaced in UEB
+ - AddSpaces: "$UseSpacesAroundAllOperators or
+ ( parent::*[self::m:mrow] and $NewScriptContext='' and
+ .!='∶' and not(ancestor::*[self::m:mfrac]) and
+ (IsInDefinition(., 'Braille', 'NemethComparisonOperators') or IsInDefinition(., 'Braille', 'BinaryOperators')))"
+ match: "."
+ replace:
+ - test:
+ if: "$AddSpaces"
+ then:
+ - test:
+ if: "preceding-sibling::*"
+ then: [t: "W"]
+ # can't call BrailleChars() for U+2061 because that needs the appropriate context. But need to do it for bold/italic, so we have the following hack
+ - test:
+ if: "@mathvariant"
+ then: [x: "BrailleChars(., 'Swedish')"]
+ else: [x: "text()"]
+ - test:
+ if: "$AddSpaces and following-sibling::*"
+ then: [t: "W"]
-
@@ -317,11 +317,11 @@
- x: "BrailleChars(., 'Swedish')"
-
- name: default
- tag: mstyle
- match: "."
- replace:
- - test:
+ name: default
+ tag: mstyle
+ match: "."
+ replace:
+ - test:
if: "*"
then: [x: "*"]
# else do nothing -- no content
@@ -366,12 +366,12 @@
match: "*[2][self::m:mo and count(.)=1 and translate(., '¯~^→⟶', '')='']"
replace:
- test:
- if: "NeedsToBeGrouped(*[1], 'Swedish', true())"
- then:
- - t: "⠘"
- - x: "*[1]"
- - t: "⠱"
- else: [x: "*[1]"]
+ if: "NeedsToBeGrouped(*[1], 'Swedish', true())"
+ then:
+ - t: "⠘"
+ - x: "*[1]"
+ - t: "⠱"
+ else: [x: "*[1]"]
- t: "⠬⠬"
- test:
- if: "*[2][.='¯']"
@@ -441,12 +441,12 @@
match: "."
replace:
- test:
- if: "(self::m:munder or self::m:mover) and NeedsToBeGrouped(*[1], 'Swedish', true())"
- then:
- - t: "⠘"
- - x: "*[1]"
- - t: "⠱"
- else: [x: "*[1]"]
+ if: "(self::m:munder or self::m:mover) and NeedsToBeGrouped(*[1], 'Swedish', true())"
+ then:
+ - t: "⠘"
+ - x: "*[1]"
+ - t: "⠱"
+ else: [x: "*[1]"]
- with: # this could be tighter and be just around the *[2] part, but this is consistent with msubsup below
variables:
- NewScriptContext: "in" # value doesn't matter -- just can't be empty string
@@ -541,211 +541,211 @@
then: [t: "W"]
-
- name: default
- tag: mmultiscripts
- match: "."
- variables:
- # computing the number of postscripts is messy because of being optionally present -- we use "mod" to get the count right
- - Prescripts: "m:mprescripts/following-sibling::*"
- - NumChildren: "count(*)" # need to stash this since the count is wrong inside '*[...]' below
- - Postscripts: "*[position()>1 and position() < (last() + ($NumChildren mod 2) -count($Prescripts))]"
- replace:
- - test:
+ name: default
+ tag: mmultiscripts
+ match: "."
+ variables:
+ # computing the number of postscripts is messy because of being optionally present -- we use "mod" to get the count right
+ - Prescripts: "m:mprescripts/following-sibling::*"
+ - NumChildren: "count(*)" # need to stash this since the count is wrong inside '*[...]' below
+ - Postscripts: "*[position()>1 and position() < (last() + ($NumChildren mod 2) -count($Prescripts))]"
+ replace:
+ - test:
if: "$Prescripts"
then:
- test:
- if: "not($Prescripts[1][self::m:none])"
- then:
- - with:
- variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
- replace:
- - t: "⠣"
- - test:
- if: "NeedsToBeGrouped($Prescripts[1], 'Swedish', true())"
- then:
- - t: "⠣"
- - x: "$Prescripts[1]"
- - t: "⠱"
- else: [x: "$Prescripts[1]"]
- - test:
- if: "not($Prescripts[2][self::m:none])"
- then:
- - with:
- variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
- replace:
- - t: "⠬"
- - test:
- if: "NeedsToBeGrouped($Prescripts[2], 'Swedish', false())"
- then:
- - t: "⠘"
- - x: "$Prescripts[2]"
- - t: "⠱"
- else: [x: "$Prescripts[2]"]
- - test:
- if: "count($Prescripts)>2"
- then:
- - test:
- if: "not($Prescripts[3][self::m:none])"
- then:
- - with:
- variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
- replace:
- - t: "⠣"
- - test:
- if: "NeedsToBeGrouped($Prescripts[3], 'Swedish', false())"
+ if: "not($Prescripts[1][self::m:none])"
+ then:
+ - with:
+ variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
+ replace:
+ - t: "⠣"
+ - test:
+ if: "NeedsToBeGrouped($Prescripts[1], 'Swedish', true())"
then:
- - t: "⠘"
- - x: "$Prescripts[3]"
+ - t: "⠣"
+ - x: "$Prescripts[1]"
- t: "⠱"
- else: [x: "$Prescripts[3]"]
- - test:
- if: "not($Prescripts[4][self::m:none])"
- then:
- - with:
- variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
- replace:
- - t: "⠬"
- - test:
- if: "NeedsToBeGrouped($Prescripts[4], 'Swedish', false())"
+ else: [x: "$Prescripts[1]"]
+ - test:
+ if: "not($Prescripts[2][self::m:none])"
+ then:
+ - with:
+ variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
+ replace:
+ - t: "⠬"
+ - test:
+ if: "NeedsToBeGrouped($Prescripts[2], 'Swedish', false())"
then:
- t: "⠘"
- - x: "$Prescripts[4]"
+ - x: "$Prescripts[2]"
- t: "⠱"
- else: [x: "$Prescripts[4]"]
- - test:
- if: "count($Prescripts) > 4" # give up and just dump them out so at least the content is there
- then: [x: "$Prescripts[position() > 4]"]
+ else: [x: "$Prescripts[2]"]
+ - test:
+ if: "count($Prescripts)>2"
+ then:
+ - test:
+ if: "not($Prescripts[3][self::m:none])"
+ then:
+ - with:
+ variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
+ replace:
+ - t: "⠣"
+ - test:
+ if: "NeedsToBeGrouped($Prescripts[3], 'Swedish', false())"
+ then:
+ - t: "⠘"
+ - x: "$Prescripts[3]"
+ - t: "⠱"
+ else: [x: "$Prescripts[3]"]
+ - test:
+ if: "not($Prescripts[4][self::m:none])"
+ then:
+ - with:
+ variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
+ replace:
+ - t: "⠬"
+ - test:
+ if: "NeedsToBeGrouped($Prescripts[4], 'Swedish', false())"
+ then:
+ - t: "⠘"
+ - x: "$Prescripts[4]"
+ - t: "⠱"
+ else: [x: "$Prescripts[4]"]
+ - test:
+ if: "count($Prescripts) > 4" # give up and just dump them out so at least the content is there
+ then: [x: "$Prescripts[position() > 4]"]
- - x: "*[1]"
- - test:
+ - x: "*[1]"
+ - test:
if: "$Postscripts"
then:
- test:
- if: "not($Postscripts[1][self::m:none])"
- then:
- - with:
- variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
- replace:
- - t: "⠣"
- - test:
- if: "NeedsToBeGrouped($Postscripts[1], 'Swedish', false())"
- then:
- - t: "⠘"
- - x: "$Postscripts[1]"
- - t: "⠱"
- else: [x: "$Postscripts[1]"]
- - test:
- if: "not($Postscripts[2][self::m:none])"
- then:
- - with:
- variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
- replace:
- - t: "⠬"
- - test:
- if: "NeedsToBeGrouped($Postscripts[2], 'Swedish', false())"
- then:
- - t: "⠘"
- - x: "$Postscripts[2]"
- - t: "⠱"
- else: [x: "$Postscripts[2]"]
- - test:
- if: "count($Postscripts)>2"
- then:
- - test:
- if: "not($Postscripts[3][self::m:none])"
- then:
- - with:
- variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
- replace:
- - t: "⠣"
- - test:
- if: "NeedsToBeGrouped($Postscripts[3], 'Swedish', false())"
+ if: "not($Postscripts[1][self::m:none])"
+ then:
+ - with:
+ variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
+ replace:
+ - t: "⠣"
+ - test:
+ if: "NeedsToBeGrouped($Postscripts[1], 'Swedish', false())"
then:
- t: "⠘"
- - x: "$Postscripts[3]"
+ - x: "$Postscripts[1]"
- t: "⠱"
- else: [x: "$Postscripts[3]"]
- - test:
- if: "not($Postscripts[4][self::m:none])"
- then:
- - with:
- variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
- replace:
- - t: "⠬"
- - test:
- if: "NeedsToBeGrouped($Postscripts[4], 'Swedish', false())"
+ else: [x: "$Postscripts[1]"]
+ - test:
+ if: "not($Postscripts[2][self::m:none])"
+ then:
+ - with:
+ variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
+ replace:
+ - t: "⠬"
+ - test:
+ if: "NeedsToBeGrouped($Postscripts[2], 'Swedish', false())"
then:
- t: "⠘"
- - x: "$Postscripts[4]"
+ - x: "$Postscripts[2]"
- t: "⠱"
- else: [x: "$Postscripts[4]"]
- - test:
- if: "count($Postscripts)>4"
- then:
- - test:
- if: "not($Postscripts[5][self::m:none])"
- then:
- - with:
+ else: [x: "$Postscripts[2]"]
+ - test:
+ if: "count($Postscripts)>2"
+ then:
+ - test:
+ if: "not($Postscripts[3][self::m:none])"
+ then:
+ - with:
variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
replace:
- t: "⠣"
- test:
- if: "NeedsToBeGrouped($Postscripts[5], 'Swedish', false())"
+ if: "NeedsToBeGrouped($Postscripts[3], 'Swedish', false())"
then:
- t: "⠘"
- - x: "$Postscripts[5]"
+ - x: "$Postscripts[3]"
- t: "⠱"
- else: [x: "$Postscripts[5]"]
- - test:
- if: "not($Postscripts[6][self::m:none])"
- then:
- - with:
+ else: [x: "$Postscripts[3]"]
+ - test:
+ if: "not($Postscripts[4][self::m:none])"
+ then:
+ - with:
variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
replace:
- t: "⠬"
- test:
- if: "NeedsToBeGrouped($Postscripts[6], 'Swedish', false())"
+ if: "NeedsToBeGrouped($Postscripts[4], 'Swedish', false())"
then:
- t: "⠘"
- - x: "$Postscripts[6]"
+ - x: "$Postscripts[4]"
- t: "⠱"
- else: [x: "$Postscripts[6]"]
- - test:
- if: "count($Postscripts)>6"
- then:
- - test:
- if: "not($Postscripts[7][self::m:none])"
+ else: [x: "$Postscripts[4]"]
+ - test:
+ if: "count($Postscripts)>4"
+ then:
+ - test:
+ if: "not($Postscripts[5][self::m:none])"
then:
- with:
- variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
- replace:
- - t: "⠣"
- - test:
- if: "NeedsToBeGrouped($Postscripts[7], 'Swedish', false())"
- then:
- - t: "⠘"
- - x: "$Postscripts[7]"
- - t: "⠱"
- else: [x: "$Postscripts[7]"]
- - test:
- if: "not($Postscripts[8][self::m:none])"
+ variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
+ replace:
+ - t: "⠣"
+ - test:
+ if: "NeedsToBeGrouped($Postscripts[5], 'Swedish', false())"
+ then:
+ - t: "⠘"
+ - x: "$Postscripts[5]"
+ - t: "⠱"
+ else: [x: "$Postscripts[5]"]
+ - test:
+ if: "not($Postscripts[6][self::m:none])"
then:
- with:
- variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
- replace:
- - t: "⠬"
- - test:
- if: "NeedsToBeGrouped($Postscripts[8], 'Swedish', false())"
- then:
- - t: "⠘"
- - x: "$Postscripts[8]"
- - t: "⠱"
- else: [x: "$Postscripts[8]"]
- - test:
- if: "count($Postscripts) > 8" # give up and just dump them out so at least the content is there
+ variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
+ replace:
+ - t: "⠬"
+ - test:
+ if: "NeedsToBeGrouped($Postscripts[6], 'Swedish', false())"
+ then:
+ - t: "⠘"
+ - x: "$Postscripts[6]"
+ - t: "⠱"
+ else: [x: "$Postscripts[6]"]
+ - test:
+ if: "count($Postscripts)>6"
then:
- - x: "$Postscripts[position() > 8]"
- - t: "#" # signal end script/numeric mode
+ - test:
+ if: "not($Postscripts[7][self::m:none])"
+ then:
+ - with:
+ variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
+ replace:
+ - t: "⠣"
+ - test:
+ if: "NeedsToBeGrouped($Postscripts[7], 'Swedish', false())"
+ then:
+ - t: "⠘"
+ - x: "$Postscripts[7]"
+ - t: "⠱"
+ else: [x: "$Postscripts[7]"]
+ - test:
+ if: "not($Postscripts[8][self::m:none])"
+ then:
+ - with:
+ variables: [NewScriptContext: "in"] # value doesn't matter -- just can't be empty string
+ replace:
+ - t: "⠬"
+ - test:
+ if: "NeedsToBeGrouped($Postscripts[8], 'Swedish', false())"
+ then:
+ - t: "⠘"
+ - x: "$Postscripts[8]"
+ - t: "⠱"
+ else: [x: "$Postscripts[8]"]
+ - test:
+ if: "count($Postscripts) > 8" # give up and just dump them out so at least the content is there
+ then:
+ - x: "$Postscripts[position() > 8]"
+ - t: "#" # signal end script/numeric mode
-
@@ -766,23 +766,23 @@
# Arrows are done as superposition (after base)
# top and bottom are done as "bars" (GTM 12) (after base)
- name: default
- tag: menclose
- match: "."
- # FIX: can't find a rule that says anything about comparison operator spacing and enclosure
- variables: [AddSpaces: "parent::*[self::m:mrow] and *[1][ self::m:mo and IsInDefinition(., 'Braille', 'NemethComparisonOperators')]"]
- replace:
- - test:
+ name: default
+ tag: menclose
+ match: "."
+ # FIX: can't find a rule that says anything about comparison operator spacing and enclosure
+ variables: [AddSpaces: "parent::*[self::m:mrow] and *[1][ self::m:mo and IsInDefinition(., 'Braille', 'NemethComparisonOperators')]"]
+ replace:
+ - test:
if: "contains(concat(' ', normalize-space(@notation), ' '), ' left ')" #avoid 'leftarrow'
then: [t: "⠸"]
- - test:
+ - test:
if: "contains(@notation,'box')" # box and roundedbox
then:
# - test:
# if: "$AddSpaces"
# then: [t: " "]
- t: "1⠫⠼⠙" # square (no rectangle in UEB)
- - test:
+ - test:
if: "contains(@notation,'circle')"
then:
# - test:
@@ -838,7 +838,7 @@
# if: ".[contains(@notation,'radical')]"
# then: [t: square root, pause: short]
- - test:
+ - test:
if: "NeedsToBeGrouped(*[1], 'Swedish', false())"
then:
- t: "⠘"
@@ -849,7 +849,7 @@
# - test:
# if: "contains(@notation,'phasorangle')" #FIX: what should this be???
# then: [t: "⠫⠪⠸⠫"]
- - test:
+ - test:
if: "contains(@notation,'arrow')" # all the arrows
then:
- test:
@@ -877,18 +877,18 @@
then: [t: "1⠳⠺⠗⠎"]
- else_if: "contains(@notation,'northwestsoutheastarrow')"
then: [t: "1⠳⠺⠗⠣"]
- - test:
+ - test:
if: "contains(@notation,'top')"
then: [t: "⠱"]
- - test:
+ - test:
if: "contains(@notation,'bottom')"
then: [t: "⠠⠱"]
- - test:
+ - test:
if: "contains(@notation,'updiagonalstrike') or contains(@notation,'downdiagonalstrike') or
contains(@notation,'verticalstrike') or contains(@notation,'horizontalstrike')"
then:
- t: "1⠈⠱" # cancellation
- - test:
+ - test:
if:
- "not($AddSpaces) and contains(@notation,'box') or contains(@notation,'circle') or"
- "contains(@notation,'arrow') or contains(@notation,'phasorangle')"
@@ -897,57 +897,57 @@
# - test:
# if: "$AddSpaces"
# then: [t: " "]
- - test:
+ - test:
if: "contains(concat(' ', normalize-space(@notation), ' '), ' right ')" #avoid 'rightarrow'
then: [t: "⠸"]
-
- name: default
- tag: ms
- match: "."
- replace:
- - test:
- if: "string(@lquote)!=''"
- then: [x: "@lquote"]
- else: [t: "⠄⠄"]
- - x: "BrailleChars(., 'Swedish')"
- - test:
- if: "string(@rquote)!=''"
- then: [x: "@rquote"]
- else: [t: "⠄⠄"]
+ name: default
+ tag: ms
+ match: "."
+ replace:
+ - test:
+ if: "string(@lquote)!=''"
+ then: [x: "@lquote"]
+ else: [t: "⠄⠄"]
+ - x: "BrailleChars(., 'Swedish')"
+ - test:
+ if: "string(@rquote)!=''"
+ then: [x: "@rquote"]
+ else: [t: "⠄⠄"]
-
- name: default
- tag: semantics
- match: "."
- replace:
- - x: "*[1]" #/ FIX: should prioritize @encoding="MathML-Presentation" and @encoding="application/mathml-presentation+xml"
+ name: default
+ tag: semantics
+ match: "."
+ replace:
+ - x: "*[1]" #/ FIX: should prioritize @encoding="MathML-Presentation" and @encoding="application/mathml-presentation+xml"
-
- name: default-children
- tag: "*"
- match: "*" # make sure there are children
- replace:
- - x: "BrailleChars('unknown math m l element', 'Swedish')"
- - x: "name(.)"
- - x: "*"
+ name: default-children
+ tag: "*"
+ match: "*" # make sure there are children
+ replace:
+ - x: "BrailleChars('unknown math m l element', 'Swedish')"
+ - x: "name(.)"
+ - x: "*"
-
- # at this point, we know there are no children -- might be no text
- name: default-no-children
- tag: "*"
- match: "text()"
- replace:
- - x: "BrailleChars('unknown math m l element', 'Swedish')"
- - x: "name(.)"
- - x: "text()"
+ # at this point, we know there are no children -- might be no text
+ name: default-no-children
+ tag: "*"
+ match: "text()"
+ replace:
+ - x: "BrailleChars('unknown math m l element', 'Swedish')"
+ - x: "name(.)"
+ - x: "text()"
-
- name: default-no-text
- tag: "*"
- match: "."
- replace:
- - x: "BrailleChars('empty unknown math m l element', 'Swedish')"
- - x: "name(.)"
+ name: default-no-text
+ tag: "*"
+ match: "."
+ replace:
+ - x: "BrailleChars('empty unknown math m l element', 'Swedish')"
+ - x: "name(.)"
diff --git a/Rules/Languages/hu/unicode-full.yaml b/Rules/Languages/hu/unicode-full.yaml
index c45035bff..46a96b9a9 100644
--- a/Rules/Languages/hu/unicode-full.yaml
+++ b/Rules/Languages/hu/unicode-full.yaml
@@ -101,96 +101,96 @@
- "˦": [T: "módosító magas hangsáv"] # 0x2e6 (en: 'modifier high tone bar', DeepL translation)
- "˧": [T: "módosító középtónusú sáv"] # 0x2e7 (en: 'modifier mid tone bar', DeepL translation)
- "˨": [T: "módosító alacsony hangsáv"] # 0x2e8 (en: 'modifier low tone bar', DeepL translation)
- - "˩": [t: "módosító extra alacsony tónusú sáv"] # 0x2e9 (en: 'modifier extra-low tone bar', DeepL translation)
- - "˪": [t: "módosító yin távozó hangjelzés"] # 0x2ea (en: 'modifier yin departing tone mark', DeepL translation)
- - "˫": [t: "módosító jang távozó hangjelzés"] # 0x2eb (en: 'modifier yang departing tone mark', DeepL translation)
- - "ˬ": [t: "módosító hangképzés"] # 0x2ec (en: 'modifier voicing', DeepL translation)
- - "˭": [t: "modifikátor unaspirated"] # 0x2ed (en: 'modifier unaspirated', DeepL translation)
- - "ˮ": [t: "módosító kettős aposztróf"] # 0x2ee (en: 'modifier double apostrophe', DeepL translation)
- - "˯": [t: "módosító alacsonyan lefelé mutató nyílvessző"] # 0x2ef (en: 'modifier low down arrowhead', DeepL translation)
- - "˰": [t: "módosító alacsony felfelé nyílhegy"] # 0x2f0 (en: 'modifier low up arrowhead', DeepL translation)
- - "˱": [t: "módosító alacsony bal oldali nyílhegy"] # 0x2f1 (en: 'modifier low left arrowhead', DeepL translation)
- - "˲": [t: "módosító alacsony jobb oldali nyílhegy"] # 0x2f2 (en: 'modifier low right arrowhead', DeepL translation)
- - "˳": [t: "módosító alacsony gyűrű"] # 0x2f3 (en: 'modifier low ring', DeepL translation)
- - "˴": [t: "módosító középső síró ékezet"] # 0x2f4 (en: 'modifier middle grave accent', DeepL translation)
- - "˵": [t: "módosító középső kettős sír ékezet"] # 0x2f5 (en: 'modifier middle double grave accent', DeepL translation)
- - "˶": [t: "módosító középső kettős hegyes ékezet"] # 0x2f6 (en: 'modifier middle double acute accent', DeepL translation)
- - "˷": [t: "módosító alacsony tilde"] # 0x2f7 (en: 'modifier low tilde', DeepL translation)
- - "˸": [t: "módosító emelt kettőspont"] # 0x2f8 (en: 'modifier raised colon', DeepL translation)
- - "˹": [t: "módosító kezdődik magas hang"] # 0x2f9 (en: 'modifier begin high tone', DeepL translation)
- - "˺": [t: "módosító végén magas hang"] # 0x2fa (en: 'modifier end high tone', DeepL translation)
- - "˻": [t: "módosító kezdődik alacsony hanggal"] # 0x2fb (en: 'modifier begin low tone', DeepL translation)
- - "˼": [t: "módosító vége mély hang"] # 0x2fc (en: 'modifier end low tone', DeepL translation)
- - "˽": [t: "módosító polc"] # 0x2fd (en: 'modifier shelf', DeepL translation)
- - "˾": [t: "módosító nyitott polc"] # 0x2fe (en: 'modifier open shelf', DeepL translation)
- - "˿": [t: "módosító bal alsó bal nyíl"] # 0x2ff (en: 'modifier low left arrow', DeepL translation)
- - "̀": [t: "súlyos ékezetes díszítés"] # 0x300 (en: 'grave accent embellishment', DeepL translation)
- - "́": [t: "akut ékezetes díszítés"] # 0x301 (en: 'acute accent embellishment', DeepL translation)
- - "̂": [t: "körkörös ékezetes díszítés"] # 0x302 (en: 'circumflex accent embellishment', DeepL translation)
- - "̃": [t: "tilde díszítés"] # 0x303 (en: 'tilde embellishment', DeepL translation)
- - "̄": [t: "makron díszítés"] # 0x304 (en: 'macron embellishment', DeepL translation)
- - "̅": [t: "túlnyúló díszítés"] # 0x305 (en: 'overbar embellishment', DeepL translation)
- - "̆": [t: "breve díszítés"] # 0x306 (en: 'breve embellishment', DeepL translation)
- - "̇": [t: "pont a díszítés felett"] # 0x307 (en: 'dot above embellishment', DeepL translation)
- - "̈": [t: "diaerézis díszítés"] # 0x308 (en: 'diaeresis embellishment', DeepL translation)
- - "̉": [t: "horog a díszítés felett"] # 0x309 (en: 'hook above embellishment', DeepL translation)
- - "̊": [t: "gyűrű a díszítés felett"] # 0x30a (en: 'ring above embellishment', DeepL translation)
- - "̋": [t: "dupla hegyes ékezetű ékezet díszítés"] # 0x30b (en: 'double acute accent embellishment', DeepL translation)
- - "̌": [t: "ellenőrzés"] # 0x30c (en: 'check', DeepL translation)
- - "̍": [t: "függőleges vonal a díszítés felett"] # 0x30d (en: 'vertical line above embellishment', DeepL translation)
- - "̎": [t: "dupla függőleges vonal a díszítés felett"] # 0x30e (en: 'double vertical line above embellishment', DeepL translation)
- - "̏": [t: "dupla sír ékezet díszítés"] # 0x30f (en: 'double grave accent embellishment', DeepL translation)
- - "̐": [t: "candrabindu díszítés"] # 0x310 (en: 'candrabindu embellishment', DeepL translation)
- - "̑": [t: "fordított breviális díszítés"] # 0x311 (en: 'inverted breve embellishment', DeepL translation)
- - "̒": [t: "fordított vessző felett díszítés"] # 0x312 (en: 'turned comma above embellishment', DeepL translation)
- - "̓": [t: "vessző a díszítés felett"] # 0x313 (en: 'comma above embellishment', DeepL translation)
- - "̔": [t: "fordított vessző a díszítés felett"] # 0x314 (en: 'reversed comma above embellishment', DeepL translation)
- - "̕": [t: "vessző felett jobbra díszítés"] # 0x315 (en: 'comma above right embellishment', DeepL translation)
- - "̖": [t: "súlyos ékezet alatti díszítés"] # 0x316 (en: 'grave accent below embellishment', DeepL translation)
- - "̗": [t: "éles ékezet alatt díszítés"] # 0x317 (en: 'acute accent below embellishment', DeepL translation)
- - "̘": [t: "bal szögletes zárójel alul díszítés"] # 0x318 (en: 'left tack below embellishment', DeepL translation)
- - "̙": [t: "jobb oldali szegecs a díszítés alatt"] # 0x319 (en: 'right tack below embellishment', DeepL translation)
- - "̚": [t: "bal szög a díszítés felett"] # 0x31a (en: 'left angle above embellishment', DeepL translation)
- - "̛": [t: "szarv díszítés"] # 0x31b (en: 'horn embellishment', DeepL translation)
- - "̜": [t: "bal félgyűrű alatti díszítés"] # 0x31c (en: 'left half ring below embellishment', DeepL translation)
- - "̝": [t: "felszög alul díszítés"] # 0x31d (en: 'up tack below embellishment', DeepL translation)
- - "̞": [t: "lefelé fordulás a díszítés alatt"] # 0x31e (en: 'down tack below embellishment', DeepL translation)
- - "̟": [t: "pluszjel a díszítés alatt"] # 0x31f (en: 'plus sign below embellishment', DeepL translation)
- - "̠": [t: "mínusz jel alatti díszítés"] # 0x320 (en: 'minus sign below embellishment', DeepL translation)
- - "̡": [t: "palatalizált horog alatti díszítés"] # 0x321 (en: 'palatalized hook below embellishment', DeepL translation)
- - "̢": [t: "retroflex horog alatti díszítés"] # 0x322 (en: 'retroflex hook below embellishment', DeepL translation)
- - "̣": [t: "pont alatt díszítés"] # 0x323 (en: 'dot below embellishment', DeepL translation)
- - "̤": [t: "diaerézis a díszítés alatt"] # 0x324 (en: 'diaeresis below embellishment', DeepL translation)
- - "̥": [t: "gyűrű a díszítés alatt"] # 0x325 (en: 'ring below embellishment', DeepL translation)
- - "̦": [t: "vessző a díszítés alatt"] # 0x326 (en: 'comma below embellishment', DeepL translation)
- - "̧": [t: "cedilla díszítés"] # 0x327 (en: 'cedilla embellishment', DeepL translation)
- - "̨": [t: "ogonek díszítés"] # 0x328 (en: 'ogonek embellishment', DeepL translation)
- - "̩": [t: "függőleges vonal a díszítés alatt"] # 0x329 (en: 'vertical line below embellishment', DeepL translation)
- - "̪": [t: "híd alatti díszítés"] # 0x32a (en: 'bridge below embellishment', DeepL translation)
- - "̫": [t: "fordított kettős ív a díszítés alatt"] # 0x32b (en: 'inverted double arch below embellishment', DeepL translation)
- - "̬": [t: "caron alatti díszítés"] # 0x32c (en: 'caron below embellishment', DeepL translation)
- - "̭": [t: "körkörös ékezet a díszítés alatt"] # 0x32d (en: 'circumflex accent below embellishment', DeepL translation)
- - "̮": [t: "breve alatti díszítés"] # 0x32e (en: 'breve below embellishment', DeepL translation)
- - "̯": [t: "fordított breve alatti díszítés"] # 0x32f (en: 'inverted breve below embellishment', DeepL translation)
- - "̰": [t: "tilde alul díszítés"] # 0x330 (en: 'tilde below embellishment', DeepL translation)
- - "̱": [t: "makron alatti díszítés"] # 0x331 (en: 'macron below embellishment', DeepL translation)
- - "̲": [t: "alacsony vonal díszítés"] # 0x332 (en: 'low line embellishment', DeepL translation)
- - "̳": [t: "kettős alacsony vonalú díszítés"] # 0x333 (en: 'double low line embellishment', DeepL translation)
- - "̴": [t: "tilde feletti díszítés"] # 0x334 (en: 'tilde overlay embellishment', DeepL translation)
- - "̵": [t: "rövid vonallal felrakott díszítés"] # 0x335 (en: 'short stroke overlay embellishment', DeepL translation)
- - "̶": [t: "hosszú vonás overlay díszítés"] # 0x336 (en: 'long stroke overlay embellishment', DeepL translation)
- - "̷": [t: "rövid solidus feletti díszítés"] # 0x337 (en: 'short solidus overlay embellishment', DeepL translation)
- - "̸": [t: "hosszú solidus feletti díszítés"] # 0x338 (en: 'long solidus overlay embellishment', DeepL translation)
- - "̹": [t: "jobb oldali félgyűrű alatt díszítés"] # 0x339 (en: 'right half ring below embellishment', DeepL translation)
- - "̺": [t: "fordított híd alatti díszítés"] # 0x33a (en: 'inverted bridge below embellishment', DeepL translation)
- - "̻": [t: "négyzet alatti díszítéssel"] # 0x33b (en: 'square below embellishment', DeepL translation)
- - "̼": [t: "sirály alul díszítés"] # 0x33c (en: 'seagull below embellishment', DeepL translation)
- - "̽": [t: "x feletti díszítés"] # 0x33d (en: 'x above embellishment', DeepL translation)
- - "̾": [t: "függőleges tilde díszítés"] # 0x33e (en: 'vertical tilde embellishment', DeepL translation)
- - "̿": [t: "dupla felülvonali díszítés"] # 0x33f (en: 'double overline embellishment', DeepL translation)
- - "̀": [t: "súlyos hangjelzés díszítés"] # 0x340 (en: 'grave tone mark embellishment', DeepL translation)
- - "́": [t: "hegyes tónusjel díszítés"] # 0x341 (en: 'acute tone mark embellishment', DeepL translation)
- - "͆": [t: "híd felett"] # 0x346 (en: 'bridge above', DeepL translation)
+ - "˩": [T: "módosító extra alacsony tónusú sáv"] # 0x2e9 (en: 'modifier extra-low tone bar', DeepL translation)
+ - "˪": [T: "módosító yin távozó hangjelzés"] # 0x2ea (en: 'modifier yin departing tone mark', DeepL translation)
+ - "˫": [T: "módosító jang távozó hangjelzés"] # 0x2eb (en: 'modifier yang departing tone mark', DeepL translation)
+ - "ˬ": [T: "módosító hangképzés"] # 0x2ec (en: 'modifier voicing', DeepL translation)
+ - "˭": [T: "nem aspirált módosító"] # 0x2ed (en: 'modifier unaspirated', DeepL translation)
+ - "ˮ": [T: "módosító kettős aposztróf"] # 0x2ee (en: 'modifier double apostrophe', DeepL translation)
+ - "˯": [T: "módosító alacsonyan lefelé mutató nyílhegy"] # 0x2ef (en: 'modifier low down arrowhead', DeepL translation)
+ - "˰": [T: "módosító alacsonyan felfelé mutató nyílhegy"] # 0x2f0 (en: 'modifier low up arrowhead', DeepL translation)
+ - "˱": [T: "módosító bal alsó nyílhegy"] # 0x2f1 (en: 'modifier low left arrowhead', DeepL translation)
+ - "˲": [T: "módosító alsó jobbra mutató nyílhegy"] # 0x2f2 (en: 'modifier low right arrowhead', DeepL translation)
+ - "˳": [T: "módosító alacsony gyűrű"] # 0x2f3 (en: 'modifier low ring', DeepL translation)
+ - "˴": [T: "módosító középső sír ékezet"] # 0x2f4 (en: 'modifier middle grave accent', DeepL translation)
+ - "˵": [T: "módosító középső kettős sír ékezet"] # 0x2f5 (en: 'modifier middle double grave accent', DeepL translation)
+ - "˶": [T: "módosító középső kettős hegyes ékezet"] # 0x2f6 (en: 'modifier middle double acute accent', DeepL translation)
+ - "˷": [T: "módosító alacsony tilde"] # 0x2f7 (en: 'modifier low tilde', DeepL translation)
+ - "˸": [T: "módosító emelt kettőspont"] # 0x2f8 (en: 'modifier raised colon', DeepL translation)
+ - "˹": [T: "módosító magas hangjelzés kezdete"] # 0x2f9 (en: 'modifier begin high tone', DeepL translation)
+ - "˺": [T: "módosító magas hangjelzés vége"] # 0x2fa (en: 'modifier end high tone', DeepL translation)
+ - "˻": [T: "módosító alacsony hangjelzés kezdete"] # 0x2fb (en: 'modifier begin low tone', DeepL translation)
+ - "˼": [T: "módosító alacsony hangjelzés vége"] # 0x2fc (en: 'modifier end low tone', DeepL translation)
+ - "˽": [T: "módosító polc"] # 0x2fd (en: 'modifier shelf', DeepL translation)
+ - "˾": [T: "módosító nyitott polc"] # 0x2fe (en: 'modifier open shelf', DeepL translation)
+ - "˿": [T: "módosító bal alsó bal nyíl"] # 0x2ff (en: 'modifier low left arrow', DeepL translation)
+ - "̀": [T: "súlyos ékezetes díszítés"] # 0x300 (en: 'grave accent embellishment', DeepL translation)
+ - "́": [T: "akut ékezetes díszítés"] # 0x301 (en: 'acute accent embellishment', DeepL translation)
+ - "̂": [T: "körkörös ékezetes díszítés"] # 0x302 (en: 'circumflex accent embellishment', DeepL translation)
+ - "̃": [T: "tilde díszítés"] # 0x303 (en: 'tilde embellishment', DeepL translation)
+ - "̄": [T: "makron díszítés"] # 0x304 (en: 'macron embellishment', DeepL translation)
+ - "̅": [T: "túlnyúló díszítés"] # 0x305 (en: 'overbar embellishment', DeepL translation)
+ - "̆": [T: "breve díszítés"] # 0x306 (en: 'breve embellishment', DeepL translation)
+ - "̇": [T: "pont a díszítés felett"] # 0x307 (en: 'dot above embellishment', DeepL translation)
+ - "̈": [T: "diaerézis díszítés"] # 0x308 (en: 'diaeresis embellishment', DeepL translation)
+ - "̉": [T: "horog a díszítés felett"] # 0x309 (en: 'hook above embellishment', DeepL translation)
+ - "̊": [T: "gyűrű a díszítés felett"] # 0x30a (en: 'ring above embellishment', DeepL translation)
+ - "̋": [T: "dupla hegyes ékezetű ékezet díszítés"] # 0x30b (en: 'double acute accent embellishment', DeepL translation)
+ - "̌": [T: "ellenőrzés"] # 0x30c (en: 'check', DeepL translation)
+ - "̍": [T: "függőleges vonal a díszítés felett"] # 0x30d (en: 'vertical line above embellishment', DeepL translation)
+ - "̎": [T: "dupla függőleges vonal a díszítés felett"] # 0x30e (en: 'double vertical line above embellishment', DeepL translation)
+ - "̏": [T: "dupla sír ékezet díszítés"] # 0x30f (en: 'double grave accent embellishment', DeepL translation)
+ - "̐": [T: "candrabindu díszítés"] # 0x310 (en: 'candrabindu embellishment', DeepL translation)
+ - "̑": [T: "fordított breviális díszítés"] # 0x311 (en: 'inverted breve embellishment', DeepL translation)
+ - "̒": [T: "fordított vessző felett díszítés"] # 0x312 (en: 'turned comma above embellishment', DeepL translation)
+ - "̓": [T: "vessző a díszítés felett"] # 0x313 (en: 'comma above embellishment', DeepL translation)
+ - "̔": [T: "fordított vessző a díszítés felett"] # 0x314 (en: 'reversed comma above embellishment', DeepL translation)
+ - "̕": [T: "vessző a jobb oldali díszítés felett"] # 0x315 (en: 'comma above right embellishment', DeepL translation)
+ - "̖": [T: "súlyos ékezet alatti díszítés"] # 0x316 (en: 'grave accent below embellishment', DeepL translation)
+ - "̗": [T: "éles ékezet alatt díszítés"] # 0x317 (en: 'acute accent below embellishment', DeepL translation)
+ - "̘": [T: "bal szögletes zárójel alatti díszítés"] # 0x318 (en: 'left tack below embellishment', DeepL translation)
+ - "̙": [T: "jobb szögletes zárójel alatti díszítés"] # 0x319 (en: 'right tack below embellishment', DeepL translation)
+ - "̚": [T: "bal szög a díszítés felett"] # 0x31a (en: 'left angle above embellishment', DeepL translation)
+ - "̛": [T: "szarv díszítés"] # 0x31b (en: 'horn embellishment', DeepL translation)
+ - "̜": [T: "bal félgyűrű alatti díszítés"] # 0x31c (en: 'left half ring below embellishment', DeepL translation)
+ - "̝": [T: "díszítés alatti felvarrás"] # 0x31d (en: 'up tack below embellishment', DeepL translation)
+ - "̞": [T: "lefelé forduló díszítés alatt"] # 0x31e (en: 'down tack below embellishment', DeepL translation)
+ - "̟": [T: "pluszjel a díszítés alatt"] # 0x31f (en: 'plus sign below embellishment', DeepL translation)
+ - "̠": [T: "mínusz jel alatti díszítés"] # 0x320 (en: 'minus sign below embellishment', DeepL translation)
+ - "̡": [T: "palatalizált horog alatti díszítés"] # 0x321 (en: 'palatalized hook below embellishment', DeepL translation)
+ - "̢": [T: "retroflex horog alatti díszítés"] # 0x322 (en: 'retroflex hook below embellishment', DeepL translation)
+ - "̣": [T: "pont a díszítés alatt"] # 0x323 (en: 'dot below embellishment', DeepL translation)
+ - "̤": [T: "diaerézis a díszítés alatt"] # 0x324 (en: 'diaeresis below embellishment', DeepL translation)
+ - "̥": [T: "gyűrű a díszítés alatt"] # 0x325 (en: 'ring below embellishment', DeepL translation)
+ - "̦": [T: "vessző a díszítés alatt"] # 0x326 (en: 'comma below embellishment', DeepL translation)
+ - "̧": [T: "cedilla díszítés"] # 0x327 (en: 'cedilla embellishment', DeepL translation)
+ - "̨": [T: "ogonek díszítés"] # 0x328 (en: 'ogonek embellishment', DeepL translation)
+ - "̩": [T: "függőleges vonal a díszítés alatt"] # 0x329 (en: 'vertical line below embellishment', DeepL translation)
+ - "̪": [T: "híd alatti díszítés"] # 0x32a (en: 'bridge below embellishment', DeepL translation)
+ - "̫": [T: "fordított kettős ív a díszítés alatt"] # 0x32b (en: 'inverted double arch below embellishment', DeepL translation)
+ - "̬": [T: "caron alatti díszítés"] # 0x32c (en: 'caron below embellishment', DeepL translation)
+ - "̭": [T: "körkörös ékezet a díszítés alatt"] # 0x32d (en: 'circumflex accent below embellishment', DeepL translation)
+ - "̮": [T: "breve alatti díszítés"] # 0x32e (en: 'breve below embellishment', DeepL translation)
+ - "̯": [T: "fordított breve alatti díszítés"] # 0x32f (en: 'inverted breve below embellishment', DeepL translation)
+ - "̰": [T: "tilde a díszítés alatt"] # 0x330 (en: 'tilde below embellishment', DeepL translation)
+ - "̱": [T: "makron alatti díszítés"] # 0x331 (en: 'macron below embellishment', DeepL translation)
+ - "̲": [T: "alacsony vonalú díszítés"] # 0x332 (en: 'low line embellishment', DeepL translation)
+ - "̳": [T: "kettős alacsony vonalú díszítés"] # 0x333 (en: 'double low line embellishment', DeepL translation)
+ - "̴": [T: "tilde a díszítés felett"] # 0x334 (en: 'tilde overlay embellishment', DeepL translation)
+ - "̵": [T: "rövid vonallal felrakott díszítés"] # 0x335 (en: 'short stroke overlay embellishment', DeepL translation)
+ - "̶": [T: "hosszú vonallal felrakott díszítés"] # 0x336 (en: 'long stroke overlay embellishment', DeepL translation)
+ - "̷": [T: "rövid solidus feletti díszítés"] # 0x337 (en: 'short solidus overlay embellishment', DeepL translation)
+ - "̸": [T: "hosszú solidus feletti díszítés"] # 0x338 (en: 'long solidus overlay embellishment', DeepL translation)
+ - "̹": [T: "jobb oldali félgyűrű alatti díszítés"] # 0x339 (en: 'right half ring below embellishment', DeepL translation)
+ - "̺": [T: "fordított híd alatti díszítés"] # 0x33a (en: 'inverted bridge below embellishment', DeepL translation)
+ - "̻": [T: "négyzet alatti díszítés"] # 0x33b (en: 'square below embellishment', DeepL translation)
+ - "̼": [T: "sirály alatta díszítés"] # 0x33c (en: 'seagull below embellishment', DeepL translation)
+ - "̽": [T: "x feletti díszítés"] # 0x33d (en: 'x above embellishment', DeepL translation)
+ - "̾": [T: "függőleges tilde díszítés"] # 0x33e (en: 'vertical tilde embellishment', DeepL translation)
+ - "̿": [T: "dupla felülvonalas díszítés"] # 0x33f (en: 'double overline embellishment', DeepL translation)
+ - "̀": [T: "súlyos hangjelzés díszítés"] # 0x340 (en: 'grave tone mark embellishment', DeepL translation)
+ - "́": [T: "hegyes tónusú díszítés"] # 0x341 (en: 'acute tone mark embellishment', DeepL translation)
+ - "͆": [T: "híd felett"] # 0x346 (en: 'bridge above', DeepL translation)
- "ΪΫϏ": # 0x3aa, 0x3ab, 0x3cf
- test:
@@ -205,29 +205,29 @@
if: "$SpeechOverrides_CapitalLetters = ''"
then_test:
if: "$Impairment = 'Blindness'"
- then: [t: "nagybetű"] # (en: 'cap', DeepL translation)
+ then: [T: "nagy"] # (en: 'cap', DeepL translation)
else: [x: "$SpeechOverrides_CapitalLetters"]
- pitch:
value: "$CapitalLetters_Pitch"
- replace: [spell: "translate('.', 'ΪΫϏ', 'ιυϗ')"]
- - t: "dialitikával" # (en: 'with dialytika', DeepL translation)
- - "ϊ": [t: "jota dialitikával"] # 0x3ca (en: 'iota with dialytika', DeepL translation)
- - "ϋ": [t: "felszilon dialitikával"] # 0x3cb (en: 'upsilon with dialytika', DeepL translation)
- - "ό": [t: "omikron tonossal"] # 0x3cc (en: 'omicron with tonos', DeepL translation)
- - "ύ": [t: "upsilon tonossal"] # 0x3cd (en: 'upsilon with tonos', DeepL translation)
- - "ώ": [t: "omega tonossal"] # 0x3ce (en: 'omega with tonos', DeepL translation)
- - "ϐ": [t: "béta"] # 0x3d0 (en: 'beta', DeepL translation)
- - "ϑ": [t: "théta"] # 0x3d1 (en: 'theta', DeepL translation)
- - "ϒ": [t: "felfelé mutató horoggal"] # 0x3d2 (en: 'upsilon with hook', DeepL translation)
- - "ϓ": [t: "felfelé mutató hegyes és kampós szög"] # 0x3d3 (en: 'upsilon with acute and hook', DeepL translation)
- - "ϔ": [t: "upsilon diaerézissel és horoggal"] # 0x3d4 (en: 'upsilon with diaeresis and hook', DeepL translation)
- - "ϕ": [t: "phi"] # 0x3d5 (DeepL translation)
- - "ϖ": [t: "pi"] # 0x3d6 (DeepL translation)
- - "ϗ": [t: "kai"] # 0x3d7 (DeepL translation)
- - "Ϙ": [t: "nagybetűs archaikus koppa"] # 0x3d8 (en: 'cap archaic koppa', DeepL translation)
- - "ϙ": [t: "archaikus koppa"] # 0x3d9 (en: 'archaic koppa', DeepL translation)
- - "ϵ": [t: "epsilon"] # 0x3f5 (DeepL translation)
- - "϶": [t: "fordított epsilon"] # 0x3f6 (en: 'reversed epsilon', DeepL translation)
+ replace: [SPELL: "translate('.', 'ΪΫϏ', 'ιυϗ')"]
+ - T: "dialitikával" # (en: 'with dialytika', DeepL translation)
+ - "ϊ": [T: "jota dialitikával"] # 0x3ca (en: 'iota with dialytika', DeepL translation)
+ - "ϋ": [T: "upsilon dialitikával"] # 0x3cb (en: 'upsilon with dialytika', DeepL translation)
+ - "ό": [T: "omikron tonoszokkal"] # 0x3cc (en: 'omicron with tonos', DeepL translation)
+ - "ύ": [T: "upsilon tonoszokkal"] # 0x3cd (en: 'upsilon with tonos', DeepL translation)
+ - "ώ": [T: "omega tonoszokkal"] # 0x3ce (en: 'omega with tonos', DeepL translation)
+ - "ϐ": [T: "béta"] # 0x3d0 (en: 'beta', DeepL translation)
+ - "ϑ": [T: "théta"] # 0x3d1 (en: 'theta', DeepL translation)
+ - "ϒ": [T: "upsilon horoggal"] # 0x3d2 (en: 'upsilon with hook', DeepL translation)
+ - "ϓ": [T: "upsilon hegyes és kampós horoggal"] # 0x3d3 (en: 'upsilon with acute and hook', DeepL translation)
+ - "ϔ": [T: "upsilon diaerézissel és horoggal"] # 0x3d4 (en: 'upsilon with diaeresis and hook', DeepL translation)
+ - "ϕ": [T: "phi"] # 0x3d5 (DeepL translation)
+ - "ϖ": [T: "pi"] # 0x3d6 (DeepL translation)
+ - "ϗ": [T: "kai"] # 0x3d7 (DeepL translation)
+ - "Ϙ": [T: "nagy archaikus koppa"] # 0x3d8 (en: 'cap archaic koppa', DeepL translation)
+ - "ϙ": [T: "archaikus koppa"] # 0x3d9 (en: 'archaic koppa', DeepL translation)
+ - "ϵ": [T: "epsilon"] # 0x3f5 (DeepL translation)
+ - "϶": [T: "fordított epsilon"] # 0x3f6 (en: 'reversed epsilon', DeepL translation)
- "А-Я": # 0x410 - 0x42f
- test:
if: "$CapitalLetters_Beep"
@@ -241,63 +241,63 @@
if: "$SpeechOverrides_CapitalLetters = ''"
then_test:
if: "$Impairment = 'Blindness'"
- then: [t: "nagybetű"] # (en: 'cap', DeepL translation)
+ then: [T: "nagy"] # (en: 'cap', DeepL translation)
else: [x: "$SpeechOverrides_CapitalLetters"]
- pitch:
value: "$CapitalLetters_Pitch"
- replace: [spell: "translate('.', 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ', 'абвгдежзийклмнопрстуфхцчшщъыьэюя')"]
- - "а": [t: "а"] # 0x430 (en: 'a', DeepL translation)
- - "б": [t: "be"] # 0x431 (DeepL translation)
- - "в": [t: "ve"] # 0x432 (DeepL translation)
- - "г": [t: "ghe"] # 0x433 (DeepL translation)
- - "д": [t: "de"] # 0x434 (DeepL translation)
- - "е": [t: "azaz"] # 0x435 (en: 'ie', DeepL translation)
- - "ж": [t: "zhe"] # 0x436 (DeepL translation)
- - "з": [t: "ze"] # 0x437 (DeepL translation)
- - "и": [t: "и"] # 0x438 (en: 'i', DeepL translation)
- - "й": [t: "rövid i"] # 0x439 (en: 'short i', DeepL translation)
- - "к": [t: "ka"] # 0x43a (DeepL translation)
- - "л": [t: "el"] # 0x43b (DeepL translation)
- - "м": [t: "em"] # 0x43c (DeepL translation)
- - "н": [t: "en"] # 0x43d (DeepL translation)
- - "о": [t: "о"] # 0x43e (en: 'o', DeepL translation)
- - "п": [t: "pe"] # 0x43f (DeepL translation)
- - "р": [t: "er"] # 0x440 (DeepL translation)
- - "с": [t: "es"] # 0x441 (DeepL translation)
- - "т": [t: "te"] # 0x442 (DeepL translation)
- - "у": [t: "у"] # 0x443 (en: 'u', DeepL translation)
- - "ф": [t: "ef"] # 0x444 (DeepL translation)
- - "х": [t: "ha"] # 0x445 (DeepL translation)
- - "ц": [t: "tse"] # 0x446 (DeepL translation)
- - "ч": [t: "che"] # 0x447 (DeepL translation)
- - "ш": [t: "sha"] # 0x448 (DeepL translation)
- - "щ": [t: "shcha"] # 0x449 (DeepL translation)
- - "ъ": [t: "kemény jel"] # 0x44a (en: 'hard sign', DeepL translation)
- - "ы": [t: "yeru"] # 0x44b (DeepL translation)
- - "ь": [t: "lágy jel"] # 0x44c (en: 'soft sign', DeepL translation)
- - "э": [t: "э"] # 0x44d (en: 'e', DeepL translation)
- - "ю": [t: "yu"] # 0x44e (DeepL translation)
- - "я": [t: "ya"] # 0x44f (DeepL translation)
- - "؆": [t: "arab-indikus köbgyök"] # 0x606 (en: 'Arabic-Indic cube root', DeepL translation)
- - "؇": [t: "arab-indiai negyedik gyök"] # 0x607 (en: 'Arabic-Indic fourth root', DeepL translation)
- - "؈": [t: "arab sugár"] # 0x608 (en: 'Arabic ray', DeepL translation)
- - "‐": [t: "kötőjel"] # 0x2010 (en: 'hyphen', DeepL translation)
- - "‑": [t: "kötőjel"] # 0x2011 (en: 'hyphen', DeepL translation)
- - "‒": [t: "számjeles kötőjel"] # 0x2012 (en: 'figure dash', DeepL translation)
- - "–": [t: "en kötőjel"] # 0x2013 (en: 'en dash', DeepL translation)
- - "—": [t: "em kötőjel"] # 0x2014 (en: 'em dash', DeepL translation)
- - "―": [t: "vízszintes sáv"] # 0x2015 (en: 'horizontal bar', DeepL translation)
- - "‖": [t: "dupla függőleges vonal"] # 0x2016 (en: 'double vertical line', DeepL translation)
- - "†": [t: "tőr"] # 0x2020 (en: 'dagger', DeepL translation)
- - "‡": [t: "dupla tőr"] # 0x2021 (en: 'double dagger', DeepL translation)
-
- - " - ": [t: "‡"] # 0x2000 - 0x2007 (en: ' ', DeepL translation)
+ replace: [SPELL: "translate('.', 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ', 'абвгдежзийклмнопрстуфхцчшщъыьэюя')"]
+ - "а": [T: "а"] # 0x430 (en: 'a', DeepL translation)
+ - "б": [T: "ciril be"] # 0x431 (DeepL translation)
+ - "в": [T: "ciril ve"] # 0x432 (DeepL translation)
+ - "г": [T: "ciril ge"] # 0x433 (DeepL translation)
+ - "д": [T: "ciril de"] # 0x434 (DeepL translation)
+ - "е": [T: "ciril je"] # 0x435 (en: 'ie', DeepL translation)
+ - "ж": [T: "ciril zse"] # 0x436 (DeepL translation)
+ - "з": [T: "ciril ze"] # 0x437 (DeepL translation)
+ - "и": [T: "и"] # 0x438 (en: 'i', DeepL translation)
+ - "й": [T: "rövid i"] # 0x439 (en: 'short i', DeepL translation)
+ - "к": [T: "ciril k"] # 0x43a (DeepL translation)
+ - "л": [T: "el"] # 0x43b (DeepL translation)
+ - "м": [T: "ciril em"] # 0x43c (DeepL translation)
+ - "н": [T: "ciril en"] # 0x43d (DeepL translation)
+ - "о": [T: "о"] # 0x43e (en: 'o', DeepL translation)
+ - "п": [T: "pe"] # 0x43f (DeepL translation)
+ - "р": [T: "er"] # 0x440 (DeepL translation)
+ - "с": [T: "ciril esz"] # 0x441 (DeepL translation)
+ - "т": [T: "ciril te"] # 0x442 (DeepL translation)
+ - "у": [T: "у"] # 0x443 (en: 'u', DeepL translation)
+ - "ф": [T: "ciril ef"] # 0x444 (DeepL translation)
+ - "х": [T: "ciril ha"] # 0x445 (DeepL translation)
+ - "ц": [T: "ciril tse"] # 0x446 (DeepL translation)
+ - "ч": [T: "ciril che"] # 0x447 (DeepL translation)
+ - "ш": [T: "ciril sha"] # 0x448 (DeepL translation)
+ - "щ": [T: "ciril shcha"] # 0x449 (DeepL translation)
+ - "ъ": [T: "kemény jel"] # 0x44a (en: 'hard sign', DeepL translation)
+ - "ы": [T: "ciril yeru"] # 0x44b (DeepL translation)
+ - "ь": [T: "lágy jel"] # 0x44c (en: 'soft sign', DeepL translation)
+ - "э": [T: "э"] # 0x44d (en: 'e', DeepL translation)
+ - "ю": [T: "ciril yu"] # 0x44e (DeepL translation)
+ - "я": [T: "ciril ya"] # 0x44f (DeepL translation)
+ - "؆": [T: "arab-indikus köbgyök"] # 0x606 (en: 'Arabic-Indic cube root', DeepL translation)
+ - "؇": [T: "arab-indiai negyedik gyök"] # 0x607 (en: 'Arabic-Indic fourth root', DeepL translation)
+ - "؈": [T: "arab sugár"] # 0x608 (en: 'Arabic ray', DeepL translation)
+ - "‐": [T: "kötőjel"] # 0x2010 (en: 'hyphen', DeepL translation)
+ - "‑": [T: "kötőjel"] # 0x2011 (en: 'hyphen', DeepL translation)
+ - "‒": [T: "számjeles kötőjel"] # 0x2012 (en: 'figure dash', DeepL translation)
+ - "–": [T: "en kötőjel"] # 0x2013 (en: 'en dash', DeepL translation)
+ - "—": [T: "em kötőjel"] # 0x2014 (en: 'em dash', DeepL translation)
+ - "―": [T: "vízszintes sáv"] # 0x2015 (en: 'horizontal bar', DeepL translation)
+ - "‖": [T: "dupla függőleges vonal"] # 0x2016 (en: 'double vertical line', DeepL translation)
+ - "†": [T: "tőr"] # 0x2020 (en: 'dagger', DeepL translation)
+ - "‡": [T: "dupla tőr"] # 0x2021 (en: 'double dagger', DeepL translation)
+
+ - " - ": [T: "‡"] # 0x2000 - 0x2007 (en: ' ', DeepL translation)
- "•": # 0x2022
- test:
if: "@data-chem-formula-op"
- then: [t: "pont"] # (en: 'dot', DeepL translation)
- else: [t: "golyó"] # (en: 'bullet', DeepL translation)
+ then: [T: "pont"] # (en: 'dot', DeepL translation)
+ else: [T: "golyó"] # (en: 'bullet', DeepL translation)
- "…": # 0x2026
test:
@@ -306,882 +306,882 @@
# must be ClearSpeak and $ClearSpeak_Ellipses = 'AndSoOn'
# speak '…' as 'and so on...' unless expr starts with '…'
- "../*[1][.='…']"
- then: [t: "pont pont pont pont"] # (en: 'dot dot dot', DeepL translation)
+ then: [T: "pont pont pont"] # (en: 'dot dot dot', DeepL translation)
else_test: # must have $ClearSpeak_Ellipses = 'AndSoOn'
if: "count(following-sibling::*) = 0"
then: [T: "és így tovább"] # (en: 'and so on', DeepL translation)
else: [T: "és így tovább egészen az alábbi értékig:"] # (en: 'and so on up to', DeepL translation)
- - "‰": [t: "per mille"] # 0x2030 (DeepL translation)
- - "‱": [t: "per tízezer"] # 0x2031 (en: 'per ten thousand', DeepL translation)
- - "′": [t: "prím"] # 0x2032 (en: 'prime', DeepL translation)
- - "″": [t: "dupla prím"] # 0x2033 (en: 'double prime', DeepL translation)
- - "‴": [t: "hármas prím"] # 0x2034 (en: 'triple prime', DeepL translation)
- - "‵": [t: "fordított prím"] # 0x2035 (en: 'reversed prime', DeepL translation)
- - "‶": [t: "fordított dupla prímszám"] # 0x2036 (en: 'reversed double prime', DeepL translation)
- - "‷": [t: "fordított hármas prím"] # 0x2037 (en: 'reversed triple prime', DeepL translation)
- - "‸": [t: "a"] # 0x2038 (en: 'to the', DeepL translation)
- - "‹": [t: "egyetlen balra mutató szögletes idézőjel"] # 0x2039 (en: 'single left pointing angle quote mark', DeepL translation)
- - "›": [t: "egyszerű jobbra mutató szögletes idézőjel"] # 0x203a (en: 'single right pointing angle quote mark', DeepL translation)
+ - "‰": [T: "ezrelék"] # 0x2030 (DeepL translation)
+ - "‱": [T: "per tízezer"] # 0x2031 (en: 'per ten thousand', DeepL translation)
+ - "′": [T: "prím"] # 0x2032 (en: 'prime', DeepL translation)
+ - "″": [T: "dupla prím"] # 0x2033 (en: 'double prime', DeepL translation)
+ - "‴": [T: "hármas ikerprím"] # 0x2034 (en: 'triple prime', DeepL translation)
+ - "‵": [T: "fordított prím"] # 0x2035 (en: 'reversed prime', DeepL translation)
+ - "‶": [T: "fordított dupla prím"] # 0x2036 (en: 'reversed double prime', DeepL translation)
+ - "‷": [T: "fordított hármas prím"] # 0x2037 (en: 'reversed triple prime', DeepL translation)
+ - "‸": [T: "a(z)"] # 0x2038 (en: 'to the', DeepL translation)
+ - "‹": [T: "egyetlen balra mutató szögletes idézőjel"] # 0x2039 (en: 'single left pointing angle quote mark', DeepL translation)
+ - "›": [T: "egyszerű jobbra mutató szögletes idézőjel"] # 0x203a (en: 'single right pointing angle quote mark', DeepL translation)
- "‼": # 0x203c
- test:
if: "ancestor-or-self::*[contains(@data-intent-property, ':literal:')]"
- then: [t: "dupla felkiáltójel"] # 0x203c (en: 'double exclamation point', DeepL translation)
- else: [t: "dupla faktoriális"] # 0x203c (en: 'double factorial', DeepL translation)
+ then: [T: "dupla felkiáltójel"] # 0x203c (en: 'double exclamation point', DeepL translation)
+ else: [T: "dupla faktoriális"] # 0x203c (en: 'double factorial', DeepL translation)
- "⁄": # 0x2044
- test:
if: "ancestor-or-self::*[contains(@data-intent-property, ':literal:')]"
- then: [t: "nagy átlós vonal"] # 0x203c (en: 'large slash', DeepL translation)
- else: [t: "osztva"] # 0x203c (en: 'divided by', DeepL translation)
- - "⁅": [t: "bal szögletes zárójel tollal"] # 0x2045 (en: 'left square bracket with quill', DeepL translation)
- - "⁆": [t: "jobb oldali szögletes zárójel tollal"] # 0x2046 (en: 'right square bracket with quill', DeepL translation)
- - "※": [t: "referenciajel"] # 0x203b (en: 'reference mark', DeepL translation)
- - "‿": [t: "alá kötés"] # 0x203F (en: 'under tie', DeepL translation)
- - "⁀": [t: "nyakkendő"] # 0x2040 (en: 'tie', DeepL translation)
- - "⁎": [t: "alacsony csillaggal"] # 0x204e (en: 'low asterisk', DeepL translation)
- - "⁏": [t: "fordított pontosvessző"] # 0x204f (en: 'reversed semicolon', DeepL translation)
- - "⁐": [t: "közelről"] # 0x2050 (en: 'close up', DeepL translation)
- - "⁑": [t: "két függőleges csillag"] # 0x2051 (en: 'two vertical asterisks', DeepL translation)
- - "⁒": [t: "kereskedelmi mínusz jel"] # 0x2052 (en: 'commercial minus sign', DeepL translation)
- - "⁗": [t: "négyszeres prím"] # 0x2057 (en: 'quadruple prime', DeepL translation)
- - "": [t: ""] # 0x2060
- - "⁰": [t: "a nulladik hatványig"] # 0x2070 (en: 'to the zeroth power', DeepL translation)
- - "ⁱ": [t: "i-edik hatványig"] # 0x2071 (en: 'to the i-th power', DeepL translation)
- - "⁴": [t: "a negyedik hatványig"] # 0x2074 (en: 'to the fourth power', DeepL translation)
- - "⁵": [t: "ötödik hatványra"] # 0x2075 (en: 'to the fifth power', DeepL translation)
- - "⁶": [t: "hatodik hatványra"] # 0x2076 (en: 'to the sixth power', DeepL translation)
- - "⁷": [t: "hetedik hatványra"] # 0x2077 (en: 'to the seventh power', DeepL translation)
- - "⁸": [t: "az ath hatványra"] # 0x2078 (en: 'to the eighth power', DeepL translation)
- - "⁹": [t: "a kilencedik hatványra"] # 0x2079 (en: 'to the ninth power', DeepL translation)
- - "⁺": [t: "felsőbbrendű plusz jel"] # 0x207a (en: 'superscript plus sign', DeepL translation)
- - "⁻": [t: "feliratos mínusz"] # 0x207b (en: 'superscript minus', DeepL translation)
- - "⁼": [t: "feljebb írt egyenlőségjel"] # 0x207c (en: 'superscript equals sign', DeepL translation)
- - "⁽": [t: "feliratos bal oldali zárójel"] # 0x207d (en: 'superscript left parenthesis', DeepL translation)
- - "⁾": [t: "feliratos jobb oldali zárójel"] # 0x207e (en: 'superscript right parenthesis', DeepL translation)
- - "ⁿ": [t: "a legnagyobb erővel"] # 0x207f (en: 'to the ennth power', DeepL translation)
- - "₀": [t: "sub nulla"] # 0x2080 (en: 'sub zero', DeepL translation)
- - "₁": [t: "egyes alosztály"] # 0x2081 (en: 'sub one', DeepL translation)
- - "₂": [t: "sub kettő"] # 0x2082 (en: 'sub two', DeepL translation)
- - "₃": [t: "sub három"] # 0x2083 (en: 'sub three', DeepL translation)
- - "₄": [t: "alnégyes"] # 0x2084 (en: 'sub four', DeepL translation)
- - "₅": [t: "sub five"] # 0x2085 (DeepL translation)
- - "₆": [t: "sub hat"] # 0x2086 (en: 'sub six', DeepL translation)
- - "₇": [t: "sub seven"] # 0x2087 (DeepL translation)
- - "₈": [t: "sub at"] # 0x2088 (en: 'sub eight', DeepL translation)
- - "₉": [t: "sub nine"] # 0x2089 (DeepL translation)
- - "₊": [t: "alulírott plusz jel"] # 0x208a (en: 'subscript plus sign', DeepL translation)
- - "₋": [t: "alárendelő mínusz jel"] # 0x208b (en: 'subscript minus sign', DeepL translation)
- - "₌": [t: "indexált egyenlőségjel"] # 0x208c (en: 'subscript equals sign', DeepL translation)
- - "₍": [t: "index balra zárójelben"] # 0x208d (en: 'subscript left parenthesis', DeepL translation)
- - "₎": [t: "subscript jobb oldali zárójel"] # 0x208e (en: 'subscript right parenthesis', DeepL translation)
- - "ₐ": [t: "a. al"] # 0x2090 (en: 'sub A', DeepL translation)
- - "ₑ": [t: "sub e"] # 0x2091 (en: 'sub E', DeepL translation)
- - "ₒ": [t: "sub o"] # 0x2092 (en: 'sub O', DeepL translation)
- - "ₓ": [t: "sub x"] # 0x2093 (en: 'sub X', DeepL translation)
- - "ₕ": [t: "h részhalmaz"] # 0x2095 (en: 'sub H', DeepL translation)
- - "ₖ": [t: "sub k"] # 0x2096 (en: 'sub K', DeepL translation)
- - "ₗ": [t: "alul l"] # 0x2097 (en: 'sub L', DeepL translation)
- - "ₘ": [t: "sub m"] # 0x2098 (en: 'sub M', DeepL translation)
- - "ₙ": [t: "n alatti n"] # 0x2099 (en: 'sub N', DeepL translation)
- - "ₚ": [t: "sub p"] # 0x209a (en: 'sub P', DeepL translation)
- - "ₛ": [t: "sub s"] # 0x209b (en: 'sub S', DeepL translation)
- - "ₜ": [t: "sub t"] # 0x209c (en: 'sub T', DeepL translation)
- - "₠": [t: "európai áramegységek"] # 0x20a0 (en: 'european currenty units', DeepL translation)
- - "₡": [t: "kettőspontok"] # 0x20a1 (en: 'colons', DeepL translation)
- - "₢": [t: "cruzeiro"] # 0x20a2 (DeepL translation)
- - "₣": [t: "frank"] # 0x20a3 (en: 'franc', DeepL translation)
- - "₤": [t: "líra"] # 0x20a4 (en: 'lira', DeepL translation)
- - "₥": [t: "malmok"] # 0x20a5 (en: 'mills', DeepL translation)
- - "₦": [t: "naira"] # 0x20a6 (DeepL translation)
- - "₧": [t: "peseta"] # 0x20a7 (DeepL translation)
- - "₨": [t: "rúpiák"] # 0x20a8 (en: 'rupees', DeepL translation)
- - "₩": [t: "nyert"] # 0x20a9 (en: 'won', DeepL translation)
- - "₪": [t: "új sheqel"] # 0x20aa (en: 'new sheqels', DeepL translation)
- - "₫": [t: "dong"] # 0x20ab (DeepL translation)
- - "€": [t: "euró"] # 0x20ac (en: 'euros', DeepL translation)
- - "₭": [t: "kip"] # 0x20ad (DeepL translation)
- - "₮": [t: "tugrik"] # 0x20ae (DeepL translation)
- - "₯": [t: "drachma"] # 0x20af (DeepL translation)
- - "₰": [t: "német fillér"] # 0x20b0 (en: 'german pennies', DeepL translation)
- - "₱": [t: "peso"] # 0x20b1 (en: 'pesos', DeepL translation)
- - "₲": [t: "guaranis"] # 0x20b2 (DeepL translation)
- - "₳": [t: "ausztrálok"] # 0x20b3 (en: 'australs', DeepL translation)
- - "₴": [t: "hrivnyák"] # 0x20b4 (en: 'hryvnias', DeepL translation)
- - "₵": [t: "cedi"] # 0x20b5 (en: 'cedis', DeepL translation)
- - "₶": [t: "livre tournois"] # 0x20b6 (DeepL translation)
- - "₷": [t: "spesmilos"] # 0x20b7 (DeepL translation)
- - "₸": [t: "tenges"] # 0x20b8 (DeepL translation)
- - "₹": [t: "indiai rúpia"] # 0x20b9 (en: 'indian rupees', DeepL translation)
- - "₺": [t: "török líra"] # 0x20ba (en: 'turkish liras', DeepL translation)
- - "⃐": [t: "bal szigony felett díszítés"] # 0x20d0 (en: 'left harpoon above embellishment', DeepL translation)
- - "⃑": [t: "jobb szigony a díszítés felett"] # 0x20d1 (en: 'right harpoon above embellishment', DeepL translation)
- - "⃒": [t: "hosszú függőleges vonal feletti díszítés"] # 0x20d2 (en: 'long vertical line overlay embellishment', DeepL translation)
- - "⃓": [t: "rövid függőleges vonallal fedett díszítés"] # 0x20d3 (en: 'short vertical line overlay embellishment', DeepL translation)
- - "⃔": [t: "az óramutató járásával ellentétes irányú nyíl a díszítés felett"] # 0x20d4 (en: 'anticlockwise arrow above embellishment', DeepL translation)
- - "⃕": [t: "óramutató járásával megegyező irányú nyíl a díszítés felett"] # 0x20d5 (en: 'clockwise arrow above embellishment', DeepL translation)
- - "⃖": [t: "bal nyíl a díszítés felett"] # 0x20d6 (en: 'left arrow above embellishment', DeepL translation)
- - "⃗": [t: "jobbra nyíl fölött díszítés"] # 0x20d7 (en: 'right arrow above embellishment', DeepL translation)
- - "⃘": [t: "gyűrű feletti díszítés"] # 0x20d8 (en: 'ring overlay embellishment', DeepL translation)
- - "⃙": [t: "óramutató járásával megegyező gyűrűs feliratú díszítés"] # 0x20d9 (en: 'clockwise ring overlay embellishment', DeepL translation)
- - "⃚": [t: "óramutató járásával ellentétes irányú gyűrű feletti díszítés"] # 0x20da (en: 'anticlockwise ring overlay embellishment', DeepL translation)
- - "⃛": [t: "hármas pont"] # 0x20db (en: 'triple dot', DeepL translation)
- - "⃜": [t: "négyes pont"] # 0x20dc (en: 'quadruple dot', DeepL translation)
- - "⃝": [t: "bezáró kör díszítés"] # 0x20dd (en: 'enclosing circle embellishment', DeepL translation)
- - "⃞": [t: "záró négyzet alakú díszítés"] # 0x20de (en: 'enclosing square embellishment', DeepL translation)
- - "⃟": [t: "zárt gyémánt díszítés"] # 0x20df (en: 'enclosing diamond embellishment', DeepL translation)
- - "⃠": [t: "bezáró kör visszafelé irányuló díszítés"] # 0x20e0 (en: 'enclosing circle backslash embellishment', DeepL translation)
- - "⃡": [t: "balra jobbra nyíl a díszítés felett"] # 0x20e1 (en: 'left right arrow above embellishment', DeepL translation)
- - "⃢": [t: "körülzáró képernyő díszítés"] # 0x20e2 (en: 'enclosing screen embellishment', DeepL translation)
- - "⃣": [t: "zárt kulcsosházas díszítés"] # 0x20e3 (en: 'enclosing keycap embellishment', DeepL translation)
- - "⃤": [t: "zárt felfelé mutató háromszög díszítés"] # 0x20e4 (en: 'enclosing upward pointing triangle embellishment', DeepL translation)
- - "⃥": [t: "fordított solidus feletti díszítés"] # 0x20e5 (en: 'reverse solidus overlay embellishment', DeepL translation)
- - "⃦": [t: "kettős függőleges vonás díszítés"] # 0x20e6 (en: 'double verticle stroke embellishment', DeepL translation)
- - "⃧": [t: "járadékszimbólum díszítés"] # 0x20e7 (en: 'annuity symbol embellishment', DeepL translation)
- - "⃨": [t: "háromszoros aláhúzás"] # 0x20e8 (en: 'triple underdot', DeepL translation)
- - "⃩": [t: "széles híd a díszítés felett"] # 0x20e9 (en: 'wide bridge above embellishment', DeepL translation)
- - "⃪": [t: "bal nyíl feletti díszítés"] # 0x20ea (en: 'left arrow overlay embellishment', DeepL translation)
- - "⃫": [t: "hosszú kettős szolidus feliratú feliratos díszítés"] # 0x20eb (en: 'long double solidus overlay embellishment', DeepL translation)
- - "⃬": [t: "jobb szigony lefelé szúrós díszítéssel"] # 0x20ec (en: 'right harpoon with barb down embellishment', DeepL translation)
- - "⃭": [t: "bal szigony lefelé szúrós díszítéssel"] # 0x20ed (en: 'left harpoon with barb down embellishment', DeepL translation)
- - "⃮": [t: "balra nyíl alatti díszítés"] # 0x20ee (en: 'left arrow below embellishment', DeepL translation)
- - "⃯": [t: "jobbra mutató nyíl alatt díszítés"] # 0x20ef (en: 'right arrow below embellishment', DeepL translation)
- - "⃰": [t: "csillag a díszítés felett"] # 0x20f0 (en: 'asterisk above embellishment', DeepL translation)
- - "℄": [t: "középvonal szimbólum"] # 0x2104 (en: 'center line symbol', DeepL translation)
- - "℅": [t: "care of"] # 0x2105 (DeepL translation)
- - "℆": [t: "cada una"] # 0x2106 (DeepL translation)
- - "ℇ": [t: "euler-állandó"] # 0x2107 (en: 'euler's constant', DeepL translation)
- - "℈": [t: "skrupulusok"] # 0x2108 (en: 'scruples', DeepL translation)
- - "℉": [t: "fok fahrenheit"] # 0x2109 (en: 'degrees fahrenheit', DeepL translation)
- - "ℊ": [t: "írás g"] # 0x210a (en: 'script g', DeepL translation)
+ then: [T: "nagy átlós vonal"] # 0x203c (en: 'large slash', DeepL translation)
+ else: [T: "osztva"] # 0x203c (en: 'divided by', DeepL translation)
+ - "⁅": [T: "bal szögletes zárójel tollal"] # 0x2045 (en: 'left square bracket with quill', DeepL translation)
+ - "⁆": [T: "jobb szögletes zárójel tollal"] # 0x2046 (en: 'right square bracket with quill', DeepL translation)
+ - "※": [T: "referenciajel"] # 0x203b (en: 'reference mark', DeepL translation)
+ - "‿": [T: "alá kötés"] # 0x203F (en: 'under tie', DeepL translation)
+ - "⁀": [T: "nyakkendő"] # 0x2040 (en: 'tie', DeepL translation)
+ - "⁎": [T: "alacsony csillag"] # 0x204e (en: 'low asterisk', DeepL translation)
+ - "⁏": [T: "fordított pontosvessző"] # 0x204f (en: 'reversed semicolon', DeepL translation)
+ - "⁐": [T: "közelről"] # 0x2050 (en: 'close up', DeepL translation)
+ - "⁑": [T: "két függőleges csillag"] # 0x2051 (en: 'two vertical asterisks', DeepL translation)
+ - "⁒": [T: "kereskedelmi mínusz jel"] # 0x2052 (en: 'commercial minus sign', DeepL translation)
+ - "⁗": [T: "négyszeres prím"] # 0x2057 (en: 'quadruple prime', DeepL translation)
+ - "": [T: ""] # 0x2060
+ - "⁰": [T: "a nulladik hatványon"] # 0x2070 (en: 'to the zeroth power', DeepL translation)
+ - "ⁱ": [T: "i-edik hatványig"] # 0x2071 (en: 'to the i-th power', DeepL translation)
+ - "⁴": [T: "a negyedik hatványon"] # 0x2074 (en: 'to the fourth power', DeepL translation)
+ - "⁵": [T: "az ötödik hatványon"] # 0x2075 (en: 'to the fifth power', DeepL translation)
+ - "⁶": [T: "a hatodik hatványon"] # 0x2076 (en: 'to the sixth power', DeepL translation)
+ - "⁷": [T: "a hetedik hatványon"] # 0x2077 (en: 'to the seventh power', DeepL translation)
+ - "⁸": [T: "a nyolcadik hatványon"] # 0x2078 (en: 'to the eighth power', DeepL translation)
+ - "⁹": [T: "a kilencedik hatványon"] # 0x2079 (en: 'to the ninth power', DeepL translation)
+ - "⁺": [T: "felső index plusz"] # 0x207a (en: 'superscript plus sign', DeepL translation)
+ - "⁻": [T: "felső index mínusz"] # 0x207b (en: 'superscript minus', DeepL translation)
+ - "⁼": [T: "felső index egyenlő"] # 0x207c (en: 'superscript equals sign', DeepL translation)
+ - "⁽": [T: "felső index bal zárójel"] # 0x207d (en: 'superscript left parenthesis', DeepL translation)
+ - "⁾": [T: "felső index jobb zárójel"] # 0x207e (en: 'superscript right parenthesis', DeepL translation)
+ - "ⁿ": [T: "az n-edik hatványon"] # 0x207f (en: 'to the ennth power', DeepL translation)
+ - "₀": [T: "alsó index nulla"] # 0x2080 (en: 'sub zero', DeepL translation)
+ - "₁": [T: "alsó index egy"] # 0x2081 (en: 'sub one', DeepL translation)
+ - "₂": [T: "alsó index kettő"] # 0x2082 (en: 'sub two', DeepL translation)
+ - "₃": [T: "alsó index három"] # 0x2083 (en: 'sub three', DeepL translation)
+ - "₄": [T: "alsó index négy"] # 0x2084 (en: 'sub four', DeepL translation)
+ - "₅": [T: "alsó index öt"] # 0x2085 (DeepL translation)
+ - "₆": [T: "alsó index hat"] # 0x2086 (en: 'sub six', DeepL translation)
+ - "₇": [T: "alsó index hét"] # 0x2087 (DeepL translation)
+ - "₈": [T: "alsó index nyolc"] # 0x2088 (en: 'sub eight', DeepL translation)
+ - "₉": [T: "alsó index kilenc"] # 0x2089 (DeepL translation)
+ - "₊": [T: "alsó index plusz"] # 0x208a (en: 'subscript plus sign', DeepL translation)
+ - "₋": [T: "alsó index mínusz"] # 0x208b (en: 'subscript minus sign', DeepL translation)
+ - "₌": [T: "alsó index egyenlő"] # 0x208c (en: 'subscript equals sign', DeepL translation)
+ - "₍": [T: "alsó index balzárójel"] # 0x208d (en: 'subscript left parenthesis', DeepL translation)
+ - "₎": [T: "alsó index jobbzárójel"] # 0x208e (en: 'subscript right parenthesis', DeepL translation)
+ - "ₐ": [T: "alsó index a"] # 0x2090 (en: 'sub A', DeepL translation)
+ - "ₑ": [T: "alsó index e"] # 0x2091 (en: 'sub E', DeepL translation)
+ - "ₒ": [T: "alsó index o"] # 0x2092 (en: 'sub O', DeepL translation)
+ - "ₓ": [T: "alsó index x"] # 0x2093 (en: 'sub X', DeepL translation)
+ - "ₕ": [T: "alsó index h"] # 0x2095 (en: 'sub H', DeepL translation)
+ - "ₖ": [T: "alsó index k"] # 0x2096 (en: 'sub K', DeepL translation)
+ - "ₗ": [T: "alsó index l"] # 0x2097 (en: 'sub L', DeepL translation)
+ - "ₘ": [T: "alsó index m"] # 0x2098 (en: 'sub M', DeepL translation)
+ - "ₙ": [T: "alsó index n"] # 0x2099 (en: 'sub N', DeepL translation)
+ - "ₚ": [T: "alsó index p"] # 0x209a (en: 'sub P', DeepL translation)
+ - "ₛ": [T: "alsó index s"] # 0x209b (en: 'sub S', DeepL translation)
+ - "ₜ": [T: "alsó index t"] # 0x209c (en: 'sub T', DeepL translation)
+ - "₠": [T: "európai áramegységek"] # 0x20a0 (en: 'european currenty units', DeepL translation)
+ - "₡": [T: "kettőspontok"] # 0x20a1 (en: 'colons', DeepL translation)
+ - "₢": [T: "cruzeiro"] # 0x20a2 (DeepL translation)
+ - "₣": [T: "frank"] # 0x20a3 (en: 'franc', DeepL translation)
+ - "₤": [T: "líra"] # 0x20a4 (en: 'lira', DeepL translation)
+ - "₥": [T: "malmok"] # 0x20a5 (en: 'mills', DeepL translation)
+ - "₦": [T: "naira"] # 0x20a6 (DeepL translation)
+ - "₧": [T: "peseta"] # 0x20a7 (DeepL translation)
+ - "₨": [T: "rúpiák"] # 0x20a8 (en: 'rupees', DeepL translation)
+ - "₩": [T: "won"] # 0x20a9 (en: 'won', DeepL translation)
+ - "₪": [T: "új sheqel"] # 0x20aa (en: 'new sheqels', DeepL translation)
+ - "₫": [T: "dong"] # 0x20ab (DeepL translation)
+ - "€": [T: "euró"] # 0x20ac (en: 'euros', DeepL translation)
+ - "₭": [T: "kip"] # 0x20ad (DeepL translation)
+ - "₮": [T: "tugrik"] # 0x20ae (DeepL translation)
+ - "₯": [T: "drachma"] # 0x20af (DeepL translation)
+ - "₰": [T: "német fillér"] # 0x20b0 (en: 'german pennies', DeepL translation)
+ - "₱": [T: "peso"] # 0x20b1 (en: 'pesos', DeepL translation)
+ - "₲": [T: "guaranis"] # 0x20b2 (DeepL translation)
+ - "₳": [T: "ausztrálok"] # 0x20b3 (en: 'australs', DeepL translation)
+ - "₴": [T: "hrivnyák"] # 0x20b4 (en: 'hryvnias', DeepL translation)
+ - "₵": [T: "cedi"] # 0x20b5 (en: 'cedis', DeepL translation)
+ - "₶": [T: "torinói livre"] # 0x20b6 (DeepL translation)
+ - "₷": [T: "spesmilos"] # 0x20b7 (DeepL translation)
+ - "₸": [T: "tenges"] # 0x20b8 (DeepL translation)
+ - "₹": [T: "indiai rúpia"] # 0x20b9 (en: 'indian rupees', DeepL translation)
+ - "₺": [T: "török líra"] # 0x20ba (en: 'turkish liras', DeepL translation)
+ - "⃐": [T: "bal szigony felett díszítés"] # 0x20d0 (en: 'left harpoon above embellishment', DeepL translation)
+ - "⃑": [T: "jobb szigony a díszítés felett"] # 0x20d1 (en: 'right harpoon above embellishment', DeepL translation)
+ - "⃒": [T: "hosszú függőleges vonal feletti díszítés"] # 0x20d2 (en: 'long vertical line overlay embellishment', DeepL translation)
+ - "⃓": [T: "rövid függőleges vonallal fedett díszítés"] # 0x20d3 (en: 'short vertical line overlay embellishment', DeepL translation)
+ - "⃔": [T: "az óramutató járásával ellentétes irányú nyíl a díszítés felett"] # 0x20d4 (en: 'anticlockwise arrow above embellishment', DeepL translation)
+ - "⃕": [T: "az óramutató járásával megegyező irányú nyíl a díszítés felett"] # 0x20d5 (en: 'clockwise arrow above embellishment', DeepL translation)
+ - "⃖": [T: "bal nyíl a díszítés felett"] # 0x20d6 (en: 'left arrow above embellishment', DeepL translation)
+ - "⃗": [T: "jobb nyíl a díszítés fölött"] # 0x20d7 (en: 'right arrow above embellishment', DeepL translation)
+ - "⃘": [T: "gyűrű feletti díszítés"] # 0x20d8 (en: 'ring overlay embellishment', DeepL translation)
+ - "⃙": [T: "óramutató járásával megegyező gyűrűs feliratú díszítés"] # 0x20d9 (en: 'clockwise ring overlay embellishment', DeepL translation)
+ - "⃚": [T: "óramutató járásával ellentétes irányú gyűrű feletti díszítés"] # 0x20da (en: 'anticlockwise ring overlay embellishment', DeepL translation)
+ - "⃛": [T: "hármas pont"] # 0x20db (en: 'triple dot', DeepL translation)
+ - "⃜": [T: "négyes pont"] # 0x20dc (en: 'quadruple dot', DeepL translation)
+ - "⃝": [T: "bezáró kör díszítés"] # 0x20dd (en: 'enclosing circle embellishment', DeepL translation)
+ - "⃞": [T: "záró négyzet alakú díszítés"] # 0x20de (en: 'enclosing square embellishment', DeepL translation)
+ - "⃟": [T: "zárt gyémánt díszítés"] # 0x20df (en: 'enclosing diamond embellishment', DeepL translation)
+ - "⃠": [T: "bezáró kör, visszafelé irányuló díszítéssel"] # 0x20e0 (en: 'enclosing circle backslash embellishment', DeepL translation)
+ - "⃡": [T: "balra jobbra nyíl a díszítés felett"] # 0x20e1 (en: 'left right arrow above embellishment', DeepL translation)
+ - "⃢": [T: "körülzáró képernyő díszítés"] # 0x20e2 (en: 'enclosing screen embellishment', DeepL translation)
+ - "⃣": [T: "zárt kulcsosházas díszítés"] # 0x20e3 (en: 'enclosing keycap embellishment', DeepL translation)
+ - "⃤": [T: "zárt felfelé mutató háromszög díszítés"] # 0x20e4 (en: 'enclosing upward pointing triangle embellishment', DeepL translation)
+ - "⃥": [T: "fordított solidus feletti díszítés"] # 0x20e5 (en: 'reverse solidus overlay embellishment', DeepL translation)
+ - "⃦": [T: "dupla függőleges ecsetvonás díszítés"] # 0x20e6 (en: 'double verticle stroke embellishment', DeepL translation)
+ - "⃧": [T: "járadékszimbólum díszítés"] # 0x20e7 (en: 'annuity symbol embellishment', DeepL translation)
+ - "⃨": [T: "háromszoros aláhúzás"] # 0x20e8 (en: 'triple underdot', DeepL translation)
+ - "⃩": [T: "széles híd a díszítés felett"] # 0x20e9 (en: 'wide bridge above embellishment', DeepL translation)
+ - "⃪": [T: "bal nyíl feletti díszítés"] # 0x20ea (en: 'left arrow overlay embellishment', DeepL translation)
+ - "⃫": [T: "hosszú dupla szolidus feliratú díszítés"] # 0x20eb (en: 'long double solidus overlay embellishment', DeepL translation)
+ - "⃬": [T: "jobb szigony kampós díszítéssel"] # 0x20ec (en: 'right harpoon with barb down embellishment', DeepL translation)
+ - "⃭": [T: "bal szigony kampós díszítéssel"] # 0x20ed (en: 'left harpoon with barb down embellishment', DeepL translation)
+ - "⃮": [T: "balra nyíl alatti díszítés"] # 0x20ee (en: 'left arrow below embellishment', DeepL translation)
+ - "⃯": [T: "jobbra nyíl alatti díszítés"] # 0x20ef (en: 'right arrow below embellishment', DeepL translation)
+ - "⃰": [T: "csillag a díszítés felett"] # 0x20f0 (en: 'asterisk above embellishment', DeepL translation)
+ - "℄": [T: "középvonal szimbólum"] # 0x2104 (en: 'center line symbol', DeepL translation)
+ - "℅": [T: "gondoskodik valamiről"] # 0x2105 (DeepL translation)
+ - "℆": [T: "egyből"] # 0x2106 (DeepL translation)
+ - "ℇ": [T: "euler-állandó"] # 0x2107 (en: 'euler's constant', DeepL translation)
+ - "℈": [T: "skrupulusok"] # 0x2108 (en: 'scruples', DeepL translation)
+ - "℉": [T: "fahrenheit fok"] # 0x2109 (en: 'degrees fahrenheit', DeepL translation)
+ - "ℊ": [T: "alsó index g"] # 0x210a (en: 'script g', DeepL translation)
- "ℌℑℨℭ": # 0x210c, 0x2111, 0x2128, 0x212d
- - t: "fraktur" # (DeepL translation)
- - spell: "translate('.', 'ℌℑℨℭ', 'HIZC')"
+ - T: "fraktur" # (DeepL translation)
+ - SPELL: "translate('.', 'ℌℑℨℭ', 'HIZC')"
- "ℍℙℾℿ": # 0x210d, 0x2119, 0x213e, 0x213f
- T: "dupla leütésű" # (en: 'double struck', DeepL translation)
- - spell: "translate('.', 'ℍℙℾℿ', 'HPΓΠ')"
+ - SPELL: "translate('.', 'ℍℙℾℿ', 'HPΓΠ')"
- - "ℎ": [t: "planck-állandó"] # 0x210e (en: 'planck constant', DeepL translation)
- - "ℏ": [t: "h bar"] # 0x210f (DeepL translation)
+ - "ℎ": [T: "planck-állandó"] # 0x210e (en: 'planck constant', DeepL translation)
+ - "ℏ": [T: "h bar"] # 0x210f (DeepL translation)
- "ℐℒ℘ℬℰℱℳ": # 0x2110, 0x2112, 0x2118, 0x2130, 0x2131, 0x2133
- - t: "script" # (DeepL translation)
- - spell: "translate('.', 'ℐℒ℘ℬℰℱℳ', 'ILPBEFM')"
-
- - "ℓ": [t: "írás l"] # 0x2113 (en: 'script l', DeepL translation)
- - "℔": [t: "font"] # 0x2114 (en: 'pounds', DeepL translation)
- - "№": [t: "szám"] # 0x2116 (en: 'number', DeepL translation)
- - "℥": [t: "unciák"] # 0x2125 (en: 'ounces', DeepL translation)
- - "Ω": [t: "ohm"] # 0x2126 (en: 'ohms', DeepL translation)
- - "℧": [t: "mhos"] # 0x2127 (DeepL translation)
- - "℩": [t: "fordított jota"] # 0x2129 (en: 'turned iota', DeepL translation)
- - "K": [t: "kelvin"] # 0x212a (DeepL translation)
- - "Å": [t: "angström"] # 0x212b (en: 'angstroms', DeepL translation)
- - "ℯ": [t: "írás e"] # 0x212f (en: 'script e', DeepL translation)
+ - T: "alsó index" # (DeepL translation)
+ - SPELL: "translate('.', 'ℐℒ℘ℬℰℱℳ', 'ILPBEFM')"
+
+ - "ℓ": [T: "alsó index l"] # 0x2113 (en: 'script l', DeepL translation)
+ - "℔": [T: "font"] # 0x2114 (en: 'pounds', DeepL translation)
+ - "№": [T: "szám"] # 0x2116 (en: 'number', DeepL translation)
+ - "℥": [T: "unciák"] # 0x2125 (en: 'ounces', DeepL translation)
+ - "Ω": [T: "ohm"] # 0x2126 (en: 'ohms', DeepL translation)
+ - "℧": [T: "mhos"] # 0x2127 (DeepL translation)
+ - "℩": [T: "fordított jota"] # 0x2129 (en: 'turned iota', DeepL translation)
+ - "K": [T: "kelvin"] # 0x212a (DeepL translation)
+ - "Å": [T: "angström"] # 0x212b (en: 'angstroms', DeepL translation)
+ - "ℯ": [T: "alsó index e"] # 0x212f (en: 'script e', DeepL translation)
# coalesced some chars that use cap letters
- "Ⅎ℺⅁⅂⅃⅄": # 0x2132, 0x213a, 0x2141, 0x2142, 0x2143, 0x2144
- test:
- if: "'.' = '℺'"
- then: [t: "forgatott"] # (en: 'rotated', DeepL translation)
+ then: [T: "forgatott"] # (en: 'rotated', DeepL translation)
- else_if: "'.' = 'Ⅎ'"
then: [T: "fordított"] # (en: 'turned', DeepL translation)
- else_if: "'.' = '⅃'"
then: [T: "fordított talpatlan"] # (en: 'reversed sans-serif', DeepL translation)
else: [T: "fordított talpatlan"] # (en: 'turned sans-serif', DeepL translation)
- - spell: "translate('.', 'Ⅎ℺⅁⅂⅃⅄', 'FQGLLY')"
-
- - "ℴ": [t: "írás o"] # 0x2134 (en: 'script o', DeepL translation)
- - "ℵ": [t: "első transzfinit kardinális"] # 0x2135 (en: 'first transfinite cardinal', DeepL translation)
- - "ℶ": [t: "második transzfinit kardinális"] # 0x2136 (en: 'second transfinite cardinal', DeepL translation)
- - "ℷ": [t: "harmadik transzfinit kardinális"] # 0x2137 (en: 'third transfinite cardinal', DeepL translation)
- - "ℸ": [t: "negyedik transzfinit kardinális"] # 0x2138 (en: 'fourth transfinite cardinal', DeepL translation)
- - "ℼ": [t: "dupla leütött pi"] # 0x213c (en: 'double struck pi', DeepL translation)
- - "ℽ": [t: "dupla csapott gamma"] # 0x213d (en: 'double struck gamma', DeepL translation)
- - "⅀": [t: "kettős leütött n-es összegzés"] # 0x2140 (en: 'double struck n-ary summation', DeepL translation)
- - "⅋": [t: "fordított erősítőjel"] # 0x214b (en: 'turned ampersand', DeepL translation)
- - "⅌": [t: "per"] # 0x214c (DeepL translation)
- - "ⅎ": [t: "fordított f"] # 0x214e (en: 'turned F', DeepL translation)
- - "¼": [t: "egy negyed"] # 0x00bc (en: 'one quarter', DeepL translation)
- - "½": [t: "egy fél"] # 0x00bd (en: 'one half', DeepL translation)
- - "¾": [t: "háromnegyedes zárójel"] # 0x00be (en: 'three quarters', DeepL translation)
- - "⅐": [t: "egy hetedik"] # 0x2150 (en: 'one seventh', DeepL translation)
- - "⅑": [t: "egy kilencedik"] # 0x2151 (en: 'one ninth', DeepL translation)
- - "⅒": [t: "egy tized"] # 0x2152 (en: 'one tenth', DeepL translation)
- - "⅓": [t: "egyharmad"] # 0x2153 (en: 'one third', DeepL translation)
- - "⅔": [t: "két harmad"] # 0x2154 (en: 'two thirds', DeepL translation)
- - "⅕": [t: "egy ötödik"] # 0x2155 (en: 'one fifth', DeepL translation)
- - "⅖": [t: "két ötöd"] # 0x2156 (en: 'two fifths', DeepL translation)
- - "⅗": [t: "három ötödik"] # 0x2157 (en: 'three fifths', DeepL translation)
- - "⅘": [t: "négy ötöd"] # 0x2158 (en: 'four fifths', DeepL translation)
- - "⅙": [t: "egy hatod"] # 0x2159 (en: 'one sixth', DeepL translation)
- - "⅚": [t: "öt hatod"] # 0x215a (en: 'five sixths', DeepL translation)
- - "⅛": [t: "egy ath"] # 0x215b (en: 'one eighth', DeepL translation)
- - "⅜": [t: "három aths"] # 0x215c (en: 'three eighths', DeepL translation)
- - "⅝": [t: "öt at"] # 0x215d (en: 'five eighths', DeepL translation)
- - "⅞": [t: "hét atlasz"] # 0x215e (en: 'seven eighths', DeepL translation)
- - "⅟": [t: "egy fölött"] # 0x215f (en: 'one over', DeepL translation)
- - "Ⅰ": [t: "Ⅰ"] # 0x2160 (en: 'I', DeepL translation)
- - "Ⅱ": [t: "i i"] # 0x2161 (en: 'I I', DeepL translation)
- - "Ⅲ": [t: "i i i i"] # 0x2162 (en: 'I I I', DeepL translation)
- - "Ⅳ": [t: "i v"] # 0x2163 (en: 'I V', DeepL translation)
- - "Ⅴ": [t: "Ⅴ"] # 0x2164 (en: 'V', DeepL translation)
- - "Ⅵ": [t: "v i"] # 0x2165 (en: 'V I', DeepL translation)
- - "Ⅶ": [t: "v i i"] # 0x2166 (en: 'V I I', DeepL translation)
- - "Ⅷ": [t: "v i i i i"] # 0x2167 (en: 'V I I I', DeepL translation)
- - "Ⅸ": [t: "i x"] # 0x2168 (en: 'I X', DeepL translation)
- - "Ⅹ": [t: "Ⅹ"] # 0x2169 (en: 'X', DeepL translation)
- - "Ⅺ": [t: "x i"] # 0x216a (en: 'X I', DeepL translation)
- - "Ⅻ": [t: "x i i"] # 0x216b (en: 'X I I', DeepL translation)
- - "Ⅼ": [t: "Ⅼ"] # 0x216c (en: 'L', DeepL translation)
- - "Ⅽ": [t: "Ⅽ"] # 0x216d (en: 'C', DeepL translation)
- - "Ⅾ": [t: "Ⅾ"] # 0x216e (en: 'D', DeepL translation)
- - "Ⅿ": [t: "Ⅿ"] # 0x216f (en: 'M', DeepL translation)
- - "ⅰ": [t: "ⅰ"] # 0x2170 (en: 'I', DeepL translation)
- - "ⅱ": [t: "i i"] # 0x2171 (en: 'I I', DeepL translation)
- - "ⅲ": [t: "i i i i"] # 0x2172 (en: 'I I I', DeepL translation)
- - "ⅳ": [t: "i v"] # 0x2173 (en: 'I V', DeepL translation)
- - "ⅴ": [t: "ⅴ"] # 0x2174 (en: 'V', DeepL translation)
- - "ⅵ": [t: "v i"] # 0x2175 (en: 'V I', DeepL translation)
- - "ⅶ": [t: "v i i"] # 0x2176 (en: 'V I I', DeepL translation)
- - "ⅷ": [t: "v i i i i"] # 0x2177 (en: 'V I I I', DeepL translation)
- - "ⅸ": [t: "i x"] # 0x2178 (en: 'I X', DeepL translation)
- - "ⅹ": [t: "ⅹ"] # 0x2179 (en: 'X', DeepL translation)
- - "ⅺ": [t: "x i"] # 0x217a (en: 'X I', DeepL translation)
- - "ⅻ": [t: "x i i"] # 0x217b (en: 'X I I', DeepL translation)
- - "ⅼ": [t: "ⅼ"] # 0x217c (en: 'L', DeepL translation)
- - "ⅽ": [t: "ⅽ"] # 0x217d (en: 'C', DeepL translation)
- - "ⅾ": [t: "ⅾ"] # 0x217e (en: 'D', DeepL translation)
- - "ⅿ": [t: "ⅿ"] # 0x217f (en: 'M', DeepL translation)
- - "↉": [t: "nulla harmadok"] # 0x2189 (en: 'zero thirds', DeepL translation)
- - "↔": [t: "balra jobbra nyíl"] # 0x2194 (en: 'left right arrow', DeepL translation)
- - "↕": [t: "felfelé lefelé mutató nyíl"] # 0x2195 (en: 'up down arrow', DeepL translation)
- - "↖": [t: "északnyugati nyíl"] # 0x2196 (en: 'north west arrow', DeepL translation)
+ - SPELL: "translate('.', 'Ⅎ℺⅁⅂⅃⅄', 'FQGLLY')"
+
+ - "ℴ": [T: "alsó index o"] # 0x2134 (en: 'script o', DeepL translation)
+ - "ℵ": [T: "első transzfinit kardinális"] # 0x2135 (en: 'first transfinite cardinal', DeepL translation)
+ - "ℶ": [T: "második transzfinit kardinális"] # 0x2136 (en: 'second transfinite cardinal', DeepL translation)
+ - "ℷ": [T: "harmadik transzfinit kardinális"] # 0x2137 (en: 'third transfinite cardinal', DeepL translation)
+ - "ℸ": [T: "negyedik transzfinit kardinális"] # 0x2138 (en: 'fourth transfinite cardinal', DeepL translation)
+ - "ℼ": [T: "dupla leütött pi"] # 0x213c (en: 'double struck pi', DeepL translation)
+ - "ℽ": [T: "dupla leütött gamma"] # 0x213d (en: 'double struck gamma', DeepL translation)
+ - "⅀": [T: "kettős leütött n-es összegzés"] # 0x2140 (en: 'double struck n-ary summation', DeepL translation)
+ - "⅋": [T: "fordított erősítőjel"] # 0x214b (en: 'turned ampersand', DeepL translation)
+ - "⅌": [T: "per"] # 0x214c (DeepL translation)
+ - "ⅎ": [T: "fordított f"] # 0x214e (en: 'turned F', DeepL translation)
+ - "¼": [T: "egy negyed"] # 0x00bc (en: 'one quarter', DeepL translation)
+ - "½": [T: "egy fél"] # 0x00bd (en: 'one half', DeepL translation)
+ - "¾": [T: "három negyed"] # 0x00be (en: 'three quarters', DeepL translation)
+ - "⅐": [T: "egy heted"] # 0x2150 (en: 'one seventh', DeepL translation)
+ - "⅑": [T: "egy kilenced"] # 0x2151 (en: 'one ninth', DeepL translation)
+ - "⅒": [T: "egy tized"] # 0x2152 (en: 'one tenth', DeepL translation)
+ - "⅓": [T: "egyharmad"] # 0x2153 (en: 'one third', DeepL translation)
+ - "⅔": [T: "két harmad"] # 0x2154 (en: 'two thirds', DeepL translation)
+ - "⅕": [T: "egy ötöd"] # 0x2155 (en: 'one fifth', DeepL translation)
+ - "⅖": [T: "két ötöd"] # 0x2156 (en: 'two fifths', DeepL translation)
+ - "⅗": [T: "három ötöd"] # 0x2157 (en: 'three fifths', DeepL translation)
+ - "⅘": [T: "négy ötöd"] # 0x2158 (en: 'four fifths', DeepL translation)
+ - "⅙": [T: "egy hatod"] # 0x2159 (en: 'one sixth', DeepL translation)
+ - "⅚": [T: "öt hatod"] # 0x215a (en: 'five sixths', DeepL translation)
+ - "⅛": [T: "egy nyolcad"] # 0x215b (en: 'one eighth', DeepL translation)
+ - "⅜": [T: "három nyolcad"] # 0x215c (en: 'three eighths', DeepL translation)
+ - "⅝": [T: "öt nyolcad"] # 0x215d (en: 'five eighths', DeepL translation)
+ - "⅞": [T: "hét nyolcad"] # 0x215e (en: 'seven eighths', DeepL translation)
+ - "⅟": [T: "egy fölött"] # 0x215f (en: 'one over', DeepL translation)
+ - "Ⅰ": [T: "I"] # 0x2160 (en: 'I', DeepL translation)
+ - "Ⅱ": [T: "I I"] # 0x2161 (en: 'I I', DeepL translation)
+ - "Ⅲ": [T: "Ii I I"] # 0x2162 (en: 'I I I', DeepL translation)
+ - "Ⅳ": [T: "I V"] # 0x2163 (en: 'I V', DeepL translation)
+ - "Ⅴ": [T: "V"] # 0x2164 (en: 'V', DeepL translation)
+ - "Ⅵ": [T: "V I"] # 0x2165 (en: 'V I', DeepL translation)
+ - "Ⅶ": [T: "V I I"] # 0x2166 (en: 'V I I', DeepL translation)
+ - "Ⅷ": [T: "V I I I"] # 0x2167 (en: 'V I I I', DeepL translation)
+ - "Ⅸ": [T: "I X"] # 0x2168 (en: 'I X', DeepL translation)
+ - "Ⅹ": [T: "X"] # 0x2169 (en: 'X', DeepL translation)
+ - "Ⅺ": [T: "X I"] # 0x216a (en: 'X I', DeepL translation)
+ - "Ⅻ": [T: "X I I"] # 0x216b (en: 'X I I', DeepL translation)
+ - "Ⅼ": [T: "L"] # 0x216c (en: 'L', DeepL translation)
+ - "Ⅽ": [T: "C"] # 0x216d (en: 'C', DeepL translation)
+ - "Ⅾ": [T: "D"] # 0x216e (en: 'D', DeepL translation)
+ - "Ⅿ": [T: "M"] # 0x216f (en: 'M', DeepL translation)
+ - "ⅰ": [T: "I"] # 0x2170 (en: 'I', DeepL translation)
+ - "ⅱ": [T: "I I"] # 0x2171 (en: 'I I', DeepL translation)
+ - "ⅲ": [T: "I I I"] # 0x2172 (en: 'I I I', DeepL translation)
+ - "ⅳ": [T: "I V"] # 0x2173 (en: 'I V', DeepL translation)
+ - "ⅴ": [T: "V"] # 0x2174 (en: 'V', DeepL translation)
+ - "ⅵ": [T: "V I"] # 0x2175 (en: 'V I', DeepL translation)
+ - "ⅶ": [T: "V I I"] # 0x2176 (en: 'V I I', DeepL translation)
+ - "ⅷ": [T: "V I I I"] # 0x2177 (en: 'V I I I', DeepL translation)
+ - "ⅸ": [T: "I X"] # 0x2178 (en: 'I X', DeepL translation)
+ - "ⅹ": [T: "X"] # 0x2179 (en: 'X', DeepL translation)
+ - "ⅺ": [T: "X I"] # 0x217a (en: 'X I', DeepL translation)
+ - "ⅻ": [T: "X I I"] # 0x217b (en: 'X I I', DeepL translation)
+ - "ⅼ": [T: "L"] # 0x217c (en: 'L', DeepL translation)
+ - "ⅽ": [T: "C"] # 0x217d (en: 'C', DeepL translation)
+ - "ⅾ": [T: "D"] # 0x217e (en: 'D', DeepL translation)
+ - "ⅿ": [T: "M"] # 0x217f (en: 'M', DeepL translation)
+ - "↉": [T: "nulla harmad"] # 0x2189 (en: 'zero thirds', DeepL translation)
+ - "↔": [T: "balra jobbra nyíl"] # 0x2194 (en: 'left right arrow', DeepL translation)
+ - "↕": [T: "felfelé lefelé mutató nyíl"] # 0x2195 (en: 'up down arrow', DeepL translation)
+ - "↖": [T: "északnyugati nyíl"] # 0x2196 (en: 'north west arrow', DeepL translation)
- "↗": # 0x2197
- test:
if: "ancestor::*[2][self::m:limit]"
- then: [t: "alulról közelít"] # (en: 'approaches from below', DeepL translation)
- else: [t: "északkeleti nyíl"] # (en: 'north east arrow', DeepL translation)
+ then: [T: "alulról közelít"] # (en: 'approaches from below', DeepL translation)
+ else: [T: "északkeleti nyíl"] # (en: 'north east arrow', DeepL translation)
- "↘": # 0x2198
- test:
if: "ancestor::*[2][self::m:limit]"
- then: [t: "felülről közelít"] # (en: 'approaches from above', DeepL translation)
- else: [t: "délkeleti nyíl"] # (en: 'south east arrow', DeepL translation)
-
- - "↙": [t: "délnyugati nyíl"] # 0x2199 (en: 'south west arrow', DeepL translation)
- - "↚": [t: "balra nyíl vonallal"] # 0x219a (en: 'left arrow with stroke', DeepL translation)
- - "↛": [t: "jobbra mutató nyíl vonallal"] # 0x219b (en: 'right arrow with stroke', DeepL translation)
- - "↜": [t: "bal oldali hullámos nyíl"] # 0x219c (en: 'left wave arrow', DeepL translation)
- - "↝": [t: "jobb oldali hullámos nyíl"] # 0x219d (en: 'right wave arrow', DeepL translation)
- - "↞": [t: "bal kétfejű nyíl"] # 0x219e (en: 'left two headed arrow', DeepL translation)
- - "↟": [t: "felfelé kétfejű nyíl"] # 0x219f (en: 'up two headed arrow', DeepL translation)
- - "↠": [t: "jobb kétfejű nyíl"] # 0x21a0 (en: 'right two headed arrow', DeepL translation)
- - "↡": [t: "lefelé kétfejű nyíl"] # 0x21a1 (en: 'down two headed arrow', DeepL translation)
- - "↢": [t: "balra mutató nyíl farokkal"] # 0x21a2 (en: 'left arrow with tail', DeepL translation)
- - "↣": [t: "jobbra mutató nyíl farokkal"] # 0x21a3 (en: 'right arrow with tail', DeepL translation)
- - "↤": [t: "bal nyíl a sávból"] # 0x21a4 (en: 'left arrow from bar', DeepL translation)
- - "↥": [t: "felfelé mutató nyíl vonaltól"] # 0x21a5 (en: 'up arrow from bar', DeepL translation)
- - "↦": [t: "jobbra mutató nyíl a sávból"] # 0x21a6 (en: 'right arrow from bar', DeepL translation)
- - "↧": [t: "lefelé mutató nyíl a sávból"] # 0x21a7 (en: 'down arrow from bar', DeepL translation)
- - "↨": [t: "fel-le nyíl alappal"] # 0x21a8 (en: 'up down arrow with base', DeepL translation)
- - "↩": [t: "bal nyíl horoggal"] # 0x21a9 (en: 'left arrow with hook', DeepL translation)
- - "↪": [t: "jobbra mutató nyíl horoggal"] # 0x21aa (en: 'right arrow with hook', DeepL translation)
- - "↫": [t: "bal nyíl hurokkal"] # 0x21ab (en: 'left arrow with loop', DeepL translation)
- - "↬": [t: "jobbra mutató nyíl hurokkal"] # 0x21ac (en: 'right arrow with loop', DeepL translation)
- - "↭": [t: "balra jobbra hullámzó nyíl"] # 0x21ad (en: 'left right wave arrow', DeepL translation)
- - "↮": [t: "balra jobbra nyíl függőleges vonallal"] # 0x21ae (en: 'left right arrow with stroke', DeepL translation)
- - "↯": [t: "lefelé cikkcakkos nyíl"] # 0x21af (en: 'down zigzag arrow', DeepL translation)
- - "↰": [t: "felfelé mutató nyíl hegyével balra"] # 0x21b0 (en: 'up arrow with tip left', DeepL translation)
- - "↱": [t: "felfelé mutató nyíl jobbra mutató hegyével"] # 0x21b1 (en: 'up arrow with tip right', DeepL translation)
- - "↲": [t: "lefelé mutató nyíl bal csúccsal"] # 0x21b2 (en: 'down arrow with tip left', DeepL translation)
- - "↳": [t: "lefelé mutató nyíl hegyével jobbra"] # 0x21b3 (en: 'down arrow with tip right', DeepL translation)
- - "↴": [t: "jobbra nyíl sarokkal lefelé"] # 0x21b4 (en: 'right arrow with corner down', DeepL translation)
- - "↵": [t: "lefelé mutató nyíl bal oldali sarokkal"] # 0x21b5 (en: 'down arrow with corner left', DeepL translation)
- - "↶": [t: "az óramutató járásával ellentétes irányú felső félköríves nyíl"] # 0x21b6 (en: 'anticlockwise top semicircle arrow', DeepL translation)
- - "↷": [t: "óramutató járásával megegyezően felső félköríves nyíl"] # 0x21b7 (en: 'clockwise top semicircle arrow', DeepL translation)
- - "↸": [t: "északnyugati nyíl a hosszú sávra"] # 0x21b8 (en: 'north west arrow to long bar', DeepL translation)
- - "↹": [t: "bal nyíl a sáv fölé jobb nyíl a sáv fölé"] # 0x21b9 (en: 'left arrow to bar over right arrow to bar', DeepL translation)
- - "↺": [t: "az óramutató járásával ellentétes irányban nyitott kör alakú nyíl"] # 0x21ba (en: 'anticlockwise open circle arrow', DeepL translation)
- - "↻": [t: "az óramutató járásával megegyező irányban nyitott kör nyíl"] # 0x21bb (en: 'clockwise open circle arrow', DeepL translation)
- - "↼": [t: "bal oldali szigony felfelé"] # 0x21bc (en: 'left harpoon up', DeepL translation)
- - "↽": [t: "bal szigony lefelé"] # 0x21bd (en: 'left harpoon down', DeepL translation)
- - "↾": [t: "felfelé szigony jobbra"] # 0x21be (en: 'up harpoon right', DeepL translation)
- - "↿": [t: "fel szigony balra"] # 0x21bf (en: 'up harpoon left', DeepL translation)
- - "⇀": [t: "jobb szigony felfelé"] # 0x21c0 (en: 'right harpoon up', DeepL translation)
- - "⇁": [t: "jobb szigony lefelé"] # 0x21c1 (en: 'right harpoon down', DeepL translation)
- - "⇂": [t: "lefelé szigony jobbra"] # 0x21c2 (en: 'down harpoon right', DeepL translation)
- - "⇃": [t: "lefelé mutató szigony balra"] # 0x21c3 (en: 'down harpoon left', DeepL translation)
- - "⇄": [t: "jobb nyíl bal nyíl fölött"] # 0x21c4 (en: 'right arrow over left arrow', DeepL translation)
- - "⇅": [t: "felfelé nyíl balra a lefelé nyílból"] # 0x21c5 (en: 'up arrow left of down arrow', DeepL translation)
- - "⇆": [t: "bal nyíl jobb nyíl felett"] # 0x21c6 (en: 'left arrow over right arrow', DeepL translation)
- - "⇇": [t: "bal párosított nyilak"] # 0x21c7 (en: 'left paired arrows', DeepL translation)
- - "⇈": [t: "felfelé párosított nyilak"] # 0x21c8 (en: 'up paired arrows', DeepL translation)
- - "⇉": [t: "jobb oldali párosított nyilak"] # 0x21c9 (en: 'right paired arrows', DeepL translation)
- - "⇊": [t: "lefelé párosított nyilak"] # 0x21ca (en: 'down paired arrows', DeepL translation)
- - "⇋": [t: "bal szigony a jobb szigony felett"] # 0x21cb (en: 'left harpoon over right harpoon', DeepL translation)
- - "⇌": [t: "jobb szigony a bal szigony felett"] # 0x21cc (en: 'right harpoon over left harpoon', DeepL translation)
- - "⇍": [t: "bal kettős nyíl függőleges vonallal"] # 0x21cd (en: 'left double arrow with stroke', DeepL translation)
- - "⇎": [t: "balra jobbra dupla nyíl függőleges vonallal"] # 0x21ce (en: 'left right double arrow with stroke', DeepL translation)
- - "⇏": [t: "jobb oldali kettős nyíl vonallal"] # 0x21cf (en: 'right double arrow with stroke', DeepL translation)
- - "⇐": [t: "bal dupla nyíl"] # 0x21d0 (en: 'left double arrow', DeepL translation)
- - "⇑": [t: "felfelé mutató kettős nyíl"] # 0x21d1 (en: 'up double arrow', DeepL translation)
- - "⇒": [t: "implikálja"] # 0x21d2 (en: 'implies', DeepL translation)
- - "⇓": [t: "lefelé dupla nyíl"] # 0x21d3 (en: 'down double arrow', DeepL translation)
- - "⇔": [t: "ha és csak ha"] # 0x21d4 (en: 'if and only if', DeepL translation)
- - "⇕": [t: "fel le dupla nyíl"] # 0x21d5 (en: 'up down double arrow', DeepL translation)
- - "⇖": [t: "északnyugat kettős nyíl"] # 0x21d6 (en: 'north west double arrow', DeepL translation)
- - "⇗": [t: "északkelet kettős nyíl"] # 0x21d7 (en: 'north east double arrow', DeepL translation)
- - "⇘": [t: "délkeleti kettős nyíl"] # 0x21d8 (en: 'south east double arrow', DeepL translation)
- - "⇙": [t: "délnyugati kettős nyíl"] # 0x21d9 (en: 'south west double arrow', DeepL translation)
- - "⇚": [t: "bal hármas nyíl"] # 0x21da (en: 'left triple arrow', DeepL translation)
- - "⇛": [t: "jobbra mutató hármas nyíl"] # 0x21db (en: 'right triple arrow', DeepL translation)
- - "⇜": [t: "bal szögletes nyíl"] # 0x21dc (en: 'left squiggle arrow', DeepL translation)
- - "⇝": [t: "jobb oldali szögletes nyíl"] # 0x21dd (en: 'right squiggle arrow', DeepL translation)
- - "⇞": [t: "felfelé mutató nyíl dupla vonallal"] # 0x21de (en: 'up arrow with double stroke', DeepL translation)
- - "⇟": [t: "lefelé nyíl dupla vonallal"] # 0x21df (en: 'down arrow with double stroke', DeepL translation)
- - "⇠": [t: "balra szaggatott nyíl"] # 0x21e0 (en: 'left dashed arrow', DeepL translation)
- - "⇡": [t: "felfelé szaggatott nyíl"] # 0x21e1 (en: 'up dashed arrow', DeepL translation)
- - "⇢": [t: "jobbra szaggatott nyíl"] # 0x21e2 (en: 'right dashed arrow', DeepL translation)
- - "⇣": [t: "lefelé szaggatott nyíl"] # 0x21e3 (en: 'down dashed arrow', DeepL translation)
- - "⇤": [t: "balra mutató nyíl a sávhoz"] # 0x21e4 (en: 'left arrow to bar', DeepL translation)
- - "⇥": [t: "jobbra nyíl a sávra"] # 0x21e5 (en: 'right arrow to bar', DeepL translation)
- - "⇦": [t: "bal fehér nyíl"] # 0x21e6 (en: 'left white arrow', DeepL translation)
- - "⇧": [t: "felfelé mutató fehér nyíl"] # 0x21e7 (en: 'up white arrow', DeepL translation)
- - "⇨": [t: "jobb oldali fehér nyíl"] # 0x21e8 (en: 'right white arrow', DeepL translation)
- - "⇩": [t: "lefelé mutató fehér nyíl"] # 0x21e9 (en: 'down white arrow', DeepL translation)
- - "⇪": [t: "felfelé fehér nyíl a sávból"] # 0x21ea (en: 'up white arrow from bar', DeepL translation)
- - "⇫": [t: "felfelé mutató fehér nyíl a talapzaton"] # 0x21eb (en: 'up white arrow on pedestal', DeepL translation)
- - "⇬": [t: "felfelé mutató fehér nyíl talapzaton vízszintes sávval"] # 0x21ec (en: 'up white arrow on pedestal with horizontal bar', DeepL translation)
- - "⇭": [t: "felfelé mutató fehér nyíl talapzaton függőleges sávval"] # 0x21ed (en: 'up white arrow on pedestal with vertical bar', DeepL translation)
- - "⇮": [t: "felfelé fehér kettős nyíl"] # 0x21ee (en: 'up white double arrow', DeepL translation)
- - "⇯": [t: "felfelé fehér kettős nyíl talapzaton"] # 0x21ef (en: 'up white double arrow on pedestal', DeepL translation)
- - "⇰": [t: "jobb oldali fehér nyíl a falról"] # 0x21f0 (en: 'right white arrow from wall', DeepL translation)
- - "⇱": [t: "északnyugati nyíl a sarokba"] # 0x21f1 (en: 'north west arrow to corner', DeepL translation)
- - "⇲": [t: "délkeleti nyíl a sarokba"] # 0x21f2 (en: 'south east arrow to corner', DeepL translation)
- - "⇳": [t: "fel lefelé fehér nyíl"] # 0x21f3 (en: 'up down white arrow', DeepL translation)
- - "⇴": [t: "jobbra mutató nyíl kis körrel"] # 0x21f4 (en: 'right arrow with small circle', DeepL translation)
- - "⇵": [t: "lefelé mutató nyíl balra a felfelé mutató nyílból"] # 0x21f5 (en: 'down arrow left of up arrow', DeepL translation)
- - "⇶": [t: "három jobbra mutató nyíl"] # 0x21f6 (en: 'three right arrows', DeepL translation)
- - "⇷": [t: "bal nyíl függőleges vonallal"] # 0x21f7 (en: 'left arrow with vertical stroke', DeepL translation)
- - "⇸": [t: "jobb oldali nyíl függőleges vonallal"] # 0x21f8 (en: 'right arrow with vertical stroke', DeepL translation)
- - "⇹": [t: "balra jobbra nyíl függőleges vonallal"] # 0x21f9 (en: 'left right arrow with vertical stroke', DeepL translation)
- - "⇺": [t: "bal nyíl dupla függőleges vonallal"] # 0x21fa (en: 'left arrow with double vertical stroke', DeepL translation)
- - "⇻": [t: "jobb nyíl dupla függőleges vonallal"] # 0x21fb (en: 'right arrow with double vertical stroke', DeepL translation)
- - "⇼": [t: "bal jobb nyíl dupla függőleges vonallal"] # 0x21fc (en: 'left right arrow with double vertical stroke', DeepL translation)
- - "⇽": [t: "bal nyitott fejű nyíl"] # 0x21fd (en: 'left open headed arrow', DeepL translation)
- - "⇾": [t: "jobbra nyitott fejű nyíl"] # 0x21fe (en: 'right open headed arrow', DeepL translation)
- - "⇿": [t: "bal jobb nyitott fejű nyílvessző"] # 0x21ff (en: 'left right open headed arrow', DeepL translation)
- - "∀": [t: "mindenki számára"] # 0x2200 (en: 'for all', DeepL translation)
+ then: [T: "felülről közelít"] # (en: 'approaches from above', DeepL translation)
+ else: [T: "délkeleti nyíl"] # (en: 'south east arrow', DeepL translation)
+
+ - "↙": [T: "délnyugati nyíl"] # 0x2199 (en: 'south west arrow', DeepL translation)
+ - "↚": [T: "balra nyíl vonallal"] # 0x219a (en: 'left arrow with stroke', DeepL translation)
+ - "↛": [T: "jobbra nyíl vonallal"] # 0x219b (en: 'right arrow with stroke', DeepL translation)
+ - "↜": [T: "bal oldali hullámos nyíl"] # 0x219c (en: 'left wave arrow', DeepL translation)
+ - "↝": [T: "jobb oldali hullámos nyíl"] # 0x219d (en: 'right wave arrow', DeepL translation)
+ - "↞": [T: "bal kétfejű nyíl"] # 0x219e (en: 'left two headed arrow', DeepL translation)
+ - "↟": [T: "felfelé kétfejű nyíl"] # 0x219f (en: 'up two headed arrow', DeepL translation)
+ - "↠": [T: "jobb kétfejű nyíl"] # 0x21a0 (en: 'right two headed arrow', DeepL translation)
+ - "↡": [T: "lefelé kétfejű nyíl"] # 0x21a1 (en: 'down two headed arrow', DeepL translation)
+ - "↢": [T: "balra mutató nyíl farokkal"] # 0x21a2 (en: 'left arrow with tail', DeepL translation)
+ - "↣": [T: "jobbra mutató nyíl farokkal"] # 0x21a3 (en: 'right arrow with tail', DeepL translation)
+ - "↤": [T: "bal nyíl a sávból"] # 0x21a4 (en: 'left arrow from bar', DeepL translation)
+ - "↥": [T: "vonaltól induló felfelé mutató nyíl"] # 0x21a5 (en: 'up arrow from bar', DeepL translation)
+ - "↦": [T: "jobbra mutató nyíl a sávból"] # 0x21a6 (en: 'right arrow from bar', DeepL translation)
+ - "↧": [T: "lefelé mutató nyíl a sávból"] # 0x21a7 (en: 'down arrow from bar', DeepL translation)
+ - "↨": [T: "fel-le nyíl alappal"] # 0x21a8 (en: 'up down arrow with base', DeepL translation)
+ - "↩": [T: "bal nyíl horoggal"] # 0x21a9 (en: 'left arrow with hook', DeepL translation)
+ - "↪": [T: "jobbra mutató nyíl horoggal"] # 0x21aa (en: 'right arrow with hook', DeepL translation)
+ - "↫": [T: "bal nyíl hurokkal"] # 0x21ab (en: 'left arrow with loop', DeepL translation)
+ - "↬": [T: "jobbra mutató nyíl hurokkal"] # 0x21ac (en: 'right arrow with loop', DeepL translation)
+ - "↭": [T: "balra jobbra hullámzó nyíl"] # 0x21ad (en: 'left right wave arrow', DeepL translation)
+ - "↮": [T: "balra jobbra nyíl függőleges vonallal"] # 0x21ae (en: 'left right arrow with stroke', DeepL translation)
+ - "↯": [T: "lefelé cikkcakkos nyíl"] # 0x21af (en: 'down zigzag arrow', DeepL translation)
+ - "↰": [T: "felfelé nyíl balra mutató heggyel"] # 0x21b0 (en: 'up arrow with tip left', DeepL translation)
+ - "↱": [T: "felfelé nyíl jobbra mutató heggyel"] # 0x21b1 (en: 'up arrow with tip right', DeepL translation)
+ - "↲": [T: "lefelé mutató nyíl hegyével balra"] # 0x21b2 (en: 'down arrow with tip left', DeepL translation)
+ - "↳": [T: "lefelé mutató nyíl hegyével jobbra"] # 0x21b3 (en: 'down arrow with tip right', DeepL translation)
+ - "↴": [T: "jobbra nyíl sarokkal lefelé"] # 0x21b4 (en: 'right arrow with corner down', DeepL translation)
+ - "↵": [T: "lefelé mutató nyíl bal oldali sarokkal"] # 0x21b5 (en: 'down arrow with corner left', DeepL translation)
+ - "↶": [T: "az óramutató járásával ellentétes irányú felső félköríves nyíl"] # 0x21b6 (en: 'anticlockwise top semicircle arrow', DeepL translation)
+ - "↷": [T: "az óramutató járásával megegyezően felső félköríves nyíl"] # 0x21b7 (en: 'clockwise top semicircle arrow', DeepL translation)
+ - "↸": [T: "északnyugati nyíl a hosszú sávra"] # 0x21b8 (en: 'north west arrow to long bar', DeepL translation)
+ - "↹": [T: "bal nyíl a sáv fölé jobb nyíl a sáv fölé"] # 0x21b9 (en: 'left arrow to bar over right arrow to bar', DeepL translation)
+ - "↺": [T: "az óramutató járásával ellentétes irányban nyitott kör alakú nyíl"] # 0x21ba (en: 'anticlockwise open circle arrow', DeepL translation)
+ - "↻": [T: "az óramutató járásával megegyező irányban nyitott kör alakú nyíl"] # 0x21bb (en: 'clockwise open circle arrow', DeepL translation)
+ - "↼": [T: "bal oldali szigony felfelé"] # 0x21bc (en: 'left harpoon up', DeepL translation)
+ - "↽": [T: "bal szigony lefelé"] # 0x21bd (en: 'left harpoon down', DeepL translation)
+ - "↾": [T: "felfelé szigony jobbra"] # 0x21be (en: 'up harpoon right', DeepL translation)
+ - "↿": [T: "fel szigony balra"] # 0x21bf (en: 'up harpoon left', DeepL translation)
+ - "⇀": [T: "jobb szigony felfelé"] # 0x21c0 (en: 'right harpoon up', DeepL translation)
+ - "⇁": [T: "jobb szigony lefelé"] # 0x21c1 (en: 'right harpoon down', DeepL translation)
+ - "⇂": [T: "lefelé szigony jobbra"] # 0x21c2 (en: 'down harpoon right', DeepL translation)
+ - "⇃": [T: "lefelé mutató szigony balra"] # 0x21c3 (en: 'down harpoon left', DeepL translation)
+ - "⇄": [T: "jobbra mutató nyíl a balra mutató nyíl felett"] # 0x21c4 (en: 'right arrow over left arrow', DeepL translation)
+ - "⇅": [T: "felfelé mutató nyíl a lefelé mutató nyíltól balra"] # 0x21c5 (en: 'up arrow left of down arrow', DeepL translation)
+ - "⇆": [T: "balra mutató nyíl a jobbra mutató nyíl felett"] # 0x21c6 (en: 'left arrow over right arrow', DeepL translation)
+ - "⇇": [T: "bal párosított nyilak"] # 0x21c7 (en: 'left paired arrows', DeepL translation)
+ - "⇈": [T: "felfelé párosított nyilak"] # 0x21c8 (en: 'up paired arrows', DeepL translation)
+ - "⇉": [T: "jobb oldali párosított nyilak"] # 0x21c9 (en: 'right paired arrows', DeepL translation)
+ - "⇊": [T: "lefelé párosított nyilak"] # 0x21ca (en: 'down paired arrows', DeepL translation)
+ - "⇋": [T: "bal szigony a jobb szigony felett"] # 0x21cb (en: 'left harpoon over right harpoon', DeepL translation)
+ - "⇌": [T: "jobb szigony a bal szigony felett"] # 0x21cc (en: 'right harpoon over left harpoon', DeepL translation)
+ - "⇍": [T: "bal kettős nyíl függőleges vonallal"] # 0x21cd (en: 'left double arrow with stroke', DeepL translation)
+ - "⇎": [T: "balra jobbra dupla nyíl függőleges vonallal"] # 0x21ce (en: 'left right double arrow with stroke', DeepL translation)
+ - "⇏": [T: "jobb oldali kettős nyíl vonallal"] # 0x21cf (en: 'right double arrow with stroke', DeepL translation)
+ - "⇐": [T: "bal dupla nyíl"] # 0x21d0 (en: 'left double arrow', DeepL translation)
+ - "⇑": [T: "felfelé mutató kettős nyíl"] # 0x21d1 (en: 'up double arrow', DeepL translation)
+ - "⇒": [T: "implikálja"] # 0x21d2 (en: 'implies', DeepL translation)
+ - "⇓": [T: "lefelé dupla nyíl"] # 0x21d3 (en: 'down double arrow', DeepL translation)
+ - "⇔": [T: "ha, és csak ha"] # 0x21d4 (en: 'if and only if', DeepL translation)
+ - "⇕": [T: "fel le dupla nyíl"] # 0x21d5 (en: 'up down double arrow', DeepL translation)
+ - "⇖": [T: "északnyugati dupla nyíl"] # 0x21d6 (en: 'north west double arrow', DeepL translation)
+ - "⇗": [T: "északkeleti dupla nyíl"] # 0x21d7 (en: 'north east double arrow', DeepL translation)
+ - "⇘": [T: "délkeleti dupla nyíl"] # 0x21d8 (en: 'south east double arrow', DeepL translation)
+ - "⇙": [T: "délnyugati dupla nyíl"] # 0x21d9 (en: 'south west double arrow', DeepL translation)
+ - "⇚": [T: "balra mutató hármas nyíl"] # 0x21da (en: 'left triple arrow', DeepL translation)
+ - "⇛": [T: "jobbra mutató hármas nyíl"] # 0x21db (en: 'right triple arrow', DeepL translation)
+ - "⇜": [T: "bal szögletes nyíl"] # 0x21dc (en: 'left squiggle arrow', DeepL translation)
+ - "⇝": [T: "jobb szögletes nyíl"] # 0x21dd (en: 'right squiggle arrow', DeepL translation)
+ - "⇞": [T: "felfelé mutató nyíl dupla vonallal"] # 0x21de (en: 'up arrow with double stroke', DeepL translation)
+ - "⇟": [T: "lefelé nyíl dupla vonallal"] # 0x21df (en: 'down arrow with double stroke', DeepL translation)
+ - "⇠": [T: "balra szaggatott nyíl"] # 0x21e0 (en: 'left dashed arrow', DeepL translation)
+ - "⇡": [T: "felfelé szaggatott nyíl"] # 0x21e1 (en: 'up dashed arrow', DeepL translation)
+ - "⇢": [T: "jobbra szaggatott nyíl"] # 0x21e2 (en: 'right dashed arrow', DeepL translation)
+ - "⇣": [T: "lefelé szaggatott nyíl"] # 0x21e3 (en: 'down dashed arrow', DeepL translation)
+ - "⇤": [T: "balra mutató nyíl a sávhoz"] # 0x21e4 (en: 'left arrow to bar', DeepL translation)
+ - "⇥": [T: "jobbra mutató nyíl a sávhoz"] # 0x21e5 (en: 'right arrow to bar', DeepL translation)
+ - "⇦": [T: "bal fehér nyíl"] # 0x21e6 (en: 'left white arrow', DeepL translation)
+ - "⇧": [T: "felfelé mutató fehér nyíl"] # 0x21e7 (en: 'up white arrow', DeepL translation)
+ - "⇨": [T: "jobb oldali fehér nyíl"] # 0x21e8 (en: 'right white arrow', DeepL translation)
+ - "⇩": [T: "lefelé mutató fehér nyíl"] # 0x21e9 (en: 'down white arrow', DeepL translation)
+ - "⇪": [T: "felfelé fehér nyíl a sávból"] # 0x21ea (en: 'up white arrow from bar', DeepL translation)
+ - "⇫": [T: "felfelé mutató fehér nyíl a talapzaton"] # 0x21eb (en: 'up white arrow on pedestal', DeepL translation)
+ - "⇬": [T: "felfelé mutató fehér nyíl talapzaton vízszintes sávval"] # 0x21ec (en: 'up white arrow on pedestal with horizontal bar', DeepL translation)
+ - "⇭": [T: "felfelé mutató fehér nyíl talapzaton függőleges sávval"] # 0x21ed (en: 'up white arrow on pedestal with vertical bar', DeepL translation)
+ - "⇮": [T: "felfelé fehér kettős nyíl"] # 0x21ee (en: 'up white double arrow', DeepL translation)
+ - "⇯": [T: "felfelé fehér kettős nyíl talapzaton"] # 0x21ef (en: 'up white double arrow on pedestal', DeepL translation)
+ - "⇰": [T: "jobb oldali fehér nyíl a falról"] # 0x21f0 (en: 'right white arrow from wall', DeepL translation)
+ - "⇱": [T: "északnyugati nyíl a sarokhoz"] # 0x21f1 (en: 'north west arrow to corner', DeepL translation)
+ - "⇲": [T: "délkeleti nyíl a sarokhoz"] # 0x21f2 (en: 'south east arrow to corner', DeepL translation)
+ - "⇳": [T: "fel le fehér nyíl"] # 0x21f3 (en: 'up down white arrow', DeepL translation)
+ - "⇴": [T: "jobbra mutató nyíl kis körrel"] # 0x21f4 (en: 'right arrow with small circle', DeepL translation)
+ - "⇵": [T: "lefelé mutató nyíl balra a felfelé mutató nyílból"] # 0x21f5 (en: 'down arrow left of up arrow', DeepL translation)
+ - "⇶": [T: "három jobbra mutató nyíl"] # 0x21f6 (en: 'three right arrows', DeepL translation)
+ - "⇷": [T: "bal nyíl függőleges vonallal"] # 0x21f7 (en: 'left arrow with vertical stroke', DeepL translation)
+ - "⇸": [T: "jobb oldali nyíl függőleges vonallal"] # 0x21f8 (en: 'right arrow with vertical stroke', DeepL translation)
+ - "⇹": [T: "balra jobbra nyíl függőleges vonallal"] # 0x21f9 (en: 'left right arrow with vertical stroke', DeepL translation)
+ - "⇺": [T: "bal nyíl dupla függőleges vonallal"] # 0x21fa (en: 'left arrow with double vertical stroke', DeepL translation)
+ - "⇻": [T: "jobb nyíl dupla függőleges vonallal"] # 0x21fb (en: 'right arrow with double vertical stroke', DeepL translation)
+ - "⇼": [T: "bal jobb nyíl dupla függőleges vonallal"] # 0x21fc (en: 'left right arrow with double vertical stroke', DeepL translation)
+ - "⇽": [T: "bal nyitott fejű nyíl"] # 0x21fd (en: 'left open headed arrow', DeepL translation)
+ - "⇾": [T: "jobbra nyitott fejű nyíl"] # 0x21fe (en: 'right open headed arrow', DeepL translation)
+ - "⇿": [T: "bal jobb nyitott fejű nyíl"] # 0x21ff (en: 'left right open headed arrow', DeepL translation)
+ - "∀": [T: "mindenki számára"] # 0x2200 (en: 'for all', DeepL translation)
- "∁": # 0x2201
- test:
if: "$Verbosity!='Terse'"
- then: [t: "a"] # (en: 'the', DeepL translation)
- - t: "kiegészítése" # (en: 'complement of', DeepL translation)
+ then: [T: "a(z)"] # (en: 'the', DeepL translation)
+ - T: "kiegészítése" # (en: 'complement of', DeepL translation)
- "∂": # 0x2202
- test:
if: "$Verbosity='Terse'"
- then: [t: "részleges"] # (en: 'partial', DeepL translation)
- else: [t: "részleges derivált"] # (en: 'partial derivative', DeepL translation)
- - "∃": [t: "létezik"] # 0x2203 (en: 'there exists', DeepL translation)
- - "∄": [t: "nem létezik"] # 0x2204 (en: 'there does not exist', DeepL translation)
- - "∅": [t: "üres készlet"] # 0x2205 (en: 'empty set', DeepL translation)
+ then: [T: "részleges derivált"] # (en: 'partial', DeepL translation)
+ else: [T: "részleges derivált"] # (en: 'partial derivative', DeepL translation)
+ - "∃": [T: "létezik"] # 0x2203 (en: 'there exists', DeepL translation)
+ - "∄": [T: "nem létezik"] # 0x2204 (en: 'there does not exist', DeepL translation)
+ - "∅": [T: "üres halmaz"] # 0x2205 (en: 'empty set', DeepL translation)
- "∆": # 0x2206
- test:
if: "following-sibling::*"
then_test:
if: "$Verbosity!='Terse'"
- then: [t: "a lahplahsian of"] # "LahPlahsian" sounds better than "laplacian" in speech engines tested (en: 'the LahPlahsian of', DeepL translation)
- else: [t: "lahplahsian"] # (en: 'LahPlahsian', DeepL translation)
- else: [t: "lahplahsian"] # (en: 'LahPlahsian', DeepL translation)
+ then: [T: "egy laplaciánus"] # "LahPlahsian" sounds better than "laplacian" in speech engines tested (en: 'the LahPlahsian of', DeepL translation)
+ else: [T: "laplaciánus"] # (en: 'LahPlahsian', DeepL translation)
+ else: [T: "laplaciánus"] # (en: 'LahPlahsian', DeepL translation)
- - "∇": [t: "nahblah"] # 0x2207 (DeepL translation)
+ - "∇": [T: "nahblah"] # 0x2207 (DeepL translation)
- "∉": # 0x2209
# rule is identical to 0x2208
- test:
if: "$SpeechStyle != 'ClearSpeak'"
- then: [t: "nem eleme"] # (en: 'is not an element of', DeepL translation)
+ then: [T: "nem eleme"] # (en: 'is not an element of', DeepL translation)
# Several options for speaking elements in ClearSpeak -- they split between being inside a set or not and then the option
else_test:
if: "../../self::m:set or ../../../self::m:set" # inside a set
then_test:
- if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'In'
- then: [t: "not in"] # (DeepL translation)
+ then: [T: "nincs benne"] # (DeepL translation)
- else_if: $ClearSpeak_SetMemberSymbol = 'Member'
- then: [t: "nem tagja"] # (en: 'not member of', DeepL translation)
+ then: [T: "nem tagja ennek:"] # (en: 'not member of', DeepL translation)
- else_if: $ClearSpeak_SetMemberSymbol = 'Element'
- then: [t: "nem eleme"] # (en: 'not element of', DeepL translation)
- - else: [t: "nem tartozik hozzá"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'not belonging to', DeepL translation)
+ then: [T: "nem eleme ennek:"] # (en: 'not element of', DeepL translation)
+ - else: [T: "nem tartozik hozzá"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'not belonging to', DeepL translation)
else_test:
- if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'Member'
- then: [t: "nem tagja"] # (en: 'is not a member of', DeepL translation)
+ then: [T: "nem tagja ennek:"] # (en: 'is not a member of', DeepL translation)
- else_if: $ClearSpeak_SetMemberSymbol = 'Element'
- then: [t: "nem eleme"] # (en: 'is not an element of', DeepL translation)
+ then: [T: "nem eleme ennek:"] # (en: 'is not an element of', DeepL translation)
- else_if: $ClearSpeak_SetMemberSymbol = 'In'
- then: [t: "nincs benne"] # (en: 'is not in', DeepL translation)
- - else: [t: "nem tartozik hozzá"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'does not belong to', DeepL translation)
+ then: [T: "nincs benne"] # (en: 'is not in', DeepL translation)
+ - else: [T: "nem tartozik hozzá"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'does not belong to', DeepL translation)
- "∊": # 0x220a
- test:
if: "$SpeechStyle != 'ClearSpeak'"
then:
- test:
if: "$Verbosity!='Terse' and not(parent::m:set)" # "the set x is an element of ..." sounds bad
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "egy elem" # (en: 'an element of', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "egy eleme ennek:" # (en: 'an element of', DeepL translation)
# Several options for speaking elements in ClearSpeak -- they split between being inside a set or not and then the option
else_test:
if: "../../self::m:set or ../../../self::m:set" # inside a set
then_test:
- if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'In'
- then: [t: "in"] # (DeepL translation)
+ then: [T: "benne van"] # (DeepL translation)
- else_if: $ClearSpeak_SetMemberSymbol = 'Member'
- then: [t: "tagja"] # (en: 'member of', DeepL translation)
+ then: [T: "tagja ennek:"] # (en: 'member of', DeepL translation)
- else_if: $ClearSpeak_SetMemberSymbol = 'Element'
- then: [t: "eleme"] # (en: 'element of', DeepL translation)
- - else: [t: "hozzátartozó"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'belonging to', DeepL translation)
+ then: [T: "eleme ennek:"] # (en: 'element of', DeepL translation)
+ - else: [T: "hozzátartozó"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'belonging to', DeepL translation)
else_test:
- if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'Member'
- then: [t: "tagja a"] # (en: 'is a member of', DeepL translation)
+ then: [T: "tagja ennek:"] # (en: 'is a member of', DeepL translation)
- else_if: $ClearSpeak_SetMemberSymbol = 'Element'
- then: [t: "egy elem a"] # (en: 'is an element of', DeepL translation)
+ then: [T: "egy eleme ennek:"] # (en: 'is an element of', DeepL translation)
- else_if: $ClearSpeak_SetMemberSymbol = 'In'
- then: [t: "van benne"] # (en: 'is in', DeepL translation)
- - else: [t: "tartozik"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'belongs to', DeepL translation)
- - "∋": [t: "tartalmazza a tagot"] # 0x220b (en: 'contains the member', DeepL translation)
- - "∌": [t: "nem tartalmazza a tagot"] # 0x220c (en: 'does not contain the member', DeepL translation)
- - "∍": [t: "tartalmazza a tagot"] # 0x220d (en: 'contains the member', DeepL translation)
- - "∎": [t: "a bizonyítás vége"] # 0x220e (en: 'end of proof', DeepL translation)
- - "∏": [t: "termék"] # 0x220f (en: 'product', DeepL translation)
- - "∐": [t: "koprodukció"] # 0x2210 (en: 'coproduct', DeepL translation)
- - "∑": [t: "sum"] # 0x2211 (DeepL translation)
- - "−": [t: "mínusz"] # 0x2212 (en: 'minus', DeepL translation)
- - "∓": [t: "mínusz vagy plusz"] # 0x2213 (en: 'minus or plus', DeepL translation)
- - "∔": [t: "pont plusz"] # 0x2214 (en: 'dot plus', DeepL translation)
- - "∕": [t: "osztva"] # 0x2215 (en: 'divided by', DeepL translation)
- - "∖": [t: "beállított mínusz"] # 0x2216 (en: 'set minus', DeepL translation)
- - "∗": [t: "idők"] # 0x2217 (en: 'times', DeepL translation)
- - "∘": [t: "összeállítva"] # 0x2218 (en: 'composed with', DeepL translation)
+ then: [T: "benne van"] # (en: 'is in', DeepL translation)
+ - else: [T: "tartozik"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'belongs to', DeepL translation)
+ - "∋": [T: "tagként tartalmazza"] # 0x220b (en: 'contains the member', DeepL translation)
+ - "∌": [T: "tagként nem tartalmazza"] # 0x220c (en: 'does not contain the member', DeepL translation)
+ - "∍": [T: "részben tagként tartalmazza"] # 0x220d (en: 'contains the member', DeepL translation)
+ - "∎": [T: "bizonyítás vége"] # 0x220e (en: 'end of proof', DeepL translation)
+ - "∏": [T: "produktum"] # 0x220f (en: 'product', DeepL translation)
+ - "∐": [T: "koproduktum"] # 0x2210 (en: 'coproduct', DeepL translation)
+ - "∑": [T: "összeg"] # 0x2211 (DeepL translation)
+ - "−": [T: "mínusz"] # 0x2212 (en: 'minus', DeepL translation)
+ - "∓": [T: "mínusz vagy plusz"] # 0x2213 (en: 'minus or plus', DeepL translation)
+ - "∔": [T: "pontozott plusz"] # 0x2214 (en: 'dot plus', DeepL translation)
+ - "∕": [T: "osztva"] # 0x2215 (en: 'divided by', DeepL translation)
+ - "∖": [T: "halmaz mínusz"] # 0x2216 (en: 'set minus', DeepL translation)
+ - "∗": [T: "csillag operátor"] # 0x2217 (en: 'times', DeepL translation)
+ - "∘": [T: "gyűrű operátor"] # 0x2218 (en: 'composed with', DeepL translation)
- "∙": # 0x2219
- test:
if: "@data-chem-formula-op"
- then: [t: "pont"] # (en: 'dot', DeepL translation)
- else: [t: "idők"] # (en: 'times', DeepL translation)
+ then: [T: "pont"] # (en: 'dot', DeepL translation)
+ else: [T: "szorozva"] # (en: 'times', DeepL translation)
- "√": # 0x221a
- test:
if: "$Verbosity!='Terse'"
- then: [t: "a"] # (en: 'the', DeepL translation)
- - t: "négyzetgyök" # (en: 'square root of', DeepL translation)
+ then: [T: "a(z)"] # (en: 'the', DeepL translation)
+ - T: "négyzetgyöke" # (en: 'square root of', DeepL translation)
- "∛": # 0x221b
- test:
if: "$Verbosity!='Terse'"
- then: [t: "a"] # (en: 'the', DeepL translation)
- - t: "kockagyökér" # (en: 'cube root of', DeepL translation)
+ then: [T: "a(z)"] # (en: 'the', DeepL translation)
+ - T: "köbgyöke" # (en: 'cube root of', DeepL translation)
- "∜": # 0x221c
- test:
if: "$Verbosity!='Terse'"
- then: [t: "a"] # (en: 'the', DeepL translation)
- - t: "negyedik gyöke" # (en: 'fourth root of', DeepL translation)
+ then: [T: "a(z)"] # (en: 'the', DeepL translation)
+ - T: "negyedik gyöke" # (en: 'fourth root of', DeepL translation)
- "∝": # 0x221d
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "arányos" # (en: 'proportional to', DeepL translation)
- - "∞": [t: "végtelen"] # 0x221e (en: 'infinity', DeepL translation)
- - "∟": [t: "derékszög"] # 0x221f (en: 'right angle', DeepL translation)
- - "∠": [t: "szög"] # 0x2220 (en: 'angle', DeepL translation)
- - "∡": [t: "mért szög"] # 0x2221 (en: 'measured angle', DeepL translation)
- - "∢": [t: "gömbszög"] # 0x2222 (en: 'spherical angle', DeepL translation)
- - "∣": [t: "osztja"] # 0x2223 (en: 'divides', DeepL translation)
- - "∤": [t: "nem osztja"] # 0x2224 (en: 'does not divide', DeepL translation)
- - "∧": [t: "és"] # 0x2227 (en: 'and', DeepL translation)
- - "∨": [t: "vagy"] # 0x2228 (en: 'or', DeepL translation)
- - "∩": [t: "kereszteződés"] # 0x2229 (en: 'intersection', DeepL translation)
- - "∪": [t: "unió"] # 0x222a (en: 'union', DeepL translation)
- - "∫": [t: "integrált"] # 0x222b (en: 'integral', DeepL translation)
- - "∬": [t: "kettős integrál"] # 0x222c (en: 'double integral', DeepL translation)
- - "∭": [t: "hármas integrál"] # 0x222d (en: 'triple integral', DeepL translation)
- - "∮": [t: "kontúrintegrál"] # 0x222e (en: 'contour integral', DeepL translation)
- - "∯": [t: "felszíni integrál"] # 0x222f (en: 'surface integral', DeepL translation)
- - "∰": [t: "térfogati integrál"] # 0x2230 (en: 'volume integral', DeepL translation)
- - "∱": [t: "az óramutató járásával megegyezően integrált"] # 0x2231 (en: 'clockwise integral', DeepL translation)
- - "∲": [t: "az óramutató járásával megegyező irányú kontúrintegrál"] # 0x2232 (en: 'clockwise contour integral', DeepL translation)
- - "∳": [t: "az óramutató járásával ellentétes irányú kontúrintegrál"] # 0x2233 (en: 'anticlockwise contour integral', DeepL translation)
- - "∴": [t: "ezért"] # 0x2234 (en: 'therefore', DeepL translation)
- - "∵": [t: "mert"] # 0x2235 (en: 'because', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "arányos" # (en: 'proportional to', DeepL translation)
+ - "∞": [T: "végtelen"] # 0x221e (en: 'infinity', DeepL translation)
+ - "∟": [T: "derékszög"] # 0x221f (en: 'right angle', DeepL translation)
+ - "∠": [T: "szög"] # 0x2220 (en: 'angle', DeepL translation)
+ - "∡": [T: "mért szög"] # 0x2221 (en: 'measured angle', DeepL translation)
+ - "∢": [T: "gömbszög"] # 0x2222 (en: 'spherical angle', DeepL translation)
+ - "∣": [T: "osztója"] # 0x2223 (en: 'divides', DeepL translation)
+ - "∤": [T: "nem osztója"] # 0x2224 (en: 'does not divide', DeepL translation)
+ - "∧": [T: "logikai és"] # 0x2227 (en: 'and', DeepL translation)
+ - "∨": [T: "logikai vagy"] # 0x2228 (en: 'or', DeepL translation)
+ - "∩": [T: "metszéspont"] # 0x2229 (en: 'intersection', DeepL translation)
+ - "∪": [T: "unió"] # 0x222a (en: 'union', DeepL translation)
+ - "∫": [T: "integrált"] # 0x222b (en: 'integral', DeepL translation)
+ - "∬": [T: "kettős integrál"] # 0x222c (en: 'double integral', DeepL translation)
+ - "∭": [T: "hármas integrál"] # 0x222d (en: 'triple integral', DeepL translation)
+ - "∮": [T: "kontúr integrál"] # 0x222e (en: 'contour integral', DeepL translation)
+ - "∯": [T: "felszíni integrál"] # 0x222f (en: 'surface integral', DeepL translation)
+ - "∰": [T: "térfogati integrál"] # 0x2230 (en: 'volume integral', DeepL translation)
+ - "∱": [T: "az óramutató járásával megegyező integrál"] # 0x2231 (en: 'clockwise integral', DeepL translation)
+ - "∲": [T: "az óramutató járásával megegyező irányú kontúr integrál"] # 0x2232 (en: 'clockwise contour integral', DeepL translation)
+ - "∳": [T: "az óramutató járásával ellentétes irányú kontúr integrál"] # 0x2233 (en: 'anticlockwise contour integral', DeepL translation)
+ - "∴": [T: "azért"] # 0x2234 (en: 'therefore', DeepL translation)
+ - "∵": [T: "mert"] # 0x2235 (en: 'because', DeepL translation)
- "∶": # 0x2236
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "to" # (DeepL translation)
- - "∷": [t: "mint"] # 0x2237 (en: 'as', DeepL translation)
- - "∸": [t: "pont mínusz"] # 0x2238 (en: 'dot minus', DeepL translation)
- - "∹": [t: "többlet van a többlethez képest"] # 0x2239 (en: 'has excess compared to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "arány" # (DeepL translation)
+ - "∷": [T: "mint"] # 0x2237 (en: 'as', DeepL translation)
+ - "∸": [T: "pontozott mínusz"] # 0x2238 (en: 'dot minus', DeepL translation)
+ - "∹": [T: "többletet tartalmaz ahhoz képest,"] # 0x2239 (en: 'has excess compared to', DeepL translation)
- "∺": # 0x223a
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "geometriailag arányos" # (en: 'geometrically proportional to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "geometriailag arányos" # (en: 'geometrically proportional to', DeepL translation)
- "∻": # 0x223b
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "homotetikus a" # (en: 'homothetic to', DeepL translation)
- - "∼": [t: "változik"] # 0x223c (en: 'varies with', DeepL translation)
- - "∽": [t: "fordított tilde"] # 0x223d (en: 'reversed tilde', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "homotetikus" # (en: 'homothetic to', DeepL translation)
+ - "∼": [T: "változik"] # 0x223c (en: 'varies with', DeepL translation)
+ - "∽": [T: "fordított tilde"] # 0x223d (en: 'reversed tilde', DeepL translation)
- "∾": # 0x223e
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "legpozitívabb" # (en: 'most positive', DeepL translation)
- - "∿": [t: "szinuszhullám"] # 0x223f (en: 'sine wave', DeepL translation)
- - "≀": [t: "koszorú termék"] # 0x2240 (en: 'wreath product', DeepL translation)
- - "≁": [t: "nem tilde"] # 0x2241 (en: 'not tilde', DeepL translation)
- - "≂": [t: "mínusz tilde"] # 0x2242 (en: 'minus tilde', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "legpozitívabb" # (en: 'most positive', DeepL translation)
+ - "∿": [T: "szinuszhullám"] # 0x223f (en: 'sine wave', DeepL translation)
+ - "≀": [T: "koszorú szorzat"] # 0x2240 (en: 'wreath product', DeepL translation)
+ - "≁": [T: "nem tilde"] # 0x2241 (en: 'not tilde', DeepL translation)
+ - "≂": [T: "mínusz tilde"] # 0x2242 (en: 'minus tilde', DeepL translation)
- "≃": # 0x2243
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "aszimptotikusan egyenlő" # (en: 'asymptotically equal to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "aszimptotikusan egyenlő" # (en: 'asymptotically equal to', DeepL translation)
- "≄": # 0x2244
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nem aszimptotikusan egyenlő" # (en: 'not asymptotically equal to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nem aszimptotikusan egyenlő" # (en: 'not asymptotically equal to', DeepL translation)
- "≅": # 0x2245
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "kongruens a" # (en: 'congruent to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nagyjából egyenlő" # (en: 'congruent to', DeepL translation)
- "≆": # 0x2246
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "megközelítőleg, de valójában nem egyenlő" # (en: 'approximately but not actually equal to', DeepL translation)
+ then: [T: "az"] # (en: 'is', DeepL translation)
+ - T: "megközelítőleg, de valójában nem egyenlő" # (en: 'approximately but not actually equal to', DeepL translation)
- "≇": # 0x2247
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nem kongruens" # (en: 'not congruent to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "sem megközelítőleg, sem ténylegesen nem egyenlő" # (en: 'not congruent to', DeepL translation)
- "≈": # 0x2248
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "megközelítőleg egyenlő" # (en: 'approximately equal to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "megközelítőleg egyenlő" # (en: 'approximately equal to', DeepL translation)
- "≉": # 0x2249
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nem megközelítőleg egyenlő" # (en: 'not approximately equal to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "megközelítőleg sem egyenlő" # (en: 'not approximately equal to', DeepL translation)
- "≊": # 0x224a
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "megközelítőleg egyenlő vagy egyenlő" # (en: 'approximately equal or equal to', DeepL translation)
- - "≋": [t: "hármas tilde"] # 0x224b (en: 'triple tilde', DeepL translation)
- - "≌": [t: "mind egyenlőek"] # 0x224c (en: 'are all equal to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "megközelítőleg egyenlő vagy egyenlő" # (en: 'approximately equal or equal to', DeepL translation)
+ - "≋": [T: "hármas tilde"] # 0x224b (en: 'triple tilde', DeepL translation)
+ - "≌": [T: "mind egyenlőek"] # 0x224c (en: 'are all equal to', DeepL translation)
- "≍": # 0x224d
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "egyenértékű" # (en: 'equivalent to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "egyenértékű" # (en: 'equivalent to', DeepL translation)
- "≎": # 0x224e
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "geometriailag egyenértékű" # (en: 'geometrically equivalent to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "geometriailag egyenértékű" # (en: 'geometrically equivalent to', DeepL translation)
- "≏": # 0x224f
- test:
if: "$Verbosity!='Terse'"
- then: [t: "a"] # (en: 'the', DeepL translation)
- - t: "különbség" # (en: 'difference between', DeepL translation)
- - "≐": [t: "közelít a határhoz"] # 0x2250 (en: 'approaches the limit', DeepL translation)
+ then: [T: "a(z)"] # (en: 'the', DeepL translation)
+ - T: "közötti különbség" # (en: 'difference between', DeepL translation)
+ - "≐": [T: "megközelíti a határértéket"] # 0x2250 (en: 'approaches the limit', DeepL translation)
- "≑": # 0x2251
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "geometriailag egyenlő" # (en: 'geometrically equal to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "geometriailag egyenlő" # (en: 'geometrically equal to', DeepL translation)
- "≒": # 0x2252
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "megközelítőleg egyenlő vagy a képe" # (en: 'approximately equal to or the image of', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "a kép megközelítőleg egyenlő" # (en: 'approximately equal to or the image of', DeepL translation)
- "≓": # 0x2253
- test:
if: "$Verbosity!='Terse'"
- then: [t: "a"] # (en: 'is the', DeepL translation)
- - t: "képe vagy megközelítőleg egyenlő" # (en: 'image of or approximately equal to', DeepL translation)
- - "≔": [t: "kettőspont egyenlő"] # 0x2254 (en: 'colon equals', DeepL translation)
- - "≕": [t: "egyenlőségjel kettőspont"] # 0x2255 (en: 'equals colon', DeepL translation)
- - "≖": [t: "gyűrűvel egyenlő"] # 0x2256 (en: 'ring in equal to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is the', DeepL translation)
+ - T: "kép nagyjából azonos" # (en: 'image of or approximately equal to', DeepL translation)
+ - "≔": [T: "kettőspont egyenlő"] # 0x2254 (en: 'colon equals', DeepL translation)
+ - "≕": [T: "egyenlő kettőspont"] # 0x2255 (en: 'equals colon', DeepL translation)
+ - "≖": [T: "gyűrű egyenlő"] # 0x2256 (en: 'ring in equal to', DeepL translation)
- "≗": # 0x2257
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "megközelítőleg egyenlő" # (en: 'approximately equal to', DeepL translation)
- - "≘": [t: "megfelel"] # 0x2258 (en: 'corresponds to', DeepL translation)
- - "≙": [t: "becslések"] # 0x2259 (en: 'estimates', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "megközelítőleg egyenlő" # (en: 'approximately equal to', DeepL translation)
+ - "≘": [T: "megfelel"] # 0x2258 (en: 'corresponds to', DeepL translation)
+ - "≙": [T: "becslés"] # 0x2259 (en: 'estimates', DeepL translation)
- "≚": # 0x225a
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "egyenlőségjel" # (en: 'equiangular to', DeepL translation)
- - "≛": [t: "csillag egyenlő"] # 0x225b (en: 'star equals', DeepL translation)
- - "≜": [t: "delta egyenlő"] # 0x225c (en: 'delta equals', DeepL translation)
- - "≝": [t: "a következőképpen van definiálva"] # 0x225d (en: 'is defined to be', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "egyenlő szögű" # (en: 'equiangular to', DeepL translation)
+ - "≛": [T: "csillag egyenlő"] # 0x225b (en: 'star equals', DeepL translation)
+ - "≜": [T: "delta egyenlő"] # 0x225c (en: 'delta equals', DeepL translation)
+ - "≝": [T: "a következőképpen van definiálva"] # 0x225d (en: 'is defined to be', DeepL translation)
- "≞": # 0x225e
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "mért" # (en: 'measured by', DeepL translation)
- - "≟": [t: "ismeretlen kapcsolatban áll"] # 0x225f (en: 'has an unknown relationship with', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "mért" # (en: 'measured by', DeepL translation)
+ - "≟": [T: "ismeretlen kapcsolatban áll"] # 0x225f (en: 'has an unknown relationship with', DeepL translation)
- "≠": # 0x2260
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nem egyenlő" # (en: 'not equal to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nem egyenlő" # (en: 'not equal to', DeepL translation)
- "≡": # 0x2261
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "azonos" # (en: 'identical to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "azonos" # (en: 'identical to', DeepL translation)
- "≢": # 0x2262
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nem azonos" # (en: 'not identical to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nem azonos" # (en: 'not identical to', DeepL translation)
- "≣": # 0x2263
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "szigorúan egyenértékű" # (en: 'strictly equivalent to', DeepL translation)
- - "≦": [t: "kisebb mint egyenlő felett egyenlő"] # 0x2266 (en: 'less than over equal to', DeepL translation)
- - "≧": [t: "nagyobb, mint egyenlő"] # 0x2267 (en: 'greater than over equal to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "szigorúan egyenértékű" # (en: 'strictly equivalent to', DeepL translation)
+ - "≦": [T: "kisebb az egyenlőségjel fölött"] # 0x2266 (en: 'less than over equal to', DeepL translation)
+ - "≧": [T: "nagyobb, mint egyenlő"] # 0x2267 (en: 'greater than over equal to', DeepL translation)
- "≨": # 0x2268
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "kisebb, mint, de nem egyenlő" # (en: 'less than but not equal to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "kisebb, de nem egyenlő" # (en: 'less than but not equal to', DeepL translation)
- "≩": # 0x2269
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nagyobb, mint, de nem egyenlő" # (en: 'greater than but not equal to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nagyobb, de nem egyenlő" # (en: 'greater than but not equal to', DeepL translation)
- "≪": # 0x226a
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "sokkal kisebb, mint" # (en: 'much less than', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "sokkal kisebb, mint" # (en: 'much less than', DeepL translation)
- "≫": # 0x226b
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "sokkal nagyobb, mint" # (en: 'much greater than', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "sokkal nagyobb, mint" # (en: 'much greater than', DeepL translation)
- "≬": # 0x226c
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "között" # (en: 'between', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "között" # (en: 'between', DeepL translation)
- "≭": # 0x226d
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nem egyenértékű" # (en: 'not equivalent to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nem egyenértékű" # (en: 'not equivalent to', DeepL translation)
- "≮": # 0x226e
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nem kisebb, mint" # (en: 'not less than', DeepL translation)
+ then: [T: "az"] # (en: 'is', DeepL translation)
+ - T: "nem kisebb, mint" # (en: 'not less than', DeepL translation)
- "≯": # 0x226f
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nem nagyobb, mint" # (en: 'not greater than', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nem nagyobb, mint" # (en: 'not greater than', DeepL translation)
- "≰": # 0x2270
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "sem kisebb, mint vagy egyenlő" # (en: 'neither less than nor equal to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "se nem kisebb, se nem egyenlő" # (en: 'neither less than nor equal to', DeepL translation)
- "≱": # 0x2271
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "sem nagyobb, sem egyenlő" # (en: 'neither greater than nor equal to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "se nem nagyobb, se nem egyenlő" # (en: 'neither greater than nor equal to', DeepL translation)
- "≲": # 0x2272
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "kevesebb, mint vagy azzal egyenértékű" # (en: 'less than or equivalent to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "kisebb, vagy azzal egyenértékű" # (en: 'less than or equivalent to', DeepL translation)
- "≳": # 0x2273
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nagyobb vagy egyenlő, mint" # (en: 'greater than or equivalent to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nagyobb, vagy egyenértékű" # (en: 'greater than or equivalent to', DeepL translation)
- "≴": # 0x2274
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "sem kisebb, sem egyenlő" # (en: 'neither less than nor equivalent to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "sem kisebb, sem egyenlő" # (en: 'neither less than nor equivalent to', DeepL translation)
- "≵": # 0x2275
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "se nem nagyobb, se nem egyenlő" # (en: 'neither greater than nor equivalent to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "se nem nagyobb, se nem egyenlő" # (en: 'neither greater than nor equivalent to', DeepL translation)
- "≶": # 0x2276
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "kisebb vagy nagyobb, mint" # (en: 'less than or greater than', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "kisebb vagy nagyobb, mint" # (en: 'less than or greater than', DeepL translation)
- "≷": # 0x2277
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nagyobb, mint vagy kisebb, mint" # (en: 'greater than or less than', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nagyobb vagy kisebb, mint" # (en: 'greater than or less than', DeepL translation)
- "≸": # 0x2278
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "sem kisebb, sem nagyobb, mint" # (en: 'neither less than nor greater than', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "sem kisebb, sem nagyobb, mint" # (en: 'neither less than nor greater than', DeepL translation)
- "≹": # 0x2279
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "se nem nagyobb, se nem kisebb" # (en: 'neither greater than nor less than', DeepL translation)
- - "≺": [t: "megelőzi"] # 0x227a (en: 'precedes', DeepL translation)
- - "≻": [t: "sikerül"] # 0x227b (en: 'succeeds', DeepL translation)
- - "≼": [t: "megelőzi vagy egyenlő"] # 0x227c (en: 'precedes or is equal to', DeepL translation)
- - "≽": [t: "sikerül vagy egyenlő"] # 0x227d (en: 'succeeds or is equal to', DeepL translation)
- - "≾": [t: "megelőzi vagy egyenértékű"] # 0x227e (en: 'precedes or is equivalent to', DeepL translation)
- - "≿": [t: "sikerül vagy egyenértékű"] # 0x227f (en: 'succeeds or is equivalent to', DeepL translation)
- - "⊀": [t: "nem előzi meg"] # 0x2280 (en: 'does not precede', DeepL translation)
- - "⊁": [t: "nem sikerül"] # 0x2281 (en: 'does not succeed', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "se nem nagyobb, se nem kisebb" # (en: 'neither greater than nor less than', DeepL translation)
+ - "≺": [T: "megelőzi"] # 0x227a (en: 'precedes', DeepL translation)
+ - "≻": [T: "követi"] # 0x227b (en: 'succeeds', DeepL translation)
+ - "≼": [T: "megelőzi vagy egyenlő"] # 0x227c (en: 'precedes or is equal to', DeepL translation)
+ - "≽": [T: "követi vagy egyenlő"] # 0x227d (en: 'succeeds or is equal to', DeepL translation)
+ - "≾": [T: "megelőzi vagy egyenértékű"] # 0x227e (en: 'precedes or is equivalent to', DeepL translation)
+ - "≿": [T: "követi vagy egyenértékű"] # 0x227f (en: 'succeeds or is equivalent to', DeepL translation)
+ - "⊀": [T: "nem előzi meg"] # 0x2280 (en: 'does not precede', DeepL translation)
+ - "⊁": [T: "nem követi"] # 0x2281 (en: 'does not succeed', DeepL translation)
- "⊂": # 0x2282
- test:
if: "$Verbosity!='Terse'"
- then: [t: "egy"] # (en: 'is a', DeepL translation)
- - t: "részhalmaza" # (en: 'subset of', DeepL translation)
+ then: [T: "egy"] # (en: 'is a', DeepL translation)
+ - T: "részhalmaza ennek:" # (en: 'subset of', DeepL translation)
- "⊃": # 0x2283
- test:
if: "$Verbosity!='Terse'"
- then: [t: "egy"] # (en: 'is a', DeepL translation)
- - t: "szuperhalmaza" # (en: 'superset of', DeepL translation)
+ then: [T: "egy"] # (en: 'is a', DeepL translation)
+ - T: "szuperhalmaza" # (en: 'superset of', DeepL translation)
- "⊄": # 0x2284
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nem részhalmaza" # (en: 'not a subset of', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nem részhalmaza" # (en: 'not a subset of', DeepL translation)
- "⊅": # 0x2285
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "not a superset of" # (DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nem egy szuperhalmaza ennek:" # (DeepL translation)
- "⊆": # 0x2286
- test:
if: "$Verbosity!='Terse'"
- then: [t: "egy"] # (en: 'is a', DeepL translation)
- - t: "részhalmaza vagy egyenlő" # (en: 'subset of or equal to', DeepL translation)
+ then: [T: "egy"] # (en: 'is a', DeepL translation)
+ - T: "részhalmaza vagy egyenlő" # (en: 'subset of or equal to', DeepL translation)
- "⊇": # 0x2287
- test:
if: "$Verbosity!='Terse'"
- then: [t: "egy"] # (en: 'is a', DeepL translation)
- - t: "szuperhalmaza vagy egyenlő" # (en: 'superset of or equal to', DeepL translation)
+ then: [T: "egy"] # (en: 'is a', DeepL translation)
+ - T: "szuperhalmaza vagy egyenlő" # (en: 'superset of or equal to', DeepL translation)
- "⊈": # 0x2288
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "se nem részhalmaza, se nem egyenlő" # (en: 'neither a subset of nor equal to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "se nem részhalmaza, se nem egyenlő" # (en: 'neither a subset of nor equal to', DeepL translation)
- "⊉": # 0x2289
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "sem nem szuperhalmaza, sem nem egyenlő" # (en: 'neither a superset of nor equal to', DeepL translation)
- - "⊊": [t: "részhalmaza a nem egyenlő"] # 0x228a (en: 'subset of with not equal to', DeepL translation)
- - "⊋": [t: "superset of with nem egyenlő"] # 0x228b (en: 'superset of with not equal to', DeepL translation)
- - "⊌": [t: "multiset"] # 0x228c (DeepL translation)
- - "⊍": [t: "multiset szorzás"] # 0x228d (en: 'multiset multiplication', DeepL translation)
- - "⊎": [t: "multiset unió"] # 0x228e (en: 'multiset union', DeepL translation)
- - "⊏": [t: "négyzet képe"] # 0x228f (en: 'square image of', DeepL translation)
- - "⊐": [t: "négyzet eredeti"] # 0x2290 (en: 'square original of', DeepL translation)
- - "⊑": [t: "négyzet képe vagy azzal egyenlő"] # 0x2291 (en: 'square image of or equal to', DeepL translation)
- - "⊒": [t: "négyzet eredeti vagy egyenlő"] # 0x2292 (en: 'square original of or equal to', DeepL translation)
- - "⊓": [t: "négyzet nagybetűs"] # 0x2293 (en: 'square cap', DeepL translation)
- - "⊔": [t: "négyzetes csésze"] # 0x2294 (en: 'square cup', DeepL translation)
- - "⊕": [t: "kör alakú plusz"] # 0x2295 (en: 'circled plus', DeepL translation)
- - "⊖": [t: "bekarikázott mínusz"] # 0x2296 (en: 'circled minus', DeepL translation)
- - "⊗": [t: "bekarikázott idők"] # 0x2297 (en: 'circled times', DeepL translation)
- - "⊘": [t: "bekarikázott írásjel"] # 0x2298 (en: 'circled slash', DeepL translation)
- - "⊙": [t: "bekarikázott pontoperátor"] # 0x2299 (en: 'circled dot operator', DeepL translation)
- - "⊚": [t: "bekarikázott gyűrű"] # 0x229a (en: 'circled ring', DeepL translation)
- - "⊛": [t: "bekarikázott csillag"] # 0x229b (en: 'circled asterisk', DeepL translation)
- - "⊜": [t: "bekarikázott egyenlőségjel"] # 0x229c (en: 'circled equals', DeepL translation)
- - "⊝": [t: "bekarikázott kötőjel"] # 0x229d (en: 'circled dash', DeepL translation)
- - "⊞": [t: "négyzet plusz"] # 0x229e (en: 'squared plus', DeepL translation)
- - "⊟": [t: "négyzet mínusz"] # 0x229f (en: 'squared minus', DeepL translation)
- - "⊠": [t: "négyzetes idő"] # 0x22a0 (en: 'squared times', DeepL translation)
- - "⊡": [t: "négyzetes pontoperátor"] # 0x22a1 (en: 'squared dot operator', DeepL translation)
- - "⊢": [t: "bizonyítja"] # 0x22a2 (en: 'proves', DeepL translation)
- - "⊣": [t: "nem enged"] # 0x22a3 (en: 'does not yield', DeepL translation)
- - "⊤": [t: "felső"] # 0x22a4 (en: 'top', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nem szuperhalmaza és nem egyenlő" # (en: 'neither a superset of nor equal to', DeepL translation)
+ - "⊊": [T: "részhalmaza, nem egyenlő jellel"] # 0x228a (en: 'subset of with not equal to', DeepL translation)
+ - "⊋": [T: "szuperhalmaza, nem egyenlő jellel"] # 0x228b (en: 'superset of with not equal to', DeepL translation)
+ - "⊌": [T: "többszörös halmaz"] # 0x228c (DeepL translation)
+ - "⊍": [T: "többszörös szorzás"] # 0x228d (en: 'multiset multiplication', DeepL translation)
+ - "⊎": [T: "többszörös unió"] # 0x228e (en: 'multiset union', DeepL translation)
+ - "⊏": [T: "négyzet képe"] # 0x228f (en: 'square image of', DeepL translation)
+ - "⊐": [T: "négyzet eredetije"] # 0x2290 (en: 'square original of', DeepL translation)
+ - "⊑": [T: "négyzet képe vagy egyenlő ezzel:"] # 0x2291 (en: 'square image of or equal to', DeepL translation)
+ - "⊒": [T: "négyzet eredetije vagy egyenlő ezzel:"] # 0x2292 (en: 'square original of or equal to', DeepL translation)
+ - "⊓": [T: "négyzet alakú sapka"] # 0x2293 (en: 'square cap', DeepL translation)
+ - "⊔": [T: "négyzet alakú csésze"] # 0x2294 (en: 'square cup', DeepL translation)
+ - "⊕": [T: "bekarikázott plusz"] # 0x2295 (en: 'circled plus', DeepL translation)
+ - "⊖": [T: "bekarikázott mínusz"] # 0x2296 (en: 'circled minus', DeepL translation)
+ - "⊗": [T: "bekarikázott szorzás"] # 0x2297 (en: 'circled times', DeepL translation)
+ - "⊘": [T: "bekarikázott osztás"] # 0x2298 (en: 'circled slash', DeepL translation)
+ - "⊙": [T: "bekarikázott pontoperátor"] # 0x2299 (en: 'circled dot operator', DeepL translation)
+ - "⊚": [T: "bekarikázott gyűrű operátor"] # 0x229a (en: 'circled ring', DeepL translation)
+ - "⊛": [T: "bekarikázott csillag operátor"] # 0x229b (en: 'circled asterisk', DeepL translation)
+ - "⊜": [T: "bekarikázott egyenlőségjel"] # 0x229c (en: 'circled equals', DeepL translation)
+ - "⊝": [T: "bekarikázott kötőjel"] # 0x229d (en: 'circled dash', DeepL translation)
+ - "⊞": [T: "pluszjel négyzetben"] # 0x229e (en: 'squared plus', DeepL translation)
+ - "⊟": [T: "mínuszjel négyzetben"] # 0x229f (en: 'squared minus', DeepL translation)
+ - "⊠": [T: "szorzásjel négyzetben"] # 0x22a0 (en: 'squared times', DeepL translation)
+ - "⊡": [T: "négyzetes pont operátor"] # 0x22a1 (en: 'squared dot operator', DeepL translation)
+ - "⊢": [T: "bizonyítja"] # 0x22a2 (en: 'proves', DeepL translation)
+ - "⊣": [T: "nem enged"] # 0x22a3 (en: 'does not yield', DeepL translation)
+ - "⊤": [T: "felső"] # 0x22a4 (en: 'top', DeepL translation)
- "⊥": # 0x22a5
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "alul" # (en: 'bottom', DeepL translation)
- - "⊦": [t: "redukálódik"] # 0x22a6 (en: 'reduces to', DeepL translation)
- - "⊧": [t: "modellek"] # 0x22a7 (en: 'models', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "alul" # (en: 'bottom', DeepL translation)
+ - "⊦": [T: "redukálódik"] # 0x22a6 (en: 'reduces to', DeepL translation)
+ - "⊧": [T: "modellezi"] # 0x22a7 (en: 'models', DeepL translation)
- "⊨": # 0x22a8
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "igaz" # (en: 'true', DeepL translation)
- - "⊩": [t: "erők"] # 0x22a9 (en: 'forces', DeepL translation)
- - "⊪": [t: "háromszoros függőleges sáv jobbra forduló"] # 0x22aa (en: 'triple vertical bar right turnstile', DeepL translation)
- - "⊫": [t: "dupla függőleges sáv dupla jobbra forduló csavarkulcs"] # 0x22ab (en: 'double vertical bar double right turnstile', DeepL translation)
- - "⊬": [t: "nem bizonyítja"] # 0x22ac (en: 'does not prove', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "igaz" # (en: 'true', DeepL translation)
+ - "⊩": [T: "kényszeríti"] # 0x22a9 (en: 'forces', DeepL translation)
+ - "⊪": [T: "háromszoros függőleges vonal jobboldali forgókereszttel"] # 0x22aa (en: 'triple vertical bar right turnstile', DeepL translation)
+ - "⊫": [T: "kettős függőlegesvonal dupla jobboldali forgókereszttel"] # 0x22ab (en: 'double vertical bar double right turnstile', DeepL translation)
+ - "⊬": [T: "nem bizonyítja"] # 0x22ac (en: 'does not prove', DeepL translation)
- "⊭": # 0x22ad
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nem igaz" # (en: 'not true', DeepL translation)
- - "⊮": [t: "nem kényszerít"] # 0x22ae (en: 'does not force', DeepL translation)
- - "⊯": [t: "negált kettős függőleges sáv kettős jobbra forduló"] # 0x22af (en: 'negated double vertical bar double right turnstile', DeepL translation)
- - "⊰": [t: "előzi meg a reláció alatt"] # 0x22b0 (en: 'precedes under relation', DeepL translation)
- - "⊱": [t: "sikerül reláció alatt"] # 0x22b1 (en: 'succeeds under relation', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nem igaz" # (en: 'not true', DeepL translation)
+ - "⊮": [T: "nem kényszeríti"] # 0x22ae (en: 'does not force', DeepL translation)
+ - "⊯": [T: "negált kettős függőleges vonal dupla jobboldali forgókereszttel"] # 0x22af (en: 'negated double vertical bar double right turnstile', DeepL translation)
+ - "⊰": [T: "megelőzi az alatta lévő relációt"] # 0x22b0 (en: 'precedes under relation', DeepL translation)
+ - "⊱": [T: "követi az alatta lévő relációt"] # 0x22b1 (en: 'succeeds under relation', DeepL translation)
- "⊲": # 0x22b2
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "egy normális alcsoportja" # (en: 'a normal subgroup of', DeepL translation)
- - "⊳": [t: "tartalmaz, mint normál alcsoport"] # 0x22b3 (en: 'contains as a normal subgroup', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "egy normális alcsoportja" # (en: 'a normal subgroup of', DeepL translation)
+ - "⊳": [T: "normál alcsoportként tartalmazza"] # 0x22b3 (en: 'contains as a normal subgroup', DeepL translation)
- "⊴": # 0x22b4
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "normális alcsoportja vagy egyenlő" # (en: 'a normal subgroup of or equal to', DeepL translation)
- - "⊵": [t: "tartalmaz, mint normál alcsoport vagy egyenlő"] # 0x22b5 (en: 'contains as a normal subgroup or equal to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "normál alcsoportja vagy egyenlő" # (en: 'a normal subgroup of or equal to', DeepL translation)
+ - "⊵": [T: "normál alcsoportként tartalmazza vagy egyenlő"] # 0x22b5 (en: 'contains as a normal subgroup or equal to', DeepL translation)
- "⊶": # 0x22b6
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "az eredeti" # (en: 'the original of', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "az eredeti" # (en: 'the original of', DeepL translation)
- "⊷": # 0x22b7
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "egy kép" # (en: 'an image of', DeepL translation)
- - "⊸": [t: "multitérkép"] # 0x22b8 (en: 'multimap', DeepL translation)
- - "⊹": [t: "hermitikus konjugált mátrix"] # 0x22b9 (en: 'hermitian conjugate matrix', DeepL translation)
- - "⊺": [t: "interkaláció"] # 0x22ba (en: 'intercalate', DeepL translation)
- - "⊻": [t: "xor"] # 0x22bb (DeepL translation)
- - "⊼": [t: "nand"] # 0x22bc (DeepL translation)
- - "⊽": [t: "sem"] # 0x22bd (en: 'nor', DeepL translation)
- - "⊾": [t: "derékszög ívvel"] # 0x22be (en: 'right angle with arc', DeepL translation)
- - "⊿": [t: "jobb oldali háromszög"] # 0x22bf (en: 'right triangle', DeepL translation)
- - "⋀": [t: "logikai és"] # 0x22c0 (en: 'logical and', DeepL translation)
- - "⋁": [t: "logikai vagy"] # 0x22c1 (en: 'logical or', DeepL translation)
- - "⋂": [t: "kereszteződés"] # 0x22c2 (en: 'intersection', DeepL translation)
- - "⋃": [t: "unió"] # 0x22c3 (en: 'union', DeepL translation)
- - "⋄": [t: "rombuszos operátor"] # 0x22c4 (en: 'diamond operator', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "egy kép" # (en: 'an image of', DeepL translation)
+ - "⊸": [T: "többértékű leképezés"] # 0x22b8 (en: 'multimap', DeepL translation)
+ - "⊹": [T: "hermite-féle konjugált mátrix"] # 0x22b9 (en: 'hermitian conjugate matrix', DeepL translation)
+ - "⊺": [T: "interkaláció"] # 0x22ba (en: 'intercalate', DeepL translation)
+ - "⊻": [T: "xor"] # 0x22bb (DeepL translation)
+ - "⊼": [T: "nand"] # 0x22bc (DeepL translation)
+ - "⊽": [T: "nor"] # 0x22bd (en: 'nor', DeepL translation)
+ - "⊾": [T: "derékszög ívvel"] # 0x22be (en: 'right angle with arc', DeepL translation)
+ - "⊿": [T: "jobb oldali háromszög"] # 0x22bf (en: 'right triangle', DeepL translation)
+ - "⋀": [T: "logikai és"] # 0x22c0 (en: 'logical and', DeepL translation)
+ - "⋁": [T: "logikai vagy"] # 0x22c1 (en: 'logical or', DeepL translation)
+ - "⋂": [T: "metszet"] # 0x22c2 (en: 'intersection', DeepL translation)
+ - "⋃": [T: "unió"] # 0x22c3 (en: 'union', DeepL translation)
+ - "⋄": [T: "gyémánt operátor"] # 0x22c4 (en: 'diamond operator', DeepL translation)
- "⋅": # 0x22c5
- test:
if: "@data-chem-formula-op"
@@ -1189,284 +1189,284 @@
else: [T: "szorozva"] # (en: 'times', DeepL translation)
- "⋆": [T: "szorozva"] # 0x22c6 (en: 'times', DeepL translation)
- - "⋇": [t: "osztás idő"] # 0x22c7 (en: 'division times', DeepL translation)
- - "⋈": [t: "masni"] # 0x22c8 (en: 'bowtie', DeepL translation)
+ - "⋇": [T: "osztás szorzás"] # 0x22c7 (en: 'division times', DeepL translation)
+ - "⋈": [T: "természetes összekapcsolás"] # 0x22c8 (en: 'bowtie', DeepL translation)
- "⋉": # 0x22c9
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "bal oldali normális tényező félközvetett szorzata" # (en: 'the left normal factor semidirect product of', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "bal oldali normális faktor szemidirekt szorzata" # (en: 'the left normal factor semidirect product of', DeepL translation)
- "⋊": # 0x22ca
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "a jobb oldali normális tényező félközvetett szorzata" # (en: 'the right normal factor semidirect product of', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "a jobb oldali normális tényező félközvetett szorzata" # (en: 'the right normal factor semidirect product of', DeepL translation)
- "⋋": # 0x22cb
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "bal oldali félközvetett szorzata" # (en: 'the left semidirect product of', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "bal oldali féldirekt szorzat" # (en: 'the left semidirect product of', DeepL translation)
- "⋌": # 0x22cc
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "a jobb oldali félközvetett szorzata" # (en: 'the right semidirect product of', DeepL translation)
- - "⋍": [t: "fordított tilde egyenlő"] # 0x22cd (en: 'reversed tilde equals', DeepL translation)
- - "⋎": [t: "görbe logikai vagy"] # 0x22ce (en: 'curly logical or', DeepL translation)
- - "⋏": [t: "görbe logikai és"] # 0x22cf (en: 'curly logical and', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "a jobb oldali féldirekt szorzata" # (en: 'the right semidirect product of', DeepL translation)
+ - "⋍": [T: "fordított tilde egyenlő"] # 0x22cd (en: 'reversed tilde equals', DeepL translation)
+ - "⋎": [T: "ívelt logikai vagy"] # 0x22ce (en: 'curly logical or', DeepL translation)
+ - "⋏": [T: "ívelt logikai és"] # 0x22cf (en: 'curly logical and', DeepL translation)
- "⋐": # 0x22d0
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "kettős részhalmaza" # (en: 'a double subset of', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "kettős részhalmaza ennek:" # (en: 'a double subset of', DeepL translation)
- "⋑": # 0x22d1
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "egy kettős szuperhalmaza" # (en: 'a double superset of', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "egy kettős szuperhalmaza ennek:" # (en: 'a double superset of', DeepL translation)
- "⋒": # 0x22d2
- test:
if: "$Verbosity!='Terse'"
- then: [t: "a"] # (en: 'the', DeepL translation)
- - t: "kettős metszéspontja" # (en: 'double intersection of', DeepL translation)
+ then: [T: "a(z)"] # (en: 'the', DeepL translation)
+ - T: "kettős metszéspontja ennek:" # (en: 'double intersection of', DeepL translation)
- "⋓": # 0x22d3
- test:
if: "$Verbosity!='Terse'"
- then: [t: "a"] # (en: 'the', DeepL translation)
- - t: "kettős kötés" # (en: 'double union of', DeepL translation)
+ then: [T: "a(z)"] # (en: 'the', DeepL translation)
+ - T: "dupla uniója ennek:" # (en: 'double union of', DeepL translation)
- "⋔": # 0x22d4
- test:
if: "$Verbosity!='Terse'"
- then: [t: "a"] # (en: 'the', DeepL translation)
- - t: "megfelelő metszéspontja" # (en: 'proper intersection of', DeepL translation)
+ then: [T: "a(z)"] # (en: 'the', DeepL translation)
+ - T: "megfelelő metszéspontja" # (en: 'proper intersection of', DeepL translation)
- "⋕": # 0x22d5
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "egyenlő és párhuzamos" # (en: 'equal to and parallel to', DeepL translation)
- - "⋖": [t: "kisebb, mint pontokkal"] # 0x22d6 (en: 'less than with dot', DeepL translation)
- - "⋗": [t: "nagyobb, mint ponttal"] # 0x22d7 (en: 'greater than with dot', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "egyenlő és párhuzamos ezzel:" # (en: 'equal to and parallel to', DeepL translation)
+ - "⋖": [T: "kisebb, mint ponttal"] # 0x22d6 (en: 'less than with dot', DeepL translation)
+ - "⋗": [T: "nagyobb, mint ponttal"] # 0x22d7 (en: 'greater than with dot', DeepL translation)
- "⋘": # 0x22d8
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nagyon sokkal kisebb, mint" # (en: 'very much less than', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nagyon sokkal kisebb, mint" # (en: 'very much less than', DeepL translation)
- "⋙": # 0x22d9
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nagyon sokkal nagyobb, mint" # (en: 'very much greater than', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nagyon sokkal nagyobb, mint" # (en: 'very much greater than', DeepL translation)
- "⋚": # 0x22da
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "kisebb, mint egyenlő vagy nagyobb, mint" # (en: 'less than equal to or greater than', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "kisebb, mint egyenlő vagy nagyobb, mint" # (en: 'less than equal to or greater than', DeepL translation)
- "⋛": # 0x22db
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nagyobb, mint egyenlő vagy kisebb, mint" # (en: 'greater than equal to or less than', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nagyobb, mint egyenlő vagy kisebb, mint" # (en: 'greater than equal to or less than', DeepL translation)
- "⋜": # 0x22dc
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "egyenlő vagy kisebb, mint" # (en: 'equal to or less than', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "egyenlő vagy kisebb, mint" # (en: 'equal to or less than', DeepL translation)
- "⋝": # 0x22dd
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "egyenlő vagy nagyobb, mint" # (en: 'equal to or greater than', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "egyenlő vagy nagyobb, mint" # (en: 'equal to or greater than', DeepL translation)
- "⋞": # 0x22de
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "egyenlő vagy megelőzi" # (en: 'equal to or precedes', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "egyenlő vagy megelőzi" # (en: 'equal to or precedes', DeepL translation)
- "⋟": # 0x22df
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "egyenlő vagy sikerül" # (en: 'equal to or succeeds', DeepL translation)
- - "⋠": [t: "nem előzi meg és nem egyenlő"] # 0x22e0 (en: 'does not precede nor is equal to', DeepL translation)
- - "⋡": [t: "nem sikerül sem nem egyenlő"] # 0x22e1 (en: 'does not succeed nor is equal to', DeepL translation)
- - "⋢": [t: "nem négyzetképe vagy egyenlő"] # 0x22e2 (en: 'not square image of or equal to', DeepL translation)
- - "⋣": [t: "nem négyzet eredeti vagy egyenlő"] # 0x22e3 (en: 'not square original of or equal to', DeepL translation)
- - "⋤": [t: "négyzetes képe vagy nem egyenlő"] # 0x22e4 (en: 'square image of or not equal to', DeepL translation)
- - "⋥": [t: "négyzet eredeti vagy nem egyenlő"] # 0x22e5 (en: 'square original of or not equal to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "egyenlő, vagy követi" # (en: 'equal to or succeeds', DeepL translation)
+ - "⋠": [T: "nem előzi meg és nem egyenlő"] # 0x22e0 (en: 'does not precede nor is equal to', DeepL translation)
+ - "⋡": [T: "nem követi és nem egyenlő"] # 0x22e1 (en: 'does not succeed nor is equal to', DeepL translation)
+ - "⋢": [T: "nem négyzetképe vagy egyenlő"] # 0x22e2 (en: 'not square image of or equal to', DeepL translation)
+ - "⋣": [T: "nem négyzetes eredetije vagy egyenlő"] # 0x22e3 (en: 'not square original of or equal to', DeepL translation)
+ - "⋤": [T: "négyzetes képe vagy nem egyenlő"] # 0x22e4 (en: 'square image of or not equal to', DeepL translation)
+ - "⋥": [T: "négyzetes eredetije vagy nem egyenlő"] # 0x22e5 (en: 'square original of or not equal to', DeepL translation)
- "⋦": # 0x22e6
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "kevesebb, mint, de nem egyenlő" # (en: 'less than but not equivalent to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "kevesebb, mint, de nem egyenlő" # (en: 'less than but not equivalent to', DeepL translation)
- "⋧": # 0x22e7
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nagyobb, mint, de nem egyenértékű" # (en: 'greater than but not equivalent to', DeepL translation)
- - "⋨": [t: "megelőzi, de nem egyenértékű vele"] # 0x22e8 (en: 'precedes but is not equivalent to', DeepL translation)
- - "⋩": [t: "sikerül, de nem egyenértékű"] # 0x22e9 (en: 'succeeds but is not equivalent to', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nagyobb, mint, de nem egyenértékű" # (en: 'greater than but not equivalent to', DeepL translation)
+ - "⋨": [T: "megelőzi, de nem egyenértékű vele"] # 0x22e8 (en: 'precedes but is not equivalent to', DeepL translation)
+ - "⋩": [T: "követi, de nem egyenértékű"] # 0x22e9 (en: 'succeeds but is not equivalent to', DeepL translation)
- "⋪": # 0x22ea
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nem normális alcsoportja" # (en: 'not a normal subgroup of', DeepL translation)
- - "⋫": [t: "nem tartalmaz normál alcsoportként"] # 0x22eb (en: 'does not contain as a normal subgroup', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nem normális alcsoportja" # (en: 'not a normal subgroup of', DeepL translation)
+ - "⋫": [T: "nem tartalmazza normál alcsoportként"] # 0x22eb (en: 'does not contain as a normal subgroup', DeepL translation)
- "⋬": # 0x22ec
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
- - t: "nem normális alcsoportja sem egyenlő" # (en: 'not a normal subgroup of nor is equal to', DeepL translation)
- - "⋭": [t: "nem tartalmazza normál alcsoportként sem egyenlő"] # 0x22ed (en: 'does not contain as a normal subgroup nor is equal to', DeepL translation)
- - "⋮": [t: "függőleges ellipszis"] # 0x22ee (en: 'vertical ellipsis', DeepL translation)
- - "⋯": [t: "pont pont pont pont"] # 0x22ef (en: 'dot dot dot', DeepL translation)
- - "⋰": [t: "felfelé átlós ellipszis"] # 0x22f0 (en: 'up diagonal ellipsis', DeepL translation)
- - "⋱": [t: "átlós ellipszis"] # 0x22f1 (en: 'diagonal ellipsis', DeepL translation)
- - "⋲": [t: "eleme hosszú vízszintes vonallal"] # 0x22f2 (en: 'element of with long horizontal stroke', DeepL translation)
- - "⋳": [t: "elem függőleges vonallal a vízszintes vonás végén"] # 0x22f3 (en: 'element of with vertical bar at end of horizontal stroke', DeepL translation)
- - "⋴": [t: "elem függőleges vonallal a vízszintes vonás végén"] # 0x22f4 (en: 'element of with vertical bar at end of horizontal stroke', DeepL translation)
- - "⋵": [t: "elem a pont fölött"] # 0x22f5 (en: 'element of with dot above', DeepL translation)
- - "⋶": [t: "elem a fölött vonallal"] # 0x22f6 (en: 'element of with overbar', DeepL translation)
- - "⋷": [t: "elem a fölött vonallal"] # 0x22f7 (en: 'element of with overbar', DeepL translation)
- - "⋸": [t: "eleme alulvonallal"] # 0x22f8 (en: 'element of with underbar', DeepL translation)
- - "⋹": [t: "eleme két vízszintes vonallal"] # 0x22f9 (en: 'element of with two horizontal strokes', DeepL translation)
- - "⋺": [t: "hosszú vízszintes vonallal tartalmazza"] # 0x22fa (en: 'contains with long horizontal stroke', DeepL translation)
- - "⋻": [t: "tartalmaz függőleges sávval a vízszintes vonás végén"] # 0x22fb (en: 'contains with vertical bar at end of horizontal stroke', DeepL translation)
- - "⋼": [t: "tartalmaz függőleges sávval a vízszintes vonás végén"] # 0x22fc (en: 'contains with vertical bar at end of horizontal stroke', DeepL translation)
- - "⋽": [t: "tartalmazza a túlsó sávot"] # 0x22fd (en: 'contains with overbar', DeepL translation)
- - "⋾": [t: "tartalmazza a túlsó sávot"] # 0x22fe (en: 'contains with overbar', DeepL translation)
- - "⋿": [t: "z jelölés táska tagság"] # 0x22ff (en: 'z notation bag membership', DeepL translation)
- - "⌀": [t: "átmérő"] # 0x2300 (en: 'diameter', DeepL translation)
- - "⌁": [t: "elektromos nyíl"] # 0x2301 (en: 'electric arrow', DeepL translation)
- - "⌂": [t: "ház"] # 0x2302 (en: 'house', DeepL translation)
- - "⌃": [t: "felfelé mutató nyílhegy"] # 0x2303 (en: 'up arrowhead', DeepL translation)
- - "⌄": [t: "lefelé mutató nyílhegy"] # 0x2304 (en: 'down arrowhead', DeepL translation)
- - "⌅": [t: "projekciós"] # 0x2305 (en: 'projective', DeepL translation)
- - "⌆": [t: "perspektíva"] # 0x2306 (en: 'perspective', DeepL translation)
- - "⌇": [t: "hullámvonal"] # 0x2307 (en: 'wavy line', DeepL translation)
- - "⌈": [t: "bal felső határ"] # 0x2308 (en: 'left ceiling', DeepL translation)
- - "⌉": [t: "jobb oldali mennyezet"] # 0x2309 (en: 'right ceiling', DeepL translation)
- - "⌊": [t: "bal padló"] # 0x230a (en: 'left floor', DeepL translation)
- - "⌋": [t: "jobb oldali padló"] # 0x230b (en: 'right floor', DeepL translation)
- - "⌌": [t: "jobb alsó vágás"] # 0x230c (en: 'bottom right crop', DeepL translation)
- - "⌍": [t: "bal alsó vágás"] # 0x230d (en: 'bottom left crop', DeepL translation)
- - "⌎": [t: "jobb felső vágás"] # 0x230e (en: 'top right crop', DeepL translation)
- - "⌏": [t: "balra fent vágás"] # 0x230f (en: 'top left crop', DeepL translation)
- - "⌐": [t: "fordított nem jel"] # 0x2310 (en: 'reversed not sign', DeepL translation)
- - "⌑": [t: "négyzet rozettás"] # 0x2311 (en: 'square lozenge', DeepL translation)
- - "⌒": [t: "ív"] # 0x2312 (en: 'arc', DeepL translation)
- - "⌓": [t: "szegmens"] # 0x2313 (en: 'segment', DeepL translation)
- - "⌔": [t: "szektor"] # 0x2314 (en: 'sector', DeepL translation)
- - "⌕": [t: "telefonos diktafon"] # 0x2315 (en: 'telephone recorder', DeepL translation)
- - "⌖": [t: "helyzetjelző szálkereszt"] # 0x2316 (en: 'position indicator crosshairs', DeepL translation)
- - "⌗": [t: "viewdata négyzet"] # 0x2317 (en: 'viewdata square', DeepL translation)
- - "⌘": [t: "érdekesség helye jel"] # 0x2318 (en: 'place of interest sign', DeepL translation)
- - "⌙": [t: "fordított nem jel"] # 0x2319 (en: 'turned not sign', DeepL translation)
- - "⌚": [t: "óra"] # 0x231a (en: 'watch', DeepL translation)
- - "⌛": [t: "homokóra"] # 0x231b (en: 'hourglass', DeepL translation)
- - "⌜": [t: "bal felső sarok"] # 0x231c (en: 'top left corner', DeepL translation)
- - "⌝": [t: "jobb felső sarok"] # 0x231d (en: 'top right corner', DeepL translation)
- - "⌞": [t: "bal alsó sarok"] # 0x231e (en: 'bottom left corner', DeepL translation)
- - "⌟": [t: "jobb alsó sarok"] # 0x231f (en: 'bottom right corner', DeepL translation)
- - "⌠": [t: "felső fél egész"] # 0x2320 (en: 'top half integral', DeepL translation)
- - "⌡": [t: "alsó fele integrált"] # 0x2321 (en: 'bottom half integral', DeepL translation)
- - "⌢": [t: "homlokráncolás"] # 0x2322 (en: 'frown', DeepL translation)
- - "⌣": [t: "mosoly"] # 0x2323 (en: 'smile', DeepL translation)
- - "⌤": [t: "felfelé nyílhegy két vízszintes sáv között"] # 0x2324 (en: 'up arrowhead between two horizontal bars', DeepL translation)
- - "⌥": [t: "opciós billentyű"] # 0x2325 (en: 'option key', DeepL translation)
- - "⌦": [t: "törlés jobbra"] # 0x2326 (en: 'erase to the right', DeepL translation)
- - "⌧": [t: "x téglalap alakú négyzetben"] # 0x2327 (en: 'x in a rectangle box', DeepL translation)
- - "⌨": [t: "billentyűzet"] # 0x2328 (en: 'keyboard', DeepL translation)
- - "〈": [t: "balra mutató szögletes zárójel"] # 0x2329 (en: 'left pointing angle bracket', DeepL translation)
- - "〉": [t: "jobbra mutató szögletes zárójel"] # 0x232a (en: 'right pointing angle bracket', DeepL translation)
- - "⌫": [t: "törlés balra"] # 0x232b (en: 'erase to the left', DeepL translation)
- - "⌬": [t: "benzolgyűrű"] # 0x232c (en: 'benzene ring', DeepL translation)
- - "⌭": [t: "hengeresség"] # 0x232d (en: 'cylindricity', DeepL translation)
- - "⌮": [t: "körkörös profil"] # 0x232e (en: 'all around profile', DeepL translation)
- - "⌯": [t: "szimmetria"] # 0x232f (en: 'symmetry', DeepL translation)
- - "⌰": [t: "teljes kifutás"] # 0x2330 (en: 'total runout', DeepL translation)
- - "⌱": [t: "dimenzió eredete"] # 0x2331 (en: 'dimension origin', DeepL translation)
- - "⌲": [t: "kúpos kúp"] # 0x2332 (en: 'conical taper', DeepL translation)
- - "⌳": [t: "ferde"] # 0x2333 (en: 'slope', DeepL translation)
- - "⌴": [t: "ellenző"] # 0x2334 (en: 'counterbore', DeepL translation)
- - "⌵": [t: "süllyesztett"] # 0x2335 (en: 'countersink', DeepL translation)
- - "⌶": [t: "apl i gerenda"] # 0x2336 (en: 'apl i beam', DeepL translation)
- - "⌽": [t: "apl kör stile"] # 0x233d (en: 'apl circle stile', DeepL translation)
- - "⌿": [t: "apl slash bar"] # 0x233f (DeepL translation)
- - "⍰": [t: "ismeretlen doboz"] # 0x2370 (en: 'unknown box', DeepL translation)
- - "⍼": [t: "derékszög lefelé cikcakkos nyíllal"] # 0x237c (en: 'right angle with down zigzag arrow', DeepL translation)
- - "⎔": [t: "hatszög"] # 0x2394 (en: 'hexagon', DeepL translation)
- - "⎕": [t: "doboz"] # 0x2395 (en: 'box', DeepL translation)
- - "⎶": [t: "alsó szögletes zárójel felett felső szögletes zárójel"] # 0x23b6 (en: 'bottom square bracket over top square bracket', DeepL translation)
- - "⏜": [t: "felső zárójel"] # 0x23dc (en: 'top paren', DeepL translation)
- - "⏝": [t: "alsó zárójel"] # 0x23dd (en: 'bottom paren', DeepL translation)
- - "⏞": [t: "felső zárójel"] # 0x23de (en: 'top brace', DeepL translation)
- - "⏟": [t: "alsó zárójel"] # 0x23df (en: 'bottom brace', DeepL translation)
- - "⏠": [t: "felső teknőspáncélos konzol"] # 0x23e0 (en: 'top tortoise shell bracket', DeepL translation)
- - "⏡": [t: "alsó teknőspáncélos zárójel"] # 0x23e1 (en: 'bottom tortoise shell bracket', DeepL translation)
- - "⏢": [t: "fehér trapéz"] # 0x23e2 (en: 'white trapezium', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
+ - T: "nem normál alcsoportja, és nem egyenlő vele" # (en: 'not a normal subgroup of nor is equal to', DeepL translation)
+ - "⋭": [T: "nem tartalmazza normál alcsoportként és nem egyenlő vele"] # 0x22ed (en: 'does not contain as a normal subgroup nor is equal to', DeepL translation)
+ - "⋮": [T: "függőleges ellipszis"] # 0x22ee (en: 'vertical ellipsis', DeepL translation)
+ - "⋯": [T: "pont pont pont"] # 0x22ef (en: 'dot dot dot', DeepL translation)
+ - "⋰": [T: "felfelé átlós ellipszis"] # 0x22f0 (en: 'up diagonal ellipsis', DeepL translation)
+ - "⋱": [T: "átlós ellipszis"] # 0x22f1 (en: 'diagonal ellipsis', DeepL translation)
+ - "⋲": [T: "eleme, hosszú vízszintes vonallal"] # 0x22f2 (en: 'element of with long horizontal stroke', DeepL translation)
+ - "⋳": [T: "eleme, függőleges vonallal a vízszintes vonal végén"] # 0x22f3 (en: 'element of with vertical bar at end of horizontal stroke', DeepL translation)
+ - "⋴": [T: "kis eleme, függőleges vonallal a vízszintes vonal végén"] # 0x22f4 (en: 'element of with vertical bar at end of horizontal stroke', DeepL translation)
+ - "⋵": [T: "eleme, fölötte ponttal"] # 0x22f5 (en: 'element of with dot above', DeepL translation)
+ - "⋶": [T: "eleme, felülvonással"] # 0x22f6 (en: 'element of with overbar', DeepL translation)
+ - "⋷": [T: "kis eleme, felülvonással"] # 0x22f7 (en: 'element of with overbar', DeepL translation)
+ - "⋸": [T: "eleme, aláhúzással"] # 0x22f8 (en: 'element of with underbar', DeepL translation)
+ - "⋹": [T: "eleme két vízszintes vonallal"] # 0x22f9 (en: 'element of with two horizontal strokes', DeepL translation)
+ - "⋺": [T: "tartalmazza, hosszú vízszintes vonallal"] # 0x22fa (en: 'contains with long horizontal stroke', DeepL translation)
+ - "⋻": [T: "tartalmazza, függőleges vonallal a vízszintes vonal végén"] # 0x22fb (en: 'contains with vertical bar at end of horizontal stroke', DeepL translation)
+ - "⋼": [T: "kis tartalmazza, függőleges vonallal a vízszintes vonal végén"] # 0x22fc (en: 'contains with vertical bar at end of horizontal stroke', DeepL translation)
+ - "⋽": [T: "tartalmazza, felülvonással"] # 0x22fd (en: 'contains with overbar', DeepL translation)
+ - "⋾": [T: "kis tartalmazza, felülvonással"] # 0x22fe (en: 'contains with overbar', DeepL translation)
+ - "⋿": [T: "z jelölési csoport tagság"] # 0x22ff (en: 'z notation bag membership', DeepL translation)
+ - "⌀": [T: "átmérő"] # 0x2300 (en: 'diameter', DeepL translation)
+ - "⌁": [T: "elektromos nyíl"] # 0x2301 (en: 'electric arrow', DeepL translation)
+ - "⌂": [T: "ház"] # 0x2302 (en: 'house', DeepL translation)
+ - "⌃": [T: "felfelé mutató nyílhegy"] # 0x2303 (en: 'up arrowhead', DeepL translation)
+ - "⌄": [T: "lefelé mutató nyílhegy"] # 0x2304 (en: 'down arrowhead', DeepL translation)
+ - "⌅": [T: "projektív"] # 0x2305 (en: 'projective', DeepL translation)
+ - "⌆": [T: "perspektíva"] # 0x2306 (en: 'perspective', DeepL translation)
+ - "⌇": [T: "hullámvonal"] # 0x2307 (en: 'wavy line', DeepL translation)
+ - "⌈": [T: "bal felső egész rész"] # 0x2308 (en: 'left ceiling', DeepL translation)
+ - "⌉": [T: "jobb felső egész rész"] # 0x2309 (en: 'right ceiling', DeepL translation)
+ - "⌊": [T: "bal alsó egész rész"] # 0x230a (en: 'left floor', DeepL translation)
+ - "⌋": [T: "jobb alsó egész rész"] # 0x230b (en: 'right floor', DeepL translation)
+ - "⌌": [T: "jobb alsó vágás"] # 0x230c (en: 'bottom right crop', DeepL translation)
+ - "⌍": [T: "bal alsó vágás"] # 0x230d (en: 'bottom left crop', DeepL translation)
+ - "⌎": [T: "jobb felső vágás"] # 0x230e (en: 'top right crop', DeepL translation)
+ - "⌏": [T: "balra fent vágás"] # 0x230f (en: 'top left crop', DeepL translation)
+ - "⌐": [T: "fordított nem jel"] # 0x2310 (en: 'reversed not sign', DeepL translation)
+ - "⌑": [T: "négyzet alakú rombusz"] # 0x2311 (en: 'square lozenge', DeepL translation)
+ - "⌒": [T: "ív"] # 0x2312 (en: 'arc', DeepL translation)
+ - "⌓": [T: "szegmens"] # 0x2313 (en: 'segment', DeepL translation)
+ - "⌔": [T: "szektor"] # 0x2314 (en: 'sector', DeepL translation)
+ - "⌕": [T: "telefonrögzítő"] # 0x2315 (en: 'telephone recorder', DeepL translation)
+ - "⌖": [T: "helyzetjelző szálkereszt"] # 0x2316 (en: 'position indicator crosshairs', DeepL translation)
+ - "⌗": [T: "viewdata négyzet"] # 0x2317 (en: 'viewdata square', DeepL translation)
+ - "⌘": [T: "érdekes hely jel"] # 0x2318 (en: 'place of interest sign', DeepL translation)
+ - "⌙": [T: "fordított nem jel"] # 0x2319 (en: 'turned not sign', DeepL translation)
+ - "⌚": [T: "óra"] # 0x231a (en: 'watch', DeepL translation)
+ - "⌛": [T: "homokóra"] # 0x231b (en: 'hourglass', DeepL translation)
+ - "⌜": [T: "bal felső sarok"] # 0x231c (en: 'top left corner', DeepL translation)
+ - "⌝": [T: "jobb felső sarok"] # 0x231d (en: 'top right corner', DeepL translation)
+ - "⌞": [T: "bal alsó sarok"] # 0x231e (en: 'bottom left corner', DeepL translation)
+ - "⌟": [T: "jobb alsó sarok"] # 0x231f (en: 'bottom right corner', DeepL translation)
+ - "⌠": [T: "felső félintegrál"] # 0x2320 (en: 'top half integral', DeepL translation)
+ - "⌡": [T: "alsó félintegrál"] # 0x2321 (en: 'bottom half integral', DeepL translation)
+ - "⌢": [T: "homlokráncolás"] # 0x2322 (en: 'frown', DeepL translation)
+ - "⌣": [T: "mosoly"] # 0x2323 (en: 'smile', DeepL translation)
+ - "⌤": [T: "felfelé mutató nyílhegy két vízszintes sáv között"] # 0x2324 (en: 'up arrowhead between two horizontal bars', DeepL translation)
+ - "⌥": [T: "opciós billentyű"] # 0x2325 (en: 'option key', DeepL translation)
+ - "⌦": [T: "törlés jobbra"] # 0x2326 (en: 'erase to the right', DeepL translation)
+ - "⌧": [T: "x egy téglalap alakú négyzetben"] # 0x2327 (en: 'x in a rectangle box', DeepL translation)
+ - "⌨": [T: "billentyűzet"] # 0x2328 (en: 'keyboard', DeepL translation)
+ - "〈": [T: "balra mutató szögletes zárójel"] # 0x2329 (en: 'left pointing angle bracket', DeepL translation)
+ - "〉": [T: "jobbra mutató szögletes zárójel"] # 0x232a (en: 'right pointing angle bracket', DeepL translation)
+ - "⌫": [T: "törlés balra"] # 0x232b (en: 'erase to the left', DeepL translation)
+ - "⌬": [T: "benzolgyűrű"] # 0x232c (en: 'benzene ring', DeepL translation)
+ - "⌭": [T: "hengeresség"] # 0x232d (en: 'cylindricity', DeepL translation)
+ - "⌮": [T: "körkörös profil"] # 0x232e (en: 'all around profile', DeepL translation)
+ - "⌯": [T: "szimmetria"] # 0x232f (en: 'symmetry', DeepL translation)
+ - "⌰": [T: "teljes kifutás"] # 0x2330 (en: 'total runout', DeepL translation)
+ - "⌱": [T: "dimenzió eredete"] # 0x2331 (en: 'dimension origin', DeepL translation)
+ - "⌲": [T: "kúpos kúp"] # 0x2332 (en: 'conical taper', DeepL translation)
+ - "⌳": [T: "ferde"] # 0x2333 (en: 'slope', DeepL translation)
+ - "⌴": [T: "ellenző"] # 0x2334 (en: 'counterbore', DeepL translation)
+ - "⌵": [T: "süllyesztett"] # 0x2335 (en: 'countersink', DeepL translation)
+ - "⌶": [T: "apl i gerenda"] # 0x2336 (en: 'apl i beam', DeepL translation)
+ - "⌽": [T: "apl kör alakú keret"] # 0x233d (en: 'apl circle stile', DeepL translation)
+ - "⌿": [T: "apl perjel"] # 0x233f (DeepL translation)
+ - "⍰": [T: "ismeretlen doboz"] # 0x2370 (en: 'unknown box', DeepL translation)
+ - "⍼": [T: "derékszög lefelé cikcakkos nyíllal"] # 0x237c (en: 'right angle with down zigzag arrow', DeepL translation)
+ - "⎔": [T: "hatszög"] # 0x2394 (en: 'hexagon', DeepL translation)
+ - "⎕": [T: "doboz"] # 0x2395 (en: 'box', DeepL translation)
+ - "⎶": [T: "alsó szögletes zárójel felett felső szögletes zárójel"] # 0x23b6 (en: 'bottom square bracket over top square bracket', DeepL translation)
+ - "⏜": [T: "felső zárójel"] # 0x23dc (en: 'top paren', DeepL translation)
+ - "⏝": [T: "alsó zárójel"] # 0x23dd (en: 'bottom paren', DeepL translation)
+ - "⏞": [T: "felső zárójel"] # 0x23de (en: 'top brace', DeepL translation)
+ - "⏟": [T: "alsó zárójel"] # 0x23df (en: 'bottom brace', DeepL translation)
+ - "⏠": [T: "felső teknőspáncélos zárójel"] # 0x23e0 (en: 'top tortoise shell bracket', DeepL translation)
+ - "⏡": [T: "alsó teknőspáncélos zárójel"] # 0x23e1 (en: 'bottom tortoise shell bracket', DeepL translation)
+ - "⏢": [T: "fehér trapéz"] # 0x23e2 (en: 'white trapezium', DeepL translation)
- "⏣": [T: "benzolgyűrű körrel"] # 0x23e3 (en: 'benzene right with circle', DeepL translation)
- - "⏤": [t: "egyenesség"] # 0x23e4 (en: 'straightness', DeepL translation)
- - "⏥": [t: "laposság"] # 0x23e5 (en: 'flatness', DeepL translation)
+ - "⏤": [T: "egyenesség"] # 0x23e4 (en: 'straightness', DeepL translation)
+ - "⏥": [T: "laposság"] # 0x23e5 (en: 'flatness', DeepL translation)
- "⏦": # 0x23e6
- - spell: "ac"
- - t: "jelenlegi" # (en: 'current', DeepL translation)
- - "⏧": [t: "elektromos kereszteződés"] # 0x23e7 (en: 'electrical intersection', DeepL translation)
+ - SPELL: "ac"
+ - T: "jelenlegi" # (en: 'current', DeepL translation)
+ - "⏧": [T: "elektromos kereszteződés"] # 0x23e7 (en: 'electrical intersection', DeepL translation)
- "①-⑨": # 0x2460 - 0x2469
- T: "bekarikázott" # (en: 'circled', DeepL translation)
- - spell: "translate('.', '①②③④⑤⑥⑦⑧⑨', '123456789')"
+ - SPELL: "translate('.', '①②③④⑤⑥⑦⑧⑨', '123456789')"
- "⑩": [T: "bekarikázott tízes"] # 0x2469 (en: 'circled ten', DeepL translation)
- - "⑪": [t: "bekarikázott tizenegy"] # 0x246a (en: 'circled eleven', DeepL translation)
- - "⑫": [t: "bekarikázott tizenkettő"] # 0x246b (en: 'circled twelve', DeepL translation)
- - "⑬": [t: "bekarikázott tizenhármas"] # 0x246c (en: 'circled thirteen', DeepL translation)
- - "⑭": [t: "bekarikázott tizennégy"] # 0x246d (en: 'circled fourteen', DeepL translation)
- - "⑮": [t: "bekarikázott tizenöt"] # 0x246e (en: 'circled fifteen', DeepL translation)
- - "⑯": [t: "bekarikázott tizenhatos"] # 0x246f (en: 'circled sixteen', DeepL translation)
- - "⑰": [t: "bekarikázott tizenhét"] # 0x2470 (en: 'circled seventeen', DeepL translation)
- - "⑱": [t: "bekarikázott tizenegy"] # 0x2471 (en: 'circled eighteen', DeepL translation)
- - "⑳": [t: "bekarikázott húsz"] # 0x2473 (en: 'circled twenty', DeepL translation)
+ - "⑪": [T: "bekarikázott tizenegyes"] # 0x246a (en: 'circled eleven', DeepL translation)
+ - "⑫": [T: "bekarikázott tizenkettes"] # 0x246b (en: 'circled twelve', DeepL translation)
+ - "⑬": [T: "bekarikázott tizenhármas"] # 0x246c (en: 'circled thirteen', DeepL translation)
+ - "⑭": [T: "bekarikázott tizennégyes"] # 0x246d (en: 'circled fourteen', DeepL translation)
+ - "⑮": [T: "bekarikázott tizenötös"] # 0x246e (en: 'circled fifteen', DeepL translation)
+ - "⑯": [T: "bekarikázott tizenhatos"] # 0x246f (en: 'circled sixteen', DeepL translation)
+ - "⑰": [T: "bekarikázott tizenhetes"] # 0x2470 (en: 'circled seventeen', DeepL translation)
+ - "⑱": [T: "bekarikázott tizenegyes"] # 0x2471 (en: 'circled eighteen', DeepL translation)
+ - "⑳": [T: "bekarikázott húszas"] # 0x2473 (en: 'circled twenty', DeepL translation)
- "⑴-⑼": # 0x2474 - 0x247d
- - t: "zárójeles" # (en: 'parenthesized', DeepL translation)
- - spell: "translate('.', '⑴⑵⑶⑷⑸⑹⑺⑻⑼', '123456789')"
- - "⑽": [t: "zárójeles tízes"] # 0x247d (en: 'parenthesized ten', DeepL translation)
- - "⑾": [t: "zárójeles tizenegyes"] # 0x247e (en: 'parenthesized eleven', DeepL translation)
- - "⑿": [t: "zárójeles zárójeles tizenkettő"] # 0x247f (en: 'parenthesized twelve', DeepL translation)
- - "⒀": [t: "zárójeles tizenhárom"] # 0x2480 (en: 'parenthesized thirteen', DeepL translation)
- - "⒁": [t: "zárójeles tizennégyes"] # 0x2481 (en: 'parenthesized fourteen', DeepL translation)
- - "⒂": [t: "zárójeles zárójeles tizenötös"] # 0x2482 (en: 'parenthesized fifteen', DeepL translation)
- - "⒃": [t: "zárójeles tizenhatos"] # 0x2483 (en: 'parenthesized sixteen', DeepL translation)
- - "⒄": [t: "zárójeles zárójeles tizenhét"] # 0x2484 (en: 'parenthesized seventeen', DeepL translation)
- - "⒅": [t: "zárójeles zárójeles tizenegyes"] # 0x2485 (en: 'parenthesized eighteen', DeepL translation)
- - "⒆": [t: "zárójeles zárójeles tizenkilenc"] # 0x2486 (en: 'parenthesized nineteen', DeepL translation)
- - "⒇": [t: "zárójeles zárójeles húszas"] # 0x2487 (en: 'parenthesized twenty', DeepL translation)
+ - T: "zárójeles" # (en: 'parenthesized', DeepL translation)
+ - SPELL: "translate('.', '⑴⑵⑶⑷⑸⑹⑺⑻⑼', '123456789')"
+ - "⑽": [T: "zárójeles tízes"] # 0x247d (en: 'parenthesized ten', DeepL translation)
+ - "⑾": [T: "zárójeles tizenegyes"] # 0x247e (en: 'parenthesized eleven', DeepL translation)
+ - "⑿": [T: "zárójeles tizenkettes"] # 0x247f (en: 'parenthesized twelve', DeepL translation)
+ - "⒀": [T: "zárójeles tizenhármas"] # 0x2480 (en: 'parenthesized thirteen', DeepL translation)
+ - "⒁": [T: "zárójeles tizennégyes"] # 0x2481 (en: 'parenthesized fourteen', DeepL translation)
+ - "⒂": [T: "zárójeles tizenötös"] # 0x2482 (en: 'parenthesized fifteen', DeepL translation)
+ - "⒃": [T: "zárójeles tizenhatos"] # 0x2483 (en: 'parenthesized sixteen', DeepL translation)
+ - "⒄": [T: "zárójeles tizenhetes"] # 0x2484 (en: 'parenthesized seventeen', DeepL translation)
+ - "⒅": [T: "zárójeles tizennyolcas"] # 0x2485 (en: 'parenthesized eighteen', DeepL translation)
+ - "⒆": [T: "zárójeles tizenkilences"] # 0x2486 (en: 'parenthesized nineteen', DeepL translation)
+ - "⒇": [T: "zárójeles húszas"] # 0x2487 (en: 'parenthesized twenty', DeepL translation)
- "⒈-⒐": # 0x2488 - 0x2491
- - spell: "translate('.', '⒈⒉⒊⒋⒌⒍⒎⒏⒐', '123456789')"
- - t: "ponttal" # (en: 'with period', DeepL translation)
- - "⒑": [t: "tízes pontokkal"] # 0x2491 (en: 'ten with period', DeepL translation)
- - "⒒": [t: "tizenegyes pontokkal"] # 0x2492 (en: 'eleven with period', DeepL translation)
- - "⒓": [t: "tizenkettő ponttal"] # 0x2493 (en: 'twelve with period', DeepL translation)
- - "⒔": [t: "tizenhármas pont"] # 0x2494 (en: 'thirteen with period', DeepL translation)
- - "⒕": [t: "tizennégy ponttal"] # 0x2495 (en: 'fourteen with period', DeepL translation)
- - "⒖": [t: "tizenöt pont"] # 0x2496 (en: 'fifteen with period', DeepL translation)
- - "⒗": [t: "tizenhatos pont"] # 0x2497 (en: 'sixteen with period', DeepL translation)
- - "⒘": [t: "tizenhét pont"] # 0x2498 (en: 'seventeen with period', DeepL translation)
- - "⒙": [t: "tizennégy ponttal"] # 0x2499 (en: 'eighteen with period', DeepL translation)
- - "⒚": [t: "tizenkilenc ponttal"] # 0x249a (en: 'nineteen with period', DeepL translation)
- - "⒛": [t: "húsz ponttal"] # 0x249b (en: 'twenty with period', DeepL translation)
+ - SPELL: "translate('.', '⒈⒉⒊⒋⒌⒍⒎⒏⒐', '123456789')"
+ - T: "ponttal" # (en: 'with period', DeepL translation)
+ - "⒑": [T: "tíz ponttal"] # 0x2491 (en: 'ten with period', DeepL translation)
+ - "⒒": [T: "tizenegy ponttal"] # 0x2492 (en: 'eleven with period', DeepL translation)
+ - "⒓": [T: "tizenkettő ponttal"] # 0x2493 (en: 'twelve with period', DeepL translation)
+ - "⒔": [T: "tizenhárom ponttal"] # 0x2494 (en: 'thirteen with period', DeepL translation)
+ - "⒕": [T: "tizennégy ponttal"] # 0x2495 (en: 'fourteen with period', DeepL translation)
+ - "⒖": [T: "tizenöt ponttal"] # 0x2496 (en: 'fifteen with period', DeepL translation)
+ - "⒗": [T: "tizenhat ponttal"] # 0x2497 (en: 'sixteen with period', DeepL translation)
+ - "⒘": [T: "tizenhét ponttal"] # 0x2498 (en: 'seventeen with period', DeepL translation)
+ - "⒙": [T: "tizennyolc ponttal"] # 0x2499 (en: 'eighteen with period', DeepL translation)
+ - "⒚": [T: "tizenkilenc ponttal"] # 0x249a (en: 'nineteen with period', DeepL translation)
+ - "⒛": [T: "húsz ponttal"] # 0x249b (en: 'twenty with period', DeepL translation)
- "⒜-⒵": # 0x249c - 0x24b5
- - t: "zárójeles" # (en: 'parenthesized', DeepL translation)
- - spell: "translate('.', '⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵', 'abcdefghijklmnopqrstuvwxyz')"
+ - T: "zárójeles" # (en: 'parenthesized', DeepL translation)
+ - SPELL: "translate('.', '⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵', 'abcdefghijklmnopqrstuvwxyz')"
- "Ⓐ-ⓩ": # 0x24b6 - 0x24cf
- T: "bekarikázott" # (en: 'circled', DeepL translation)
- - spell: "translate('.', 'ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"
+ - SPELL: "translate('.', 'ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"
- "🅐-🅩": # 0x1f150 - 0x1f169
- T: "fekete körrel jelölt" # (en: 'black circled', DeepL translation)
- - spell: "translate('.', '🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟🅠🅡🅢🅣🅤🅥🅦🅧🅨🅩', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"
+ - SPELL: "translate('.', '🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟🅠🅡🅢🅣🅤🅥🅦🅧🅨🅩', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"
- "ⓐ-ⓩ": # 0x24d0 - 0x24e9
- T: "bekarikázott" # (en: 'circled', DeepL translation)
- - spell: "translate('.', 'ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ', 'abcdefghijklmnopqrstuvwxyz')"
- - "⓪": [t: "bekarikázott nulla"] # 0x24ea (en: 'circled zero', DeepL translation)
+ - SPELL: "translate('.', 'ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ', 'abcdefghijklmnopqrstuvwxyz')"
+ - "⓪": [T: "bekarikázott nulla"] # 0x24ea (en: 'circled zero', DeepL translation)
- "⓫": [T: "fekete kör alakú tizenegyes"] # 0x24eb (en: 'black circled eleven', DeepL translation)
- "⓬": [T: "fekete bekarikázott tizenkettő"] # 0x24ec (en: 'black circled twelve', DeepL translation)
- "⓭": [T: "fekete bekarikázott tizenhárom"] # 0x24ed (en: 'black circled thirteen', DeepL translation)
@@ -1476,62 +1476,62 @@
- "⓱": [T: "fekete bekarikázott tizenhét"] # 0x24f1 (en: 'black circled seventeen', DeepL translation)
- "⓲": [T: "fekete karikázott tizenegyes"] # 0x24f2 (en: 'black circled eighteen', DeepL translation)
- "⓳": [T: "fekete bekarikázott tizenkilenc"] # 0x24f3 (en: 'black circled nineteen', DeepL translation)
- - "⓴": [t: "fekete bekarikázott húszas"] # 0x24f4 (en: 'black circled twenty', DeepL translation)
+ - "⓴": [T: "fekete bekarikázott húszas"] # 0x24f4 (en: 'black circled twenty', DeepL translation)
- "⓵-⓽": # 0x24f5 - 0x24fe
- T: "dupla bekarikázott" # (en: 'double circled', DeepL translation)
- - spell: "translate('.', '⓵⓶⓷⓸⓹⓺⓻⓼⓽', '123456789')"
+ - SPELL: "translate('.', '⓵⓶⓷⓸⓹⓺⓻⓼⓽', '123456789')"
- "⓾": [T: "dupla bekarikázott tízes"] # 0x24fe (en: 'double circled ten', DeepL translation)
- "⓿": [T: "fekete bekarikázott nulla"] # 0x24ff (en: 'black circled zero', DeepL translation)
- "■": [T: "fekete négyzet"] # 0x25a0 (en: 'black square', DeepL translation)
- "□": [T: "fehér négyzet"] # 0x25a1 (en: 'white square', DeepL translation)
- "▢": [T: "fehér négyzet lekerekített sarkokkal"] # 0x25a2 (en: 'white square with rounded corners', DeepL translation)
- "▣": [T: "fehér négyzet, amely kis fekete négyzetet tartalmaz"] # 0x25a3 (en: 'white square containing small black square', DeepL translation)
- - "▤": [t: "négyzet vízszintes kitöltéssel"] # 0x25a4 (en: 'square with horizontal fill', DeepL translation)
- - "▥": [t: "négyzet függőleges kitöltéssel"] # 0x25a5 (en: 'square with vertical fill', DeepL translation)
- - "▦": [t: "négyzet ortogonális kereszthúzással kitöltve"] # 0x25a6 (en: 'square with orthogonal crosshatch fill', DeepL translation)
- - "▧": [t: "négyzet bal felső és jobb alsó kitöltéssel"] # 0x25a7 (en: 'square with upper left to lower right fill', DeepL translation)
- - "▨": [t: "négyzet jobb felsővel bal alsó kitöltés"] # 0x25a8 (en: 'square with upper right to lower left fill', DeepL translation)
- - "▩": [t: "négyzet átlós kereszthúzással kitöltve"] # 0x25a9 (en: 'square with diagonal crosshatch fill', DeepL translation)
- - "▪": [t: "fekete kis négyzet"] # 0x25aa (en: 'black small square', DeepL translation)
- - "▫": [t: "fehér kis négyzet"] # 0x25ab (en: 'white small square', DeepL translation)
- - "▬": [t: "fekete téglalap"] # 0x25ac (en: 'black rectangle', DeepL translation)
- - "▭": [t: "fehér téglalap"] # 0x25ad (en: 'white rectangle', DeepL translation)
- - "▮": [t: "fekete függőleges téglalap"] # 0x25ae (en: 'black vertical rectangle', DeepL translation)
- - "▯": [t: "fehér függőleges téglalap"] # 0x25af (en: 'white vertical rectangle', DeepL translation)
- - "▰": [t: "fekete párhuzamos"] # 0x25b0 (en: 'black parallelogram', DeepL translation)
- - "▱": [t: "fehér párhuzamos"] # 0x25b1 (en: 'white parallelogram', DeepL translation)
- - "▲": [t: "fekete felfelé mutató háromszög"] # 0x25b2 (en: 'black up pointing triangle', DeepL translation)
- - "△": [t: "háromszög"] # 0x25b3 (en: 'triangle', DeepL translation)
- - "▴": [t: "fekete felfelé mutató kis háromszög"] # 0x25b4 (en: 'black up pointing small triangle', DeepL translation)
- - "▵": [t: "fehér felfelé mutató kis háromszög"] # 0x25b5 (en: 'white up pointing small triangle', DeepL translation)
- - "▶": [t: "fekete jobbra mutató háromszög"] # 0x25b6 (en: 'black right pointing triangle', DeepL translation)
- - "▷": [t: "fehér jobbra mutató háromszög"] # 0x25b7 (en: 'white right pointing triangle', DeepL translation)
- - "▸": [t: "fekete jobbra mutató kis háromszög"] # 0x25b8 (en: 'black right pointing small triangle', DeepL translation)
- - "▹": [t: "fehér jobbra mutató kis háromszög"] # 0x25b9 (en: 'white right pointing small triangle', DeepL translation)
- - "►": [t: "fekete jobbra mutató mutató"] # 0x25ba (en: 'black right pointing pointer', DeepL translation)
- - "▻": [t: "fehér jobbra mutató mutató"] # 0x25bb (en: 'white right pointing pointer', DeepL translation)
- - "▼": [t: "fekete lefelé mutató háromszög"] # 0x25bc (en: 'black down pointing triangle', DeepL translation)
- - "▽": [t: "fehér lefelé mutató háromszög"] # 0x25bd (en: 'white down pointing triangle', DeepL translation)
- - "▾": [t: "fekete lefelé mutató kis háromszög"] # 0x25be (en: 'black down pointing small triangle', DeepL translation)
- - "▿": [t: "fehér lefelé mutató kis háromszög"] # 0x25bf (en: 'white down pointing small triangle', DeepL translation)
- - "◀": [t: "fekete balra mutató háromszög"] # 0x25c0 (en: 'black left pointing triangle', DeepL translation)
- - "◁": [t: "fehér balra mutató kis háromszög"] # 0x25c1 (en: 'white left pointing triangle', DeepL translation)
- - "◂": [t: "fekete balra mutató kis háromszög"] # 0x25c2 (en: 'black left pointing small triangle', DeepL translation)
- - "◃": [t: "fehér balra mutató kis háromszög"] # 0x25c3 (en: 'white left pointing small triangle', DeepL translation)
- - "◄": [t: "fekete balra mutató mutató"] # 0x25c4 (en: 'black left pointing pointer', DeepL translation)
- - "◅": [t: "fehér balra mutató mutató mutató"] # 0x25c5 (en: 'white left pointing pointer', DeepL translation)
- - "◆": [t: "fekete gyémánt"] # 0x25c6 (en: 'black diamond', DeepL translation)
- - "◇": [t: "fehér rombusz"] # 0x25c7 (en: 'white diamond', DeepL translation)
- - "◈": [t: "fehér rombusz, benne fekete kis rombusz"] # 0x25c8 (en: 'white diamond containing black small diamond', DeepL translation)
- - "◉": [t: "halszem"] # 0x25c9 (en: 'fisheye', DeepL translation)
- - "◊": [t: "rozettás"] # 0x25ca (en: 'lozenge', DeepL translation)
- - "○": [t: "fehér kör"] # 0x25cb (en: 'white circle', DeepL translation)
- - "◌": [t: "pontozott kör"] # 0x25cc (en: 'dotted circle', DeepL translation)
- - "◍": [t: "kör függőleges kitöltéssel"] # 0x25cd (en: 'circle with vertical fill', DeepL translation)
- - "◎": [t: "bullseye"] # 0x25ce (DeepL translation)
- - "●": [t: "fekete kör"] # 0x25cf (en: 'black circle', DeepL translation)
- - "◐": [t: "kör bal oldali felével fekete"] # 0x25d0 (en: 'circle with left half black', DeepL translation)
- - "◑": [t: "kör jobb oldali fél feketével"] # 0x25d1 (en: 'circle with right half black', DeepL translation)
+ - "▤": [T: "négyzet vízszintes kitöltéssel"] # 0x25a4 (en: 'square with horizontal fill', DeepL translation)
+ - "▥": [T: "négyzet függőleges kitöltéssel"] # 0x25a5 (en: 'square with vertical fill', DeepL translation)
+ - "▦": [T: "négyzet merőleges keresztsraffozással"] # 0x25a6 (en: 'square with orthogonal crosshatch fill', DeepL translation)
+ - "▧": [T: "négyzet bal felső és jobb alsó kitöltéssel"] # 0x25a7 (en: 'square with upper left to lower right fill', DeepL translation)
+ - "▨": [T: "négyzet, jobb felső és bal alsó kitöltéssel"] # 0x25a8 (en: 'square with upper right to lower left fill', DeepL translation)
+ - "▩": [T: "négyzet átlós kereszthúzással kitöltve"] # 0x25a9 (en: 'square with diagonal crosshatch fill', DeepL translation)
+ - "▪": [T: "fekete kis négyzet"] # 0x25aa (en: 'black small square', DeepL translation)
+ - "▫": [T: "fehér kis négyzet"] # 0x25ab (en: 'white small square', DeepL translation)
+ - "▬": [T: "fekete téglalap"] # 0x25ac (en: 'black rectangle', DeepL translation)
+ - "▭": [T: "fehér téglalap"] # 0x25ad (en: 'white rectangle', DeepL translation)
+ - "▮": [T: "fekete függőleges téglalap"] # 0x25ae (en: 'black vertical rectangle', DeepL translation)
+ - "▯": [T: "fehér függőleges téglalap"] # 0x25af (en: 'white vertical rectangle', DeepL translation)
+ - "▰": [T: "fekete paralelogramma"] # 0x25b0 (en: 'black parallelogram', DeepL translation)
+ - "▱": [T: "fehér paralelogramma"] # 0x25b1 (en: 'white parallelogram', DeepL translation)
+ - "▲": [T: "fekete felfelé mutató háromszög"] # 0x25b2 (en: 'black up pointing triangle', DeepL translation)
+ - "△": [T: "háromszög"] # 0x25b3 (en: 'triangle', DeepL translation)
+ - "▴": [T: "fekete felfelé mutató kis háromszög"] # 0x25b4 (en: 'black up pointing small triangle', DeepL translation)
+ - "▵": [T: "fehér felfelé mutató kis háromszög"] # 0x25b5 (en: 'white up pointing small triangle', DeepL translation)
+ - "▶": [T: "fekete jobbra mutató háromszög"] # 0x25b6 (en: 'black right pointing triangle', DeepL translation)
+ - "▷": [T: "fehér jobbra mutató háromszög"] # 0x25b7 (en: 'white right pointing triangle', DeepL translation)
+ - "▸": [T: "fekete jobbra mutató kis háromszög"] # 0x25b8 (en: 'black right pointing small triangle', DeepL translation)
+ - "▹": [T: "fehér jobbra mutató kis háromszög"] # 0x25b9 (en: 'white right pointing small triangle', DeepL translation)
+ - "►": [T: "fekete jobbra mutató mutató"] # 0x25ba (en: 'black right pointing pointer', DeepL translation)
+ - "▻": [T: "fehér jobbra mutató mutató"] # 0x25bb (en: 'white right pointing pointer', DeepL translation)
+ - "▼": [T: "fekete lefelé mutató háromszög"] # 0x25bc (en: 'black down pointing triangle', DeepL translation)
+ - "▽": [T: "fehér lefelé mutató háromszög"] # 0x25bd (en: 'white down pointing triangle', DeepL translation)
+ - "▾": [T: "fekete lefelé mutató kis háromszög"] # 0x25be (en: 'black down pointing small triangle', DeepL translation)
+ - "▿": [T: "fehér lefelé mutató kis háromszög"] # 0x25bf (en: 'white down pointing small triangle', DeepL translation)
+ - "◀": [T: "fekete balra mutató háromszög"] # 0x25c0 (en: 'black left pointing triangle', DeepL translation)
+ - "◁": [T: "fehér balra mutató kis háromszög"] # 0x25c1 (en: 'white left pointing triangle', DeepL translation)
+ - "◂": [T: "fekete balra mutató kis háromszög"] # 0x25c2 (en: 'black left pointing small triangle', DeepL translation)
+ - "◃": [T: "fehér balra mutató kis háromszög"] # 0x25c3 (en: 'white left pointing small triangle', DeepL translation)
+ - "◄": [T: "fekete balra mutató mutató"] # 0x25c4 (en: 'black left pointing pointer', DeepL translation)
+ - "◅": [T: "fehér balra mutató mutató"] # 0x25c5 (en: 'white left pointing pointer', DeepL translation)
+ - "◆": [T: "fekete gyémánt"] # 0x25c6 (en: 'black diamond', DeepL translation)
+ - "◇": [T: "fehér rombusz"] # 0x25c7 (en: 'white diamond', DeepL translation)
+ - "◈": [T: "fehér rombusz, benne fekete kis rombusz"] # 0x25c8 (en: 'white diamond containing black small diamond', DeepL translation)
+ - "◉": [T: "halszem"] # 0x25c9 (en: 'fisheye', DeepL translation)
+ - "◊": [T: "rombusz"] # 0x25ca (en: 'lozenge', DeepL translation)
+ - "○": [T: "fehér kör"] # 0x25cb (en: 'white circle', DeepL translation)
+ - "◌": [T: "pontozott kör"] # 0x25cc (en: 'dotted circle', DeepL translation)
+ - "◍": [T: "kör függőleges kitöltéssel"] # 0x25cd (en: 'circle with vertical fill', DeepL translation)
+ - "◎": [T: "célpont"] # 0x25ce (DeepL translation)
+ - "●": [T: "fekete kör"] # 0x25cf (en: 'black circle', DeepL translation)
+ - "◐": [T: "kör, amelynek bal fele fekete"] # 0x25d0 (en: 'circle with left half black', DeepL translation)
+ - "◑": [T: "kör, amelynek jobb fele fekete"] # 0x25d1 (en: 'circle with right half black', DeepL translation)
- "◒": [t: "kör alsó felével fekete"] # 0x25d2 (en: 'circle with lower half black', DeepL translation)
- "◓": [t: "kör felső fele fekete"] # 0x25d3 (en: 'circle with upper half black', DeepL translation)
- "◔": [t: "kör jobb felső kvadráns fekete"] # 0x25d4 (en: 'circle with upper right quadrant black', DeepL translation)
@@ -1717,17 +1717,17 @@
- "⟂": # 0x27c2
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
- t: "merőleges" # (en: 'perpendicular to', DeepL translation)
- "⟃": # 0x27c3
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
- t: "nyitott részhalmaza" # (en: 'an open subset of', DeepL translation)
- "⟄": # 0x27c4
- test:
if: "$Verbosity!='Terse'"
- then: [t: "az"] # (en: 'is', DeepL translation)
+ then: [T: "a(z)"] # (en: 'is', DeepL translation)
- t: "egy nyitott szuperszett" # (en: 'an open superset of', DeepL translation)
- "⟅": [t: "bal oldali s alakú zsákhatároló"] # 0x27c5 (en: 'left s-shaped bag delimiter', DeepL translation)
- "⟆": [t: "jobb oldali s alakú zsákhatár"] # 0x27c6 (en: 'right s-shaped bag delimiter', DeepL translation)
@@ -3190,50 +3190,50 @@
# script chars in math alphabetic block and also MathType private use area
- "𝒜-𝒵": # 0x1d49c - 0x1d4b5
- - t: "script" # (DeepL translation)
- - spell: "translate('.', '𝒜𝒞𝒟𝒢𝒥𝒦𝒩𝒪𝒫𝒬𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"
+ - T: "alsó index" # (DeepL translation)
+ - SPELL: "translate('.', '𝒜𝒞𝒟𝒢𝒥𝒦𝒩𝒪𝒫𝒬𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"
- "-": # 0xf100 - 0xf119
- - t: "script" # (DeepL translation)
- - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"
+ - T: "alsó index" # (DeepL translation)
+ - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"
- "𝒶-𝓏": # 0x1d4b6 - 0x1d4cf
- - t: "script" # (DeepL translation)
- - spell: "translate('.', '𝒶𝒷𝒸𝒹𝒻𝒽𝒾𝒿𝓀𝓁𝓂𝓃𝓅𝓆𝓇𝓈𝓉𝓊𝓋𝓌𝓍𝓎𝓏', 'abcdefghijklmnopqrstuvwxyz')"
+ - T: "alsó index" # (DeepL translation)
+ - SPELL: "translate('.', '𝒶𝒷𝒸𝒹𝒻𝒽𝒾𝒿𝓀𝓁𝓂𝓃𝓅𝓆𝓇𝓈𝓉𝓊𝓋𝓌𝓍𝓎𝓏', 'abcdefghijklmnopqrstuvwxyz')"
- "-": # 0xf11a - 0xf133
- - t: "script" # (DeepL translation)
- - spell: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')"
+ - T: "alsó index" # (DeepL translation)
+ - SPELL: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')"
# bold script chars in math alphabetic block and also MathType private use area
- "𝓐-𝓩": # 0x1d4d0 - 0x1d4e9
- - t: "script" # (DeepL translation)
+ - T: "alsó index" # (DeepL translation)
- test:
if: "not($IgnoreBold)"
- then: [t: "félkövér"] # (en: 'bold', DeepL translation)
- - spell: "translate('.', '𝓐𝓑𝓒𝓓𝓔𝓕𝓖𝓗𝓘𝓙𝓚𝓛𝓜𝓝𝓞𝓟𝓠𝓡𝓢𝓣𝓤𝓥𝓦𝓧𝓨𝓩', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"
+ then: [T: "félkövér"] # (en: 'bold', DeepL translation)
+ - SPELL: "translate('.', '𝓐𝓑𝓒𝓓𝓔𝓕𝓖𝓗𝓘𝓙𝓚𝓛𝓜𝓝𝓞𝓟𝓠𝓡𝓢𝓣𝓤𝓥𝓦𝓧𝓨𝓩', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"
- "-": # 0xf140 - 0xf159
- - t: "script" # (DeepL translation)
+ - T: "alsó index" # (DeepL translation)
- test:
if: "not($IgnoreBold)"
- then: [t: "félkövér"] # (en: 'bold', DeepL translation)
- - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"
+ then: [T: "félkövér"] # (en: 'bold', DeepL translation)
+ - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"
- "𝓪-𝔃": # 0x1d4ea - 0x1d503
- - t: "script" # (DeepL translation)
+ - T: "alsó index" # (DeepL translation)
- test:
if: "not($IgnoreBold)"
- then: [t: "félkövér"] # (en: 'bold', DeepL translation)
- - spell: "translate('.', '𝓪𝓫𝓬𝓭𝓮𝓯𝓰𝓱𝓲𝓳𝓴𝓵𝓶𝓷𝓸𝓹𝓺𝓻𝓼𝓽𝓾𝓿𝔀𝔁𝔂𝔃', 'abcdefghijklmnopqrstuvwxyz')"
+ then: [T: "félkövér"] # (en: 'bold', DeepL translation)
+ - SPELL: "translate('.', '𝓪𝓫𝓬𝓭𝓮𝓯𝓰𝓱𝓲𝓳𝓴𝓵𝓶𝓷𝓸𝓹𝓺𝓻𝓼𝓽𝓾𝓿𝔀𝔁𝔂𝔃', 'abcdefghijklmnopqrstuvwxyz')"
- "-": # 0xf15a - 0xf173
- - t: "script" # (DeepL translation)
+ - T: "alsó index" # (DeepL translation)
- test:
if: "not($IgnoreBold)"
- then: [t: "félkövér"] # (en: 'bold', DeepL translation)
- - spell: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')"
+ then: [T: "félkövér"] # (en: 'bold', DeepL translation)
+ - SPELL: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')"
- "-": # 0xf180 - 0xf199
- - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"
+ - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"
- "": # 0xf19a
- test:
@@ -3248,7 +3248,7 @@
if: "$SpeechOverrides_CapitalLetters = ''"
then_test:
if: "$Impairment = 'Blindness'"
- then: [t: "nagybetű"] # (en: 'cap', DeepL translation)
+ then: [T: "nagy"] # (en: 'cap', DeepL translation)
else: [x: "$SpeechOverrides_CapitalLetters"]
- pitch:
value: "$CapitalLetters_Pitch"
@@ -3266,7 +3266,7 @@
if: "$SpeechOverrides_CapitalLetters = ''"
then_test:
if: "$Impairment = 'Blindness'"
- then: [t: "nagybetű"] # (en: 'cap', DeepL translation)
+ then: [T: "nagy"] # (en: 'cap', DeepL translation)
else: [x: "$SpeechOverrides_CapitalLetters"]
- pitch:
value: "$CapitalLetters_Pitch"
@@ -3284,7 +3284,7 @@
if: "$SpeechOverrides_CapitalLetters = ''"
then_test:
if: "$Impairment = 'Blindness'"
- then: [t: "nagybetű"] # (en: 'cap', DeepL translation)
+ then: [T: "nagy"] # (en: 'cap', DeepL translation)
else: [x: "$SpeechOverrides_CapitalLetters"]
- pitch:
value: "$CapitalLetters_Pitch"
diff --git a/src/braille.rs b/src/braille.rs
index 497678732..fddda2c8f 100644
--- a/src/braille.rs
+++ b/src/braille.rs
@@ -3132,8 +3132,30 @@ mod tests {
use crate::interface::*;
use log::debug;
+ fn braille_test(f: F) -> Result<()>
+ where
+ F: FnOnce() -> Result<()> + std::panic::UnwindSafe,
+ {
+ use std::panic::{catch_unwind, AssertUnwindSafe};
+ init_panic_handler();
+ let result = catch_unwind(AssertUnwindSafe(f));
+ return report_any_panic(result);
+ }
+
+ fn init_braille_mathml(mathml: &str) -> Result<()> {
+ use std::panic::{catch_unwind, AssertUnwindSafe};
+ init_panic_handler();
+ let result = catch_unwind(AssertUnwindSafe(|| {
+ set_rules_dir(super::super::abs_rules_dir_path())?;
+ set_mathml(mathml)?;
+ return Ok( () );
+ }));
+ return report_any_panic(result);
+ }
+
#[test]
fn ueb_highlight_24() -> Result<()> { // issue 24
+ return braille_test(|| {
let mathml_str = "";
- crate::interface::set_rules_dir(super::super::abs_rules_dir_path()).unwrap();
- set_mathml(mathml_str).unwrap();
- set_preference("BrailleCode", "UEB").unwrap();
- set_preference("BrailleNavHighlight", "All").unwrap();
+ init_braille_mathml(mathml_str)?;
+ set_preference("BrailleCode", "UEB")?;
+ set_preference("BrailleNavHighlight", "All")?;
let braille = get_braille("id-2")?;
assert_eq!("⣼⣙⠰⠁⠉", braille);
set_navigation_node("id-2", 0)?;
@@ -3157,11 +3178,13 @@ mod tests {
set_navigation_node("id-4", 0)?;
assert_eq!( get_braille_position()?, (2,4));
return Ok( () );
+ });
}
#[test]
// This test probably should be repeated for each braille code and be taken out of here
fn find_mathml_from_braille() -> Result<()> {
+ return braille_test(|| {
use std::time::Instant;
let mathml_str = "";
- crate::interface::set_rules_dir(super::super::abs_rules_dir_path()).unwrap();
- set_mathml(mathml_str).unwrap();
- set_preference("BrailleNavHighlight", "Off").unwrap();
+ init_braille_mathml(mathml_str)?;
+ set_preference("BrailleNavHighlight", "Off")?;
- set_preference("BrailleCode", "Nemeth").unwrap();
+ set_preference("BrailleCode", "Nemeth")?;
let _braille = get_braille("")?;
let answers= &[2, 3, 3, 3, 3, 4, 7, 8, 9, 9, 10, 13, 12, 14, 12, 15, 17, 19, 21, 10, 4, 23, 25, 4];
let answers = answers.map(|num| format!("id-{}", num));
@@ -3217,7 +3239,7 @@ mod tests {
assert_eq!(*answer, id, "\nNemeth test ith position={}", i);
}
- set_preference("BrailleCode", "UEB").unwrap();
+ set_preference("BrailleCode", "UEB")?;
let _braille = get_braille("")?;
let answers= &[0, 0, 0, 2, 3, 3, 3, 3, 4, 7, 7, 8, 9, 9, 10, 13, 12, 14, 14, 15, 15, 17, 17, 19, 19, 21, 10, 4, 4, 23, 23, 25, 25, 4, 0, 0];
let answers = answers.map(|num| format!("id-{}", num));
@@ -3230,7 +3252,7 @@ mod tests {
debug!("Time taken: {}ms", instant.elapsed().as_millis());
assert_eq!(*answer, id, "\nUEB test ith position={}", i);
}
- set_preference("BrailleCode", "CMU").unwrap();
+ set_preference("BrailleCode", "CMU")?;
let braille = get_braille("")?;
let answers= &[2, 3, 5, 7, 8, 9, 9, 9, 10, 10, 11, 13, 12, 14, 14, 15, 17, 17, 19, 19, 21, 11, 5, 4, 22, 23, 23, 25, 25, 22,];
let answers = answers.map(|num| format!("id-{}", num));
@@ -3245,21 +3267,23 @@ mod tests {
assert_eq!(*answer, id, "\nCMU test ith position={}", i);
}
return Ok( () );
+ });
}
#[test]
#[allow(non_snake_case)]
fn test_UEB_start_mode() -> Result<()> {
+ return braille_test(|| {
let mathml_str = "";
- crate::interface::set_rules_dir(super::super::abs_rules_dir_path()).unwrap();
- set_mathml(mathml_str).unwrap();
- set_preference("BrailleCode", "UEB").unwrap();
- set_preference("UEB_START_MODE", "Grade2").unwrap();
+ init_braille_mathml(mathml_str)?;
+ set_preference("BrailleCode", "UEB")?;
+ set_preference("UEB_START_MODE", "Grade2")?;
let braille = get_braille("")?;
assert_eq!("⠭⠰⠔⠝", braille, "Grade2");
- set_preference("UEB_START_MODE", "Grade1").unwrap();
+ set_preference("UEB_START_MODE", "Grade1")?;
let braille = get_braille("")?;
assert_eq!("⠭⠔⠝", braille, "Grade1");
return Ok( () );
+ });
}
}
diff --git a/src/chemistry.rs b/src/chemistry.rs
index 3890e3ffe..742b1ba1a 100644
--- a/src/chemistry.rs
+++ b/src/chemistry.rs
@@ -1878,71 +1878,133 @@ mod chem_tests {
#[allow(unused_imports)]
use super::super::init_logger;
- use super::super::are_strs_canonically_equal;
+ use crate::errors::{bail, Result};
+ use super::super::are_strs_canonically_equal_result;
+ use crate::interface::{get_element, init_panic_handler, report_any_panic, trim_element};
+ use sxd_document::parser;
+ use std::panic::{catch_unwind, AssertUnwindSafe};
use super::*;
- fn parse_mathml_string(test: &str, test_mathml: F) -> bool
- where F: Fn(Element) -> bool {
- use sxd_document::parser;
- use crate::interface::{get_element, trim_element};
-
-
- let test = if test.starts_with("", test)};
- let new_package = parser::parse(test);
- if let Err(e) = new_package {
- panic!("Invalid MathML input:\n{}\nError is: {}", &test, &e.to_string());
- }
-
- let new_package = new_package.unwrap();
+ fn chem_test(f: F) -> Result<()>
+ where
+ F: FnOnce() -> Result<()> + std::panic::UnwindSafe,
+ {
+ init_panic_handler();
+ let result = catch_unwind(AssertUnwindSafe(f));
+ return report_any_panic(result);
+ }
+
+ fn with_parsed_mrow(test: &str, f: F) -> Result
+ where
+ F: FnOnce(Element) -> Result,
+ {
+ let wrapped;
+ let math_str = if test.starts_with("", test);
+ &wrapped
+ };
+ let new_package = parser::parse(math_str)
+ .map_err(|e| anyhow::anyhow!("Invalid MathML input:\n{math_str}\nError is: {e}"))?;
let mut mathml = get_element(&new_package);
trim_element(mathml, false);
mathml = as_element(mathml.children()[0]);
- return test_mathml(mathml);
+ return f(mathml);
+ }
+
+ fn collect_elements_or_err<'a>(mrow: Element<'a>, test: &str) -> Result> {
+ collect_elements(mrow).ok_or_else(|| {
+ anyhow::anyhow!("collect_elements returned None for test input:\n{test}")
+ })
+ }
+
+ fn assert_chem_elements(test: &str, expected: bool, check: impl Fn(&[&str]) -> bool) -> Result<()> {
+ let actual = with_parsed_mrow(test, |mrow| {
+ let elements = collect_elements_or_err(mrow, test)?;
+ return Ok(check(&elements));
+ })?;
+ if actual != expected {
+ bail!("chemistry check failed for:\n{test}\nexpected: {expected}, got: {actual}");
+ }
+ return Ok( () );
+ }
+
+ fn assert_chem_elements_on_child(
+ test: &str,
+ child_index: usize,
+ expected: bool,
+ check: impl Fn(&[&str]) -> bool,
+ ) -> Result<()> {
+ let actual = with_parsed_mrow(test, |mrow| {
+ let child = as_element(mrow.children()[child_index]);
+ let elements = collect_elements_or_err(child, test)?;
+ return Ok(check(&elements));
+ })?;
+ if actual != expected {
+ bail!("chemistry check failed for:\n{test}\nexpected: {expected}, got: {actual}");
+ }
+ return Ok( () );
+ }
+
+ fn assert_chem_property(test: &str, expected: bool, check: impl Fn(Element) -> bool) -> Result<()> {
+ let actual = with_parsed_mrow(test, |mrow| Ok(check(mrow)))?;
+ if actual != expected {
+ bail!("chemistry check failed for:\n{test}\nexpected: {expected}, got: {actual}");
+ }
+ return Ok( () );
}
#[test]
- fn test_noble_element() {
+ fn test_noble_element() -> Result<()> {
+ return chem_test(|| {
// mathml test strings need to be canonical MathML since we aren't testing canonicalize()
- let test = " Na Cl "; //
- assert!( !parse_mathml_string(test, |mathml| has_noble_element( &collect_elements(mathml).unwrap() )) );
- let test = " Ar Cl "; //
- assert!( parse_mathml_string(test, |mathml| has_noble_element( &collect_elements(mathml).unwrap() )) );
- let test = " Ne "; //
- assert!( parse_mathml_string(test, |mathml| has_noble_element( &collect_elements(mathml).unwrap() )) );
+ let test = " Na Cl ";
+ assert_chem_elements(test, false, has_noble_element)?;
+ let test = " Ar Cl ";
+ assert_chem_elements(test, true, has_noble_element)?;
+ let test = " Ne ";
+ assert_chem_elements(test, true, has_noble_element)?;
+ return Ok( () );
+ });
}
#[test]
- fn test_alphabetical_order() {
+ fn test_alphabetical_order() -> Result<()> {
+ return chem_test(|| {
// mathml test strings need to be canonical MathML since we aren't testing canonicalize()
let test = r#"
C6
H14
"#;
- assert!( parse_mathml_string(test, |mathml| is_alphabetical( &collect_elements(mathml).unwrap() )) );
+ assert_chem_elements(test, true, is_alphabetical)?;
let test = r#"
C6
H12
O6
"#;
- assert!( parse_mathml_string(test, |mathml| is_alphabetical( &collect_elements(mathml).unwrap() )) );
+ assert_chem_elements(test, true, is_alphabetical)?;
let test = " B C O"; // "C" should be first
- assert!( !parse_mathml_string(test, |mathml| is_alphabetical( &collect_elements(mathml).unwrap() )) );
+ assert_chem_elements(test, false, is_alphabetical)?;
let test = " P B O"; // not alphabetical
- assert!( !parse_mathml_string(test, |mathml| is_alphabetical( &collect_elements(mathml).unwrap() )) );
+ assert_chem_elements(test, false, is_alphabetical)?;
+ return Ok( () );
+ });
}
#[test]
- fn test_is_structural() {
+ fn test_is_structural() -> Result<()> {
+ return chem_test(|| {
// mathml test strings need to be canonical MathML since we aren't testing canonicalize()
let test = r#"
C6
H14
"#;
- assert!( !parse_mathml_string(test, |mathml| is_structural( &collect_elements(mathml).unwrap() )) );
+ assert_chem_elements(test, false, is_structural)?;
let test = " B C O";
- assert!( !parse_mathml_string(test, |mathml| is_structural( &collect_elements(mathml).unwrap() )) );
+ assert_chem_elements(test, false, is_structural)?;
let test = " H O H";
- assert!( parse_mathml_string(test, |mathml| is_structural( &collect_elements(mathml).unwrap() )) );
+ assert_chem_elements(test, true, is_structural)?;
let test = "
H
@@ -1960,28 +2022,31 @@ mod chem_tests {
";
- assert!( parse_mathml_string(test, |mathml| is_structural( &collect_elements(mathml).unwrap() )) );
+ assert_chem_elements(test, true, is_structural)?;
+ return Ok( () );
+ });
}
#[test]
- fn test_electronegativity_order() {
+ fn test_electronegativity_order() -> Result<()> {
+ return chem_test(|| {
// mathml test strings need to be canonical MathML since we aren't testing canonicalize()
let test = r#"
N
H3
"#;
- assert!( parse_mathml_string(test, |mathml| is_ordered_by_electronegativity( &collect_elements(mathml).unwrap() )) );
+ assert_chem_elements(test, true, is_ordered_by_electronegativity)?;
let test = r#"
O
F2
"#;
- assert!( parse_mathml_string(test, |mathml| is_ordered_by_electronegativity( &collect_elements(mathml).unwrap() )) );
+ assert_chem_elements(test, true, is_ordered_by_electronegativity)?;
let test = r#"
Rb15
Hg16
"#;
- assert!( parse_mathml_string(test, |mathml| is_ordered_by_electronegativity( &collect_elements(mathml).unwrap() )) );
+ assert_chem_elements(test, true, is_ordered_by_electronegativity)?;
let test = r#"
[
@@ -1990,108 +2055,123 @@ mod chem_tests {
]
8-
"#;
- assert!( parse_mathml_string(test, |mathml| is_ordered_by_electronegativity( &collect_elements(as_element(mathml.children()[0])).unwrap() )) );
+ assert_chem_elements_on_child(test, 0, true, is_ordered_by_electronegativity)?;
let test = r#"
Si
H2
Br
Cl
"#;
- assert!( parse_mathml_string(test, |mathml| is_ordered_by_electronegativity( &collect_elements(mathml).unwrap() )) );
+ assert_chem_elements(test, true, is_ordered_by_electronegativity)?;
+ return Ok( () );
+ });
}
#[test]
- fn test_order() {
+ fn test_order() -> Result<()> {
+ return chem_test(|| {
let test = r#"
C2
H4
(N H 2 ) 2
"#;
- assert!( parse_mathml_string(test, is_order_ok) );
+ assert_chem_property(test, true, is_order_ok)?;
let test = r#"
Fe
O
(O H )
"#;
- assert!( parse_mathml_string(test, is_order_ok) );
+ assert_chem_property(test, true, is_order_ok)?;
let test = r#" // R-4.4.3.3 -- Chain compound doesn't fit rules but should be accepted
Br
S
C
N
"#;
- assert!( parse_mathml_string(test, |mathml| likely_chem_formula(mathml)==5) );
+ assert_chem_property(test, true, |mathml| likely_chem_formula(mathml) == 5)?;
+ return Ok( () );
+ });
}
#[test]
- fn test_simple_double_bond() {
+ fn test_simple_double_bond() -> Result<()> {
+ return chem_test(|| {
let test1 = r#"C=C"#;
- assert!( parse_mathml_string(test1, |mathml| likely_chem_formula(mathml) < CHEMISTRY_THRESHOLD) ); // just under threshold
+ assert_chem_property(test1, true, |mathml| likely_chem_formula(mathml) < CHEMISTRY_THRESHOLD)?; // just under threshold
let test2 = r#"C∷O"#;
- assert!( parse_mathml_string(test2, |mathml| likely_chem_formula(mathml)==CHEMISTRY_THRESHOLD) );
+ assert_chem_property(test2, true, |mathml| likely_chem_formula(mathml) == CHEMISTRY_THRESHOLD)?;
let test3 = r#"N=N"#;
- assert!( parse_mathml_string(test3, |mathml| likely_chem_formula(mathml) < CHEMISTRY_THRESHOLD) ); // just under threshold
+ assert_chem_property(test3, true, |mathml| likely_chem_formula(mathml) < CHEMISTRY_THRESHOLD)?; // just under threshold
let test4 = r#"Sn=Sn"#;
- assert!( parse_mathml_string(test4, |mathml| likely_chem_formula(mathml) == 8) );
+ assert_chem_property(test4, true, |mathml| likely_chem_formula(mathml) == 8)?;
let test5 = r#"O=S"#;
- assert!( parse_mathml_string(test5, |mathml| likely_chem_formula(mathml) < CHEMISTRY_THRESHOLD) ); // just under threshold
+ assert_chem_property(test5, true, |mathml| likely_chem_formula(mathml) < CHEMISTRY_THRESHOLD)?; // just under threshold
let test10 = r#"K=K"#;
- assert!( parse_mathml_string(test10, |mathml| likely_chem_formula(mathml) == NOT_CHEMISTRY) );
+ assert_chem_property(test10, true, |mathml| likely_chem_formula(mathml) == NOT_CHEMISTRY)?;
let test11 = r#"C=K"#;
- assert!( parse_mathml_string(test11, |mathml| likely_chem_formula(mathml) == NOT_CHEMISTRY) );
+ assert_chem_property(test11, true, |mathml| likely_chem_formula(mathml) == NOT_CHEMISTRY)?;
+ return Ok( () );
+ });
}
#[test]
- fn test_double_bond() {
+ fn test_double_bond() -> Result<()> {
+ return chem_test(|| {
let test1 = r#"CH2=C"#;
- assert!( parse_mathml_string(test1, |mathml| likely_chem_formula(mathml)==8) );
+ assert_chem_property(test1, true, |mathml| likely_chem_formula(mathml) == 8)?;
let test2 = r#"CH2=
CHR"#;
- assert!( parse_mathml_string(test2, |mathml| likely_chem_formula(mathml)==12) );
+ assert_chem_property(test2, true, |mathml| likely_chem_formula(mathml) == 12)?;
let test3 = r#"H2C=
CH2"#;
- assert!( parse_mathml_string(test3, |mathml| likely_chem_formula(mathml)==11) );
+ assert_chem_property(test3, true, |mathml| likely_chem_formula(mathml) == 11)?;
let test4 = r#"H-N=N-H"#;
- assert!( parse_mathml_string(test4, |mathml| likely_chem_formula(mathml)==10) );
+ assert_chem_property(test4, true, |mathml| likely_chem_formula(mathml) == 10)?;
let test10 = r#"CH3=C"#;
- assert!( parse_mathml_string(test10, |mathml| likely_chem_formula(mathml)==NOT_CHEMISTRY) );
+ assert_chem_property(test10, true, |mathml| likely_chem_formula(mathml) == NOT_CHEMISTRY)?;
+ return Ok( () );
+ });
}
#[test]
#[ignore] // It would be good to say "not chemistry" for this, but there aren't rules for that at the moment
- fn test_water_bond() {
+ fn test_water_bond() -> Result<()> {
+ return chem_test(|| {
let test11 = r#"H2O=O"#;
- assert!( parse_mathml_string(test11, |mathml| {println!("val={}", likely_chem_formula(mathml)); likely_chem_formula(mathml)==8}) );
- // assert!( parse_mathml_string(test11, |mathml| likely_chem_formula(mathml)==NOT_CHEMISTRY) );
+ assert_chem_property(test11, true, |mathml| likely_chem_formula(mathml) == 8)?;
+ return Ok( () );
+ });
}
#[test]
- fn test_triple_bond() {
+ fn test_triple_bond() -> Result<()> {
+ return chem_test(|| {
let test1 = r#"C≡C"#;
- assert!( parse_mathml_string(test1, |mathml| likely_chem_formula(mathml) < CHEMISTRY_THRESHOLD) );
+ assert_chem_property(test1, true, |mathml| likely_chem_formula(mathml) < CHEMISTRY_THRESHOLD)?;
let test2 = r#"C:::O"#;
- assert!( parse_mathml_string(test2, |mathml| likely_chem_formula(mathml)==CHEMISTRY_THRESHOLD) );
+ assert_chem_property(test2, true, |mathml| likely_chem_formula(mathml) == CHEMISTRY_THRESHOLD)?;
let test3 = r#"H-C≡C-H"#;
- assert!( parse_mathml_string(test3, |mathml| likely_chem_formula(mathml)==10) );
+ assert_chem_property(test3, true, |mathml| likely_chem_formula(mathml) == 10)?;
let test4 = r#"H-C≡C-H"#;
- assert!( parse_mathml_string(test4, |mathml| likely_chem_formula(mathml)==10) );
+ assert_chem_property(test4, true, |mathml| likely_chem_formula(mathml) == 10)?;
let test5 = r#"N-C≡C-N"#;
- assert!( parse_mathml_string(test5, |mathml| likely_chem_formula(mathml)==10) );
+ assert_chem_property(test5, true, |mathml| likely_chem_formula(mathml) == 10)?;
let test6 = r#"H-C≡
C-CH3"#; // 1-Propyne
- assert!( parse_mathml_string(test6, |mathml| likely_chem_formula(mathml)==14) );
- // assert!( parse_mathml_string(test6, |mathml| {println!("val={}", likely_chem_formula(mathml)); likely_chem_formula(mathml)==10}) );
+ assert_chem_property(test6, true, |mathml| likely_chem_formula(mathml) == 14)?;
let test10 = r#"O:::S"#;
- assert!( parse_mathml_string(test10, |mathml| likely_chem_formula(mathml)==NOT_CHEMISTRY) );
+ assert_chem_property(test10, true, |mathml| likely_chem_formula(mathml) == NOT_CHEMISTRY)?;
let test11 = r#"Pb≡Pb"#;
- assert!( parse_mathml_string(test11, |mathml| likely_chem_formula(mathml)==NOT_CHEMISTRY) );
+ assert_chem_property(test11, true, |mathml| likely_chem_formula(mathml) == NOT_CHEMISTRY)?;
let test12 = r#"C≡K"#;
- assert!( parse_mathml_string(test12, |mathml| likely_chem_formula(mathml)==NOT_CHEMISTRY) );
+ assert_chem_property(test12, true, |mathml| likely_chem_formula(mathml) == NOT_CHEMISTRY)?;
+ return Ok( () );
+ });
}
#[test]
- fn split_mi() {
+ fn split_mi() -> Result<()> {
let test = "";
let target = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn no_split_mi() {
+ fn no_split_mi() -> Result<()> {
let test = "";
let target = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn combine_mi() {
+ fn combine_mi() -> Result<()> {
let test = "";
let target = " ";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn no_combine() {
+ fn no_combine() -> Result<()> {
let test = "";
let target = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn add_script() {
+ fn add_script() -> Result<()> {
let test = "";
let target = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn add_script_bug_287() {
+ fn add_script_bug_287() -> Result<()> {
let test = r#""#;
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn salt() {
+ fn salt() -> Result<()> {
let test = "";
let target = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn water() {
+ fn water() -> Result<()> {
let test = "";
let target = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn mhchem_water() {
+ fn mhchem_water() -> Result<()> {
let test = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn carbon() {
+ fn carbon() -> Result<()> {
let test = ""; // not enough to trigger recognition
let target = " ";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn sulfate() {
+ fn sulfate() -> Result<()> {
let test = "
";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn aluminum_sulfate() {
+ fn aluminum_sulfate() -> Result<()> {
let test = "";
let target = " ";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn ethanol_bonds() {
+ fn ethanol_bonds() -> Result<()> {
let test = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn dichlorine_hexoxide() {
+ fn dichlorine_hexoxide() -> Result<()> {
// init_logger();
let test = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn ethylene_with_bond() {
+ fn ethylene_with_bond() -> Result<()> {
let test = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn ferric_chloride_aq() {
+ fn ferric_chloride_aq() -> Result<()> {
let test = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn ferric_chloride_aq_as_mi() {
+ fn ferric_chloride_aq_as_mi() -> Result<()> {
let test = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn chemtype_ammonia() {
+ fn chemtype_ammonia() -> Result<()> {
let test = r#""#;
let target = " ";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn mhchem_ammonia() {
+ fn mhchem_ammonia() -> Result<()> {
let test = r#"";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn mhchem_so4() {
+ fn mhchem_so4() -> Result<()> {
let test = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn mhchem_short_ion() {
+ fn mhchem_short_ion() -> Result<()> {
let test = " ";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn mhchem_ions_and_state() {
+ fn mhchem_ions_and_state() -> Result<()> {
let test = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn ethylene_with_colon_bond() {
+ fn ethylene_with_colon_bond() -> Result<()> {
let test = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn mhchem_u238() {
+ fn mhchem_u238() -> Result<()> {
let test = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn mhchem_hcl_aq() {
+ fn mhchem_hcl_aq() -> Result<()> {
let test = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn mhchem_nested_sub() {
+ fn mhchem_nested_sub() -> Result<()> {
// from \ce{(CH3)3}
let test = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn mhchem_isotopes() {
+ fn mhchem_isotopes() -> Result<()> {
// from \ce{^{18}O{}^{16}O}
let test = "";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn merge_bug_274() {
+ fn merge_bug_274() -> Result<()> {
let test = r#"
";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn merge_bug_303() {
+ fn merge_bug_303() -> Result<()> {
let test = r#"
";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
#[test]
- fn mtd_assert_bug_393() {
+ fn mtd_assert_bug_393() -> Result<()> {
let test = r#"
";
- assert!(are_strs_canonically_equal(test, target, &[]));
+ are_strs_canonically_equal_result(test, target, &[])
}
}
diff --git a/src/interface.rs b/src/interface.rs
index 55fe74698..9c1e53b2d 100644
--- a/src/interface.rs
+++ b/src/interface.rs
@@ -1137,6 +1137,16 @@ mod tests {
use super::super::init_logger;
use super::*;
+ fn interface_test(f: F) -> Result<()>
+ where
+ F: FnOnce() -> Result<()> + std::panic::UnwindSafe,
+ {
+ use std::panic::{catch_unwind, AssertUnwindSafe};
+ init_panic_handler();
+ let result = catch_unwind(AssertUnwindSafe(f));
+ return report_any_panic(result);
+ }
+
fn are_parsed_strs_equal(test: &str, target: &str) -> bool {
let test_package = &parser::parse(test).expect("Failed to parse input");
let test_doc = test_package.as_document();
@@ -1228,13 +1238,13 @@ mod tests {
}
#[test]
- fn test_entities() {
- // this forces initialization
- set_rules_dir(super::super::abs_rules_dir_path()).unwrap();
+ fn test_entities() -> Result<()> {
+ return interface_test(|| {
+ set_rules_dir(super::super::abs_rules_dir_path())?;
- let entity_str = set_mathml("").unwrap();
+ let entity_str = set_mathml("")?;
let converted_str =
- set_mathml("").unwrap();
+ set_mathml("")?;
// need to remove unique ids
static ID_MATCH: LazyLock = LazyLock::new(|| Regex::new(r#"id='.+?' "#).unwrap());
@@ -1244,26 +1254,27 @@ mod tests {
let entity_str = set_mathml(
"",
- )
- .unwrap();
+ )?;
let converted_str =
- set_mathml("").unwrap();
+ set_mathml("")?;
let entity_str = ID_MATCH.replace_all(&entity_str, "");
let converted_str = ID_MATCH.replace_all(&converted_str, "");
assert_eq!(entity_str, converted_str, "special entities quote test failed");
let entity_str =
- set_mathml("").unwrap();
+ set_mathml("")?;
let converted_str =
- set_mathml("")
- .unwrap();
+ set_mathml("")?;
let entity_str = ID_MATCH.replace_all(&entity_str, "");
let converted_str = ID_MATCH.replace_all(&converted_str, "");
assert_eq!(entity_str, converted_str, "special entities <,>,& test failed");
+ return Ok( () );
+ });
}
#[test]
- fn can_recover_from_invalid_set_rules_dir() {
+ fn can_recover_from_invalid_set_rules_dir() -> Result<()> {
+ return interface_test(|| {
use std::env;
// MathCAT will check the env var "MathCATRulesDir" as an override, so the following test might succeed if we don't override the env var
unsafe { env::set_var("MathCATRulesDir", "MathCATRulesDir"); } // safe because we are single threaded
@@ -1274,6 +1285,8 @@ mod tests {
super::super::abs_rules_dir_path()
);
assert!(set_mathml("").is_ok());
+ return Ok( () );
+ });
}
#[test]
@@ -1312,8 +1325,9 @@ mod tests {
}
#[test]
- fn stack_overflow_protection() {
- set_rules_dir(super::super::abs_rules_dir_path()).unwrap();
+ fn stack_overflow_protection() -> Result<()> {
+ return interface_test(|| {
+ set_rules_dir(super::super::abs_rules_dir_path())?;
let mut bad_mathml = String::from("");
assert_eq!(set_mathml(bad_mathml).unwrap_err().to_string(), "MathML is too deeply nested to process");
+ return Ok( () );
+ });
}
#[test]
- fn old_mathml_cleared_on_error() {
- set_rules_dir(super::super::abs_rules_dir_path()).unwrap();
+ fn old_mathml_cleared_on_error() -> Result<()> {
+ return interface_test(|| {
+ set_rules_dir(super::super::abs_rules_dir_path())?;
let good_mathml = "";
- set_mathml(good_mathml).unwrap();
+ set_mathml(good_mathml)?;
let bad_mathml = "";
assert!(set_mathml(bad_mathml).is_err());
- assert!(get_spoken_text().unwrap() == "");
- set_mathml(good_mathml).unwrap();
+ assert!(get_spoken_text()? == "");
+ set_mathml(good_mathml)?;
let bad_mathml = "";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
debug!("--- Enhanced ---");
- MATHML_INSTANCE.with(|package_instance| {
+ MATHML_INSTANCE.with(|package_instance| -> Result<()> {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomIn", mathml, "msup");
- test_command("MoveNext", mathml, "id-3");
- });
+ test_command("ZoomIn", mathml, "msup")?;
+ test_command("MoveNext", mathml, "id-3")?;
+ return Ok( () );
+ })?;
- init_default_prefs(mathml_str, "Simple");
+ init_default_prefs(mathml_str, "Simple")?;
debug!("--- Simple ---");
- MATHML_INSTANCE.with(|package_instance: &RefCell| {
+ MATHML_INSTANCE.with(|package_instance: &RefCell| -> Result<()> {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomIn", mathml, "msup");
- test_command("MoveNext", mathml, "id-3");
- });
+ test_command("ZoomIn", mathml, "msup")?;
+ test_command("MoveNext", mathml, "id-3")?;
+ return Ok( () );
+ })?;
- init_default_prefs(mathml_str, "Character");
+ init_default_prefs(mathml_str, "Character")?;
debug!("--- Character ---");
- MATHML_INSTANCE.with(|package_instance| {
+ MATHML_INSTANCE.with(|package_instance| -> Result<()> {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomIn", mathml, "base");
- test_command("MoveNext", mathml, "exp");
- });
+ test_command("ZoomIn", mathml, "base")?;
+ test_command("MoveNext", mathml, "exp")?;
+ return Ok( () );
+ })?;
return Ok( () );
}
@@ -1126,22 +1140,22 @@ mod tests {
1
";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
set_preference("NavMode", "Enhanced")?;
debug!("\n------EnhancedMode----------");
- test_command("ZoomIn", mathml, "id-2");
- test_command("ZoomIn", mathml, "id-5");
- test_command("ZoomIn", mathml, "id-6");
+ test_command("ZoomIn", mathml, "id-2")?;
+ test_command("ZoomIn", mathml, "id-5")?;
+ test_command("ZoomIn", mathml, "id-6")?;
// repeat, but this time with "Simple
set_preference("NavMode", "Simple")?;
debug!("\n------SimpleMode----------");
- test_command("ZoomOutAll", mathml, "id-1");
- test_command("ZoomIn", mathml, "id-4");
- test_command("ZoomIn", mathml, "id-4");
+ test_command("ZoomOutAll", mathml, "id-1")?;
+ test_command("ZoomIn", mathml, "id-4")?;
+ test_command("ZoomIn", mathml, "id-4")?;
return Ok( () );
});
}
@@ -1152,11 +1166,11 @@ mod tests {
b2
d
";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomInAll", mathml, "base");
+ test_command("ZoomInAll", mathml, "base")?;
return Ok( () );
});
}
@@ -1167,23 +1181,23 @@ mod tests {
b2
d
";
- init_prefs(mathml_str, "Enhanced", "ru");
+ init_prefs(mathml_str, "Enhanced", "ru")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- let speech = test_command("ZoomIn", mathml, "msup");
+ let speech = test_command("ZoomIn", mathml, "msup")?;
assert_eq!("переход внутрь; в числитель; бэ в квадрате", speech);
- let speech = test_command("ZoomIn", mathml, "base");
+ let speech = test_command("ZoomIn", mathml, "base")?;
assert_eq!("переход внутрь; в основание; бэ", speech);
- let speech = test_command("ZoomIn", mathml, "base");
+ let speech = test_command("ZoomIn", mathml, "base")?;
assert_eq!("достигнута максимальная детализация; бэ", speech);
- let speech = test_command("ZoomOut", mathml, "msup");
+ let speech = test_command("ZoomOut", mathml, "msup")?;
assert_eq!("переход наружу; из основания; бэ в квадрате", speech);
- let speech = test_command("ZoomInAll", mathml, "base");
+ let speech = test_command("ZoomInAll", mathml, "base")?;
assert_eq!("переход к максимальной детализации; в основание; бэ", speech);
- let speech = test_command("ZoomOutAll", mathml, "mfrac");
+ let speech = test_command("ZoomOutAll", mathml, "mfrac")?;
assert_eq!("переход к выражению целиком; из основания; из числителя; дробь, числитель: бэ в квадрате, знаменатель: дэ, конец дроби", speech);
- let speech = test_command("ZoomOutAll", mathml, "mfrac");
+ let speech = test_command("ZoomOutAll", mathml, "mfrac")?;
assert_eq!("выражение уже показано целиком; дробь, числитель: бэ в квадрате, знаменатель: дэ, конец дроби", speech);
return Ok( () );
});
@@ -1196,7 +1210,7 @@ mod tests {
b2
d
";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
@@ -1206,13 +1220,8 @@ mod tests {
current_node_offset: 0
}, "None")
});
- test_command("ZoomOut", mathml, "msup");
-
- let _nav_speech = do_navigate_command_and_param(mathml, NavigationCommand::Zoom, NavigationParam::Previous)?;
- NAVIGATION_STATE.with(|nav_stack| {
- let (id, _) = nav_stack.borrow().get_navigation_mathml_id(mathml);
- assert_eq!(id, "mfrac");
- });
+ test_command("ZoomOut", mathml, "msup")?;
+ test_command("ZoomOut", mathml, "mfrac")?;
return Ok( () );
});
}
@@ -1223,7 +1232,7 @@ mod tests {
b2
d
";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
@@ -1234,7 +1243,7 @@ mod tests {
}, "None")
});
- test_command("ZoomOutAll", mathml, "mfrac");
+ test_command("ZoomOutAll", mathml, "mfrac")?;
return Ok( () );
});
}
@@ -1252,7 +1261,7 @@ mod tests {
";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
@@ -1264,16 +1273,16 @@ mod tests {
});
set_preference("NavMode", "Character")?;
- test_command("MoveStart", mathml, "id-2");
- test_command("MoveEnd", mathml, "id-7");
+ test_command("MoveStart", mathml, "id-2")?;
+ test_command("MoveEnd", mathml, "id-7")?;
set_preference("NavMode", "Simple")?;
- test_command("MoveStart", mathml, "id-2");
- test_command("MoveEnd", mathml, "id-7");
+ test_command("MoveStart", mathml, "id-2")?;
+ test_command("MoveEnd", mathml, "id-7")?;
set_preference("NavMode", "Enhanced")?;
- test_command("MoveStart", mathml, "id-2");
- test_command("MovePrevious", mathml, "id-2");
- test_command("MoveEnd", mathml, "id-4");
- test_command("MoveNext", mathml, "id-4");
+ test_command("MoveStart", mathml, "id-2")?;
+ test_command("MovePrevious", mathml, "id-2")?;
+ test_command("MoveEnd", mathml, "id-4")?;
+ test_command("MoveNext", mathml, "id-4")?;
return Ok( () );
});
}
@@ -1293,7 +1302,7 @@ mod tests {
";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
@@ -1305,15 +1314,15 @@ mod tests {
});
set_preference("NavMode", "Character")?;
- test_command("MoveLineStart", mathml, "id-5");
- test_command("MoveLineEnd", mathml, "id-8");
+ test_command("MoveLineStart", mathml, "id-5")?;
+ test_command("MoveLineEnd", mathml, "id-8")?;
set_preference("NavMode", "Simple")?;
- test_command("MoveLineStart", mathml, "id-4");
- test_command("MoveLineEnd", mathml, "id-8");
+ test_command("MoveLineStart", mathml, "id-4")?;
+ test_command("MoveLineEnd", mathml, "id-8")?;
set_preference("NavMode", "Enhanced")?;
- test_command("MoveLineStart", mathml, "id-4");
- test_command("MoveLineEnd", mathml, "id-8");
- test_command("MoveEnd", mathml, "id-3");
+ test_command("MoveLineStart", mathml, "id-4")?;
+ test_command("MoveLineEnd", mathml, "id-8")?;
+ test_command("MoveEnd", mathml, "id-3")?;
return Ok( () );
});
}
@@ -1324,7 +1333,7 @@ mod tests {
b2
d
";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
@@ -1335,14 +1344,14 @@ mod tests {
}, "None")
});
- test_command("ZoomOutAll", mathml, "mfrac");
- test_command("ZoomOut", mathml, "mfrac");
- test_command("MoveLastLocation", mathml, "base"); // second zoom out should do nothing
+ test_command("ZoomOutAll", mathml, "mfrac")?;
+ test_command("ZoomOut", mathml, "mfrac")?;
+ test_command("MoveLastLocation", mathml, "base")?; // second zoom out should do nothing
- test_command("ZoomOut", mathml, "msup");
- test_command("ZoomInAll", mathml, "base");
- test_command("ZoomIn", mathml, "base");
- test_command("MoveLastLocation", mathml, "msup"); // second zoom in should do nothing
+ test_command("ZoomOut", mathml, "msup")?;
+ test_command("ZoomInAll", mathml, "base")?;
+ test_command("ZoomIn", mathml, "base")?;
+ test_command("MoveLastLocation", mathml, "msup")?; // second zoom in should do nothing
return Ok( () );
});
@@ -1354,7 +1363,7 @@ mod tests {
b2!
d
";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
@@ -1364,7 +1373,7 @@ mod tests {
current_node_offset: 0
}, "None")
});
- test_command("MoveLineStart", mathml, "denom");
+ test_command("MoveLineStart", mathml, "denom")?;
NAVIGATION_STATE.with(|nav_stack| {
nav_stack.borrow_mut().push(NavigationPosition{
@@ -1372,13 +1381,8 @@ mod tests {
current_node_offset: 0
}, "None")
});
- test_command("MoveLineStart", mathml, "msup");
-
- let _nav_speech = do_navigate_command_and_param(mathml, NavigationCommand::Move, NavigationParam::Start)?;
- NAVIGATION_STATE.with(|nav_stack| {
- let (id, _) = nav_stack.borrow().get_navigation_mathml_id(mathml);
- assert_eq!(id, "num");
- });
+ test_command("MoveLineStart", mathml, "msup")?;
+ test_command("MoveStart", mathml, "num")?;
return Ok( () );
});
}
@@ -1395,7 +1399,7 @@ mod tests {
x
";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
@@ -1406,7 +1410,7 @@ mod tests {
}, "None")
});
set_preference("NavMode", "Enhanced")?;
- test_command("MoveNext", mathml, "id-5");
+ test_command("MoveNext", mathml, "id-5")?;
// reset start and test Simple
NAVIGATION_STATE.with(|nav_stack| {
@@ -1416,7 +1420,7 @@ mod tests {
}, "None")
});
set_preference("NavMode", "Simple")?;
- test_command("MoveNext", mathml, "id-5");
+ test_command("MoveNext", mathml, "id-5")?;
// reset start and test Character
NAVIGATION_STATE.with(|nav_stack| {
@@ -1426,8 +1430,8 @@ mod tests {
}, "None")
});
set_preference("NavMode", "Character")?;
- test_command("MoveNext", mathml, "id-4");
- test_command("MoveNext", mathml, "id-5");
+ test_command("MoveNext", mathml, "id-4")?;
+ test_command("MoveNext", mathml, "id-5")?;
return Ok( () );
});
}
@@ -1448,20 +1452,20 @@ mod tests {
4
";
- init_default_prefs(mathml_str, "Character");
+ init_default_prefs(mathml_str, "Character")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- assert_eq!("zoomed in all of the way; 1", test_command("ZoomInAll", mathml, "id-2"));
- assert_eq!("move right; plus", test_command("MoveNext", mathml, "id-3"));
- assert_eq!("move right; in base; x", test_command("MoveNext", mathml, "id-5"));
- assert_eq!("move right; in subscript; 2", test_command("MoveNext", mathml, "id-6"));
- assert_eq!("move right; in superscript; 3", test_command("MoveNext", mathml, "id-7"));
- assert_eq!("move right; out of superscript; plus", test_command("MoveNext", mathml, "id-8"));
- assert_eq!("move left; in superscript; 3", test_command("MovePrevious", mathml, "id-7"));
- assert_eq!("move left; in subscript; 2", test_command("MovePrevious", mathml, "id-6"));
- assert_eq!("move left; in base; x", test_command("MovePrevious", mathml, "id-5"));
- assert_eq!("move left; out of base; plus", test_command("MovePrevious", mathml, "id-3"));
+ assert_eq!("zoomed in all of the way; 1", test_command("ZoomInAll", mathml, "id-2")?);
+ assert_eq!("move right; plus", test_command("MoveNext", mathml, "id-3")?);
+ assert_eq!("move right; in base; x", test_command("MoveNext", mathml, "id-5")?);
+ assert_eq!("move right; in subscript; 2", test_command("MoveNext", mathml, "id-6")?);
+ assert_eq!("move right; in superscript; 3", test_command("MoveNext", mathml, "id-7")?);
+ assert_eq!("move right; out of superscript; plus", test_command("MoveNext", mathml, "id-8")?);
+ assert_eq!("move left; in superscript; 3", test_command("MovePrevious", mathml, "id-7")?);
+ assert_eq!("move left; in subscript; 2", test_command("MovePrevious", mathml, "id-6")?);
+ assert_eq!("move left; in base; x", test_command("MovePrevious", mathml, "id-5")?);
+ assert_eq!("move left; out of base; plus", test_command("MovePrevious", mathml, "id-3")?);
return Ok( () );
});
@@ -1479,17 +1483,17 @@ mod tests {
xa
";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- assert_eq!("zoom in; the log base 2", test_command("ZoomIn", mathml, "id-2"));
- assert_eq!("zoom in; in base; 2", test_command("ZoomIn", mathml, "id-4"));
- assert_eq!("zoomed in all of the way; 2", test_command("ZoomIn", mathml, "id-4"));
+ assert_eq!("zoom in; the log base 2", test_command("ZoomIn", mathml, "id-2")?);
+ assert_eq!("zoom in; in base; 2", test_command("ZoomIn", mathml, "id-4")?);
+ assert_eq!("zoomed in all of the way; 2", test_command("ZoomIn", mathml, "id-4")?);
debug!("Now zooming out");
- assert_eq!("zoom out; out of base; the log base 2", test_command("ZoomOut", mathml, "id-2"));
- assert_eq!("zoom out; the log base 2, of x", test_command("ZoomOut", mathml, "id-1"));
- assert_eq!("zoomed out all of the way; the log base 2, of x", test_command("ZoomOut", mathml, "id-1"));
+ assert_eq!("zoom out; out of base; the log base 2", test_command("ZoomOut", mathml, "id-2")?);
+ assert_eq!("zoom out; the log base 2, of x", test_command("ZoomOut", mathml, "id-1")?);
+ assert_eq!("zoomed out all of the way; the log base 2, of x", test_command("ZoomOut", mathml, "id-1")?);
return Ok( () );
});
}
@@ -1507,19 +1511,19 @@ mod tests {
x
";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- assert_eq!("zoom in; the log base 2, cubed", test_command("ZoomIn", mathml, "id-2"));
- assert_eq!("zoom in; in base; the log base 2", test_command("ZoomIn", mathml, "id-2-log-base"));
- assert_eq!("zoom in; in base; 2", test_command("ZoomIn", mathml, "id-4"));
- assert_eq!("zoomed in all of the way; 2", test_command("ZoomIn", mathml, "id-4"));
+ assert_eq!("zoom in; the log base 2, cubed", test_command("ZoomIn", mathml, "id-2")?);
+ assert_eq!("zoom in; in base; the log base 2", test_command("ZoomIn", mathml, "id-2-log-base")?);
+ assert_eq!("zoom in; in base; 2", test_command("ZoomIn", mathml, "id-4")?);
+ assert_eq!("zoomed in all of the way; 2", test_command("ZoomIn", mathml, "id-4")?);
debug!("Now zooming out");
- assert_eq!("zoom out; out of base; the log base 2", test_command("ZoomOut", mathml, "id-2-log-base"));
- assert_eq!("zoom out; out of base; the log base 2, cubed", test_command("ZoomOut", mathml, "id-2"));
- assert_eq!("zoom out; the log base 2, cubed of x", test_command("ZoomOut", mathml, "id-1"));
- assert_eq!("zoomed out all of the way; the log base 2, cubed of x", test_command("ZoomOut", mathml, "id-1"));
+ assert_eq!("zoom out; out of base; the log base 2", test_command("ZoomOut", mathml, "id-2-log-base")?);
+ assert_eq!("zoom out; out of base; the log base 2, cubed", test_command("ZoomOut", mathml, "id-2")?);
+ assert_eq!("zoom out; the log base 2, cubed of x", test_command("ZoomOut", mathml, "id-1")?);
+ assert_eq!("zoomed out all of the way; the log base 2, cubed of x", test_command("ZoomOut", mathml, "id-1")?);
return Ok( () );
});
}
@@ -1528,31 +1532,31 @@ mod tests {
fn zoom_msubsup() -> Result<()> {
// msubsup is trickier because it creates an intent within an intent, so offsets need to be handled properly
let mathml_str = "𝑥12";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- set_preference("NavMode", "Enhanced").unwrap();
+ set_preference("NavMode", "Enhanced")?;
debug!("Enhanced mode");
do_commands(mathml)?;
- set_preference("NavMode", "Simple").unwrap();
+ set_preference("NavMode", "Simple")?;
debug!("Simple mode");
do_commands(mathml)?;
- set_preference("NavMode", "Character").unwrap();
+ set_preference("NavMode", "Character")?;
debug!("Character mode");
- assert_eq!("zoom in; in base; x", test_command("ZoomIn", mathml, "base"));
- assert_eq!("zoom out; out of base; x sub 1 super 2 end super", test_command("ZoomOut", mathml, "msubsup"));
+ assert_eq!("zoom in; in base; x", test_command("ZoomIn", mathml, "base")?);
+ assert_eq!("zoom out; out of base; x sub 1 super 2 end super", test_command("ZoomOut", mathml, "msubsup")?);
return Ok( () );
/// Enhanced and Simple mode should behave the same
fn do_commands(mathml: Element) -> Result<()> {
- assert_eq!("zoom in; in base; x sub 1", test_command("ZoomIn", mathml, "msubsup-indexed-by"));
- assert_eq!("zoom in; in base; x", test_command("ZoomIn", mathml, "base"));
- assert_eq!("zoomed in all of the way; x", test_command("ZoomIn", mathml, "base"));
+ assert_eq!("zoom in; in base; x sub 1", test_command("ZoomIn", mathml, "msubsup-indexed-by")?);
+ assert_eq!("zoom in; in base; x", test_command("ZoomIn", mathml, "base")?);
+ assert_eq!("zoomed in all of the way; x", test_command("ZoomIn", mathml, "base")?);
debug!("Now zooming out");
- assert_eq!("zoom out; out of base; x sub 1", test_command("ZoomOut", mathml, "msubsup-indexed-by"));
- assert_eq!("zoom out; out of base; x sub 1, squared", test_command("ZoomOut", mathml, "msubsup"));
- assert_eq!("zoomed out all of the way; x sub 1, squared", test_command("ZoomOut", mathml, "msubsup"));
+ assert_eq!("zoom out; out of base; x sub 1", test_command("ZoomOut", mathml, "msubsup-indexed-by")?);
+ assert_eq!("zoom out; out of base; x sub 1, squared", test_command("ZoomOut", mathml, "msubsup")?);
+ assert_eq!("zoomed out all of the way; x sub 1, squared", test_command("ZoomOut", mathml, "msubsup")?);
return Ok( () );
}
});
@@ -1578,22 +1582,22 @@ mod tests {
";
- init_default_prefs(mathml_str, "Character");
+ init_default_prefs(mathml_str, "Character")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- assert_eq!("zoomed in all of the way; in base; open bracket", test_command("ZoomInAll", mathml, "id-3"));
- assert_eq!("move right; in base; cap c o", test_command("MoveNext", mathml, "id-5"));
- assert_eq!("move right; in subscript; 6", test_command("MoveNext", mathml, "id-6"));
- assert_eq!("move right; out of subscript; close bracket", test_command("MoveNext", mathml, "id-8"));
- assert_eq!("move right; in superscript; 3", test_command("MoveNext", mathml, "id-11"));
- assert_eq!("move right; plus", test_command("MoveNext", mathml, "id-12"));
- assert_eq!("cannot move right, end of math", test_command("MoveNext", mathml, "id-12"));
- assert_eq!("move left; 3", test_command("MovePrevious", mathml, "id-11"));
- assert_eq!("move left; in base; close bracket", test_command("MovePrevious", mathml, "id-8"));
- assert_eq!("move left; in subscript; 6", test_command("MovePrevious", mathml, "id-6"));
- assert_eq!("move left; in base; cap c o", test_command("MovePrevious", mathml, "id-5"));
- assert_eq!("move left; out of base; open bracket", test_command("MovePrevious", mathml, "id-3"));
+ assert_eq!("zoomed in all of the way; in base; open bracket", test_command("ZoomInAll", mathml, "id-3")?);
+ assert_eq!("move right; in base; cap c o", test_command("MoveNext", mathml, "id-5")?);
+ assert_eq!("move right; in subscript; 6", test_command("MoveNext", mathml, "id-6")?);
+ assert_eq!("move right; out of subscript; close bracket", test_command("MoveNext", mathml, "id-8")?);
+ assert_eq!("move right; in superscript; 3", test_command("MoveNext", mathml, "id-11")?);
+ assert_eq!("move right; plus", test_command("MoveNext", mathml, "id-12")?);
+ assert_eq!("cannot move right, end of math", test_command("MoveNext", mathml, "id-12")?);
+ assert_eq!("move left; 3", test_command("MovePrevious", mathml, "id-11")?);
+ assert_eq!("move left; in base; close bracket", test_command("MovePrevious", mathml, "id-8")?);
+ assert_eq!("move left; in subscript; 6", test_command("MovePrevious", mathml, "id-6")?);
+ assert_eq!("move left; in base; cap c o", test_command("MovePrevious", mathml, "id-5")?);
+ assert_eq!("move left; out of base; open bracket", test_command("MovePrevious", mathml, "id-3")?);
return Ok( () );
});
@@ -1623,20 +1627,20 @@ mod tests {
";
- init_default_prefs(mathml_str, "Character");
+ init_default_prefs(mathml_str, "Character")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomInAll", mathml, "id-2");
- test_command("MoveNext", mathml, "id-3");
- test_command("MoveNext", mathml, "id-6");
- test_command("MoveNext", mathml, "id-8");
- test_command("MoveNext", mathml, "id-9");
- test_command("MoveNext", mathml, "id-10");
- test_command("MoveNext", mathml, "id-11");
- test_command("MoveNext", mathml, "id-13");
- test_command("MoveNext", mathml, "id-15");
- test_command("MoveNext", mathml, "id-15");
+ test_command("ZoomInAll", mathml, "id-2")?;
+ test_command("MoveNext", mathml, "id-3")?;
+ test_command("MoveNext", mathml, "id-6")?;
+ test_command("MoveNext", mathml, "id-8")?;
+ test_command("MoveNext", mathml, "id-9")?;
+ test_command("MoveNext", mathml, "id-10")?;
+ test_command("MoveNext", mathml, "id-11")?;
+ test_command("MoveNext", mathml, "id-13")?;
+ test_command("MoveNext", mathml, "id-15")?;
+ test_command("MoveNext", mathml, "id-15")?;
return Ok( () );
});
@@ -1659,39 +1663,39 @@ mod tests {
";
- init_default_prefs(mathml_str, "Character");
+ init_default_prefs(mathml_str, "Character")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
debug!("Character mode");
do_commands(mathml)?;
- set_preference("NavMode", "Simple").unwrap();
+ set_preference("NavMode", "Simple")?;
debug!("Simple mode");
- test_command("ZoomIn", mathml, "id-3"); // zooms to the first parenthesis
+ test_command("ZoomIn", mathml, "id-3")?; // zooms to the first parenthesis
do_commands(mathml)?;
- set_preference("NavMode", "Enhanced").unwrap();
+ set_preference("NavMode", "Enhanced")?;
debug!("Enhanced mode");
- test_command("ZoomIn", mathml, "id-4");
- test_command("MoveNext", mathml, "id-6");
- test_command("MoveNext", mathml, "id-9");
- test_command("MovePrevious", mathml, "id-6");
- test_command("MovePrevious", mathml, "id-4");
+ test_command("ZoomIn", mathml, "id-4")?;
+ test_command("MoveNext", mathml, "id-6")?;
+ test_command("MoveNext", mathml, "id-9")?;
+ test_command("MovePrevious", mathml, "id-6")?;
+ test_command("MovePrevious", mathml, "id-4")?;
return Ok( () );
});
/// Simple and Character mode should behave the same
fn do_commands(mathml: Element) -> Result<()> {
- test_command("ZoomIn", mathml, "id-3");
- test_command("MoveNext", mathml, "id-4");
- test_command("MoveNext", mathml, "id-5");
- test_command("MoveNext", mathml, "id-8");
- test_command("MoveNext", mathml, "id-9");
- test_command("MoveNext", mathml, "id-10");
- test_command("MovePrevious", mathml, "id-9");
- test_command("MovePrevious", mathml, "id-8");
- test_command("MovePrevious", mathml, "id-5");
- test_command("ZoomOutAll", mathml, "id-1");
+ test_command("ZoomIn", mathml, "id-3")?;
+ test_command("MoveNext", mathml, "id-4")?;
+ test_command("MoveNext", mathml, "id-5")?;
+ test_command("MoveNext", mathml, "id-8")?;
+ test_command("MoveNext", mathml, "id-9")?;
+ test_command("MoveNext", mathml, "id-10")?;
+ test_command("MovePrevious", mathml, "id-9")?;
+ test_command("MovePrevious", mathml, "id-8")?;
+ test_command("MovePrevious", mathml, "id-5")?;
+ test_command("ZoomOutAll", mathml, "id-1")?;
return Ok( () );
}
}
@@ -1709,17 +1713,17 @@ mod tests {
";
- init_default_prefs(mathml_str, "Simple");
+ init_default_prefs(mathml_str, "Simple")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
do_commands(mathml)?;
- set_preference("NavMode", "Simple").unwrap();
+ set_preference("NavMode", "Simple")?;
do_commands(mathml)?;
- set_preference("NavMode", "Enhanced").unwrap();
- test_command("ZoomIn", mathml, "id-2");
- test_command("MoveNext", mathml, "id-6");
- test_command("MovePrevious", mathml, "id-2");
+ set_preference("NavMode", "Enhanced")?;
+ test_command("ZoomIn", mathml, "id-2")?;
+ test_command("MoveNext", mathml, "id-6")?;
+ test_command("MovePrevious", mathml, "id-2")?;
return Ok( () );
});
@@ -1727,14 +1731,14 @@ mod tests {
/// Simple and Character mode should behave the same
fn do_commands(mathml: Element) -> Result<()> {
- test_command("ZoomIn", mathml, "id-2");
- test_command("MoveNext", mathml, "id-5");
- test_command("MoveNext", mathml, "id-6");
- test_command("MoveNext", mathml, "id-7");
- test_command("MovePrevious", mathml, "id-6");
- test_command("MovePrevious", mathml, "id-5");
- test_command("MovePrevious", mathml, "id-2");
- test_command("ZoomOutAll", mathml, "id-1");
+ test_command("ZoomIn", mathml, "id-2")?;
+ test_command("MoveNext", mathml, "id-5")?;
+ test_command("MoveNext", mathml, "id-6")?;
+ test_command("MoveNext", mathml, "id-7")?;
+ test_command("MovePrevious", mathml, "id-6")?;
+ test_command("MovePrevious", mathml, "id-5")?;
+ test_command("MovePrevious", mathml, "id-2")?;
+ test_command("ZoomOutAll", mathml, "id-1")?;
return Ok( () );
}
}
@@ -1751,15 +1755,15 @@ mod tests {
z
";
- init_default_prefs(mathml_str, "Character");
+ init_default_prefs(mathml_str, "Character")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomInAll", mathml, "id-3");
- assert_eq!("move right; in denominator; y", test_command("MoveNext", mathml, "id-4"));
- assert_eq!("move right; out of denominator; z", test_command("MoveNext", mathml, "id-6"));
- assert_eq!("move left; in denominator; y", test_command("MovePrevious", mathml, "id-4"));
- assert_eq!("move left; in numerator; x", test_command("MovePrevious", mathml, "id-3"));
+ test_command("ZoomInAll", mathml, "id-3")?;
+ assert_eq!("move right; in denominator; y", test_command("MoveNext", mathml, "id-4")?);
+ assert_eq!("move right; out of denominator; z", test_command("MoveNext", mathml, "id-6")?);
+ assert_eq!("move left; in denominator; y", test_command("MovePrevious", mathml, "id-4")?);
+ assert_eq!("move left; in numerator; x", test_command("MovePrevious", mathml, "id-3")?);
return Ok( () );
});
@@ -1777,18 +1781,18 @@ mod tests {
z
";
- init_prefs(mathml_str, "Character", "ru");
+ init_prefs(mathml_str, "Character", "ru")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomInAll", mathml, "id-3");
- let speech = test_command("MoveNext", mathml, "id-4");
+ test_command("ZoomInAll", mathml, "id-3")?;
+ let speech = test_command("MoveNext", mathml, "id-4")?;
assert_eq!("перемещение вправо; в знаменатель; игрек", speech);
- let speech = test_command("MoveNext", mathml, "id-7");
+ let speech = test_command("MoveNext", mathml, "id-7")?;
assert_eq!("перемещение вправо; из знаменателя; в подкоренное выражение; зэт", speech);
- let speech = test_command("MovePrevious", mathml, "id-4");
+ let speech = test_command("MovePrevious", mathml, "id-4")?;
assert_eq!("перемещение влево; из подкоренного выражения; в знаменатель; игрек", speech);
- let speech = test_command("MovePrevious", mathml, "id-3");
+ let speech = test_command("MovePrevious", mathml, "id-3")?;
assert_eq!("перемещение влево; в числитель; икс", speech);
return Ok( () );
});
@@ -1804,21 +1808,21 @@ mod tests {
";
- init_default_prefs(mathml_str, "Character");
+ init_default_prefs(mathml_str, "Character")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomInAll", mathml, "id-3");
- assert_eq!("zoomed in to first character; t", test_command("ZoomIn", mathml, "id-3"));
- assert_eq!("move right; o", test_command("MoveNext", mathml, "id-3"));
- assert_eq!("move right; p", test_command("MoveNext", mathml, "id-3"));
- assert_eq!("move right; in denominator; αβγ", test_command("MoveNext", mathml, "id-4"));
- assert_eq!("zoomed in to first character; alpha", test_command("ZoomIn", mathml, "id-4"));
- assert_eq!("move right; beta", test_command("MoveNext", mathml, "id-4"));
- assert_eq!("move right; gamma", test_command("MoveNext", mathml, "id-4"));
- assert_eq!("cannot move right, end of math", test_command("MoveNext", mathml, "id-4"));
- assert_eq!("move left; beta", test_command("MovePrevious", mathml, "id-4"));
- assert_eq!("zoom out; αβγ", test_command("ZoomOut", mathml, "id-4"));
+ test_command("ZoomInAll", mathml, "id-3")?;
+ assert_eq!("zoomed in to first character; t", test_command("ZoomIn", mathml, "id-3")?);
+ assert_eq!("move right; o", test_command("MoveNext", mathml, "id-3")?);
+ assert_eq!("move right; p", test_command("MoveNext", mathml, "id-3")?);
+ assert_eq!("move right; in denominator; αβγ", test_command("MoveNext", mathml, "id-4")?);
+ assert_eq!("zoomed in to first character; alpha", test_command("ZoomIn", mathml, "id-4")?);
+ assert_eq!("move right; beta", test_command("MoveNext", mathml, "id-4")?);
+ assert_eq!("move right; gamma", test_command("MoveNext", mathml, "id-4")?);
+ assert_eq!("cannot move right, end of math", test_command("MoveNext", mathml, "id-4")?);
+ assert_eq!("move left; beta", test_command("MovePrevious", mathml, "id-4")?);
+ assert_eq!("zoom out; αβγ", test_command("ZoomOut", mathml, "id-4")?);
return Ok( () );
});
@@ -1841,15 +1845,15 @@ mod tests {
";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomIn", mathml, "id-2");
- assert_eq!("move right; times", test_command("MoveNext", mathml, "id-3"));
- assert_eq!("move right; 1 minus x", test_command("MoveNext", mathml, "id-6"));
- assert_eq!("move left; times", test_command("MovePrevious", mathml, "id-3"));
- assert_eq!("move left; 2", test_command("MovePrevious", mathml, "id-2"));
+ test_command("ZoomIn", mathml, "id-2")?;
+ assert_eq!("move right; times", test_command("MoveNext", mathml, "id-3")?);
+ assert_eq!("move right; 1 minus x", test_command("MoveNext", mathml, "id-6")?);
+ assert_eq!("move left; times", test_command("MovePrevious", mathml, "id-3")?);
+ assert_eq!("move left; 2", test_command("MovePrevious", mathml, "id-2")?);
return Ok( () );
});
@@ -1872,16 +1876,16 @@ mod tests {
";
- init_default_prefs(mathml_str, "Simple");
- set_preference("SpeechStyle", "ClearSpeak").unwrap();
+ init_default_prefs(mathml_str, "Simple")?;
+ set_preference("SpeechStyle", "ClearSpeak")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomIn", mathml, "id-2");
- assert_eq!("move right; open paren", test_command("MoveNext", mathml, "id-5"));
- assert_eq!("move right; 1", test_command("MoveNext", mathml, "id-7"));
- assert_eq!("move left; open paren", test_command("MovePrevious", mathml, "id-5"));
- assert_eq!("move left; 2", test_command("MovePrevious", mathml, "id-2"));
+ test_command("ZoomIn", mathml, "id-2")?;
+ assert_eq!("move right; open paren", test_command("MoveNext", mathml, "id-5")?);
+ assert_eq!("move right; 1", test_command("MoveNext", mathml, "id-7")?);
+ assert_eq!("move left; open paren", test_command("MovePrevious", mathml, "id-5")?);
+ assert_eq!("move left; 2", test_command("MovePrevious", mathml, "id-2")?);
return Ok( () );
});
@@ -1944,26 +1948,26 @@ mod tests {
";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomInAll", mathml, "nav-4");
- test_command("MoveCellNext", mathml, "nav-6");
- test_command("MoveCellNext", mathml, "nav-8");
- test_command("MoveCellNext", mathml, "nav-8");
- test_command("MoveCellDown", mathml, "nav-20");
- test_command("MoveCellDown", mathml, "nav-27");
- let speech = test_command("MoveCellDown", mathml, "nav-39");
+ test_command("ZoomInAll", mathml, "nav-4")?;
+ test_command("MoveCellNext", mathml, "nav-6")?;
+ test_command("MoveCellNext", mathml, "nav-8")?;
+ test_command("MoveCellNext", mathml, "nav-8")?;
+ test_command("MoveCellDown", mathml, "nav-20")?;
+ test_command("MoveCellDown", mathml, "nav-27")?;
+ let speech = test_command("MoveCellDown", mathml, "nav-39")?;
assert_eq!(speech, "move down, row 4, column 3; 2 minus y");
- let speech = test_command("MoveCellDown", mathml, "nav-39");
+ let speech = test_command("MoveCellDown", mathml, "nav-39")?;
assert_eq!(speech, "no next row");
- test_command("MoveCellPrevious", mathml, "nav-35");
- test_command("ZoomIn", mathml, "nav-36");
- test_command("MoveCellUp", mathml, "nav-25");
- test_command("MoveCellUp", mathml, "nav-16");
- test_command("MoveCellUp", mathml, "nav-6");
- test_command("MoveCellUp", mathml, "nav-6");
+ test_command("MoveCellPrevious", mathml, "nav-35")?;
+ test_command("ZoomIn", mathml, "nav-36")?;
+ test_command("MoveCellUp", mathml, "nav-25")?;
+ test_command("MoveCellUp", mathml, "nav-16")?;
+ test_command("MoveCellUp", mathml, "nav-6")?;
+ test_command("MoveCellUp", mathml, "nav-6")?;
return Ok( () );
});
@@ -2025,7 +2029,7 @@ mod tests {
";
- init_default_prefs(mathml_str, "Character");
+ init_default_prefs(mathml_str, "Character")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
@@ -2035,23 +2039,23 @@ mod tests {
current_node_offset: 0
}, "None")
});
- test_command("MoveNext", mathml, "nav-12");
- test_command("MoveNext", mathml, "nav-13");
- test_command("MoveNext", mathml, "nav-14");
- test_command("MoveNext", mathml, "nav-17");
- test_command("MovePrevious", mathml, "nav-14");
- test_command("MoveCellNext", mathml, "nav-17");
- test_command("MoveCellPrevious", mathml, "nav-14");
- test_command("MovePrevious", mathml, "nav-13");
- test_command("MovePrevious", mathml, "nav-12");
- test_command("MoveCellPrevious", mathml, "nav-12");
- test_command("MovePrevious", mathml, "nav-8");
- test_command("MoveCellDown", mathml, "nav-20");
- test_command("MoveCellDown", mathml, "nav-27");
- test_command("MoveCellDown", mathml, "nav-40");
- test_command("MoveCellDown", mathml, "nav-40");
- test_command("MoveCellPrevious", mathml, "nav-37");
- test_command("MoveCellUp", mathml, "nav-25");
+ test_command("MoveNext", mathml, "nav-12")?;
+ test_command("MoveNext", mathml, "nav-13")?;
+ test_command("MoveNext", mathml, "nav-14")?;
+ test_command("MoveNext", mathml, "nav-17")?;
+ test_command("MovePrevious", mathml, "nav-14")?;
+ test_command("MoveCellNext", mathml, "nav-17")?;
+ test_command("MoveCellPrevious", mathml, "nav-14")?;
+ test_command("MovePrevious", mathml, "nav-13")?;
+ test_command("MovePrevious", mathml, "nav-12")?;
+ test_command("MoveCellPrevious", mathml, "nav-12")?;
+ test_command("MovePrevious", mathml, "nav-8")?;
+ test_command("MoveCellDown", mathml, "nav-20")?;
+ test_command("MoveCellDown", mathml, "nav-27")?;
+ test_command("MoveCellDown", mathml, "nav-40")?;
+ test_command("MoveCellDown", mathml, "nav-40")?;
+ test_command("MoveCellPrevious", mathml, "nav-37")?;
+ test_command("MoveCellUp", mathml, "nav-25")?;
return Ok( () );
});
@@ -2068,19 +2072,19 @@ mod tests {
c
";
- init_default_prefs(mathml_str, "Character");
+ init_default_prefs(mathml_str, "Character")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("MoveStart", mathml, "a");
- test_command("SetPlacemarker0", mathml, "a");
- test_command("MoveEnd", mathml, "c");
- test_command("Read0", mathml, "c");
- test_command("Describe0", mathml, "c");
- test_command("SetPlacemarker1", mathml, "c");
- test_command("MoveTo0", mathml, "a");
- test_command("MoveTo1", mathml, "c");
- test_command("MoveLastLocation", mathml, "a");
+ test_command("MoveStart", mathml, "a")?;
+ test_command("SetPlacemarker0", mathml, "a")?;
+ test_command("MoveEnd", mathml, "c")?;
+ test_command("Read0", mathml, "c")?;
+ test_command("Describe0", mathml, "c")?;
+ test_command("SetPlacemarker1", mathml, "c")?;
+ test_command("MoveTo0", mathml, "a")?;
+ test_command("MoveTo1", mathml, "c")?;
+ test_command("MoveLastLocation", mathml, "a")?;
return Ok( () );
});
@@ -2092,8 +2096,8 @@ mod tests {
b2
d
";
- init_default_prefs(mathml_str, "Enhanced");
- set_preference("SpeechStyle", "ClearSpeak").unwrap();
+ init_default_prefs(mathml_str, "Enhanced")?;
+ set_preference("SpeechStyle", "ClearSpeak")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
@@ -2104,7 +2108,7 @@ mod tests {
}, "None")
});
// WhereAmIAll doesn't change the stack
- let speech =test_command("WhereAmIAll", mathml, "exp");
+ let speech =test_command("WhereAmIAll", mathml, "exp")?;
// should be 2 "inside" strings corresponding to steps to the root
assert_eq!(speech, "2; inside; b squared; inside; the fraction with numerator; b squared; and denominator d");
return Ok( () );
@@ -2130,16 +2134,16 @@ mod tests {
10
";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
set_preference("AutoZoomOut", "False")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomInAll", mathml, "2");
- test_command("MoveNext", mathml, "a");
- test_command("MoveNext", mathml, "x");
- test_command("MoveNext", mathml, "plus");
- test_command("MovePrevious", mathml, "2ax");
+ test_command("ZoomInAll", mathml, "2")?;
+ test_command("MoveNext", mathml, "a")?;
+ test_command("MoveNext", mathml, "x")?;
+ test_command("MoveNext", mathml, "plus")?;
+ test_command("MovePrevious", mathml, "2ax")?;
return Ok( () );
});
}
@@ -2156,19 +2160,19 @@ mod tests {
3
";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
set_preference("AutoZoomOut", "False")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomIn", mathml, "frac");
- test_command("ZoomIn", mathml, "num");
- test_command("MoveNext", mathml, "denom");
- test_command("MoveNext", mathml, "denom");
- test_command("MovePrevious", mathml, "num");
- test_command("MovePrevious", mathml, "num");
- test_command("ZoomOut", mathml, "frac");
- test_command("MoveNext", mathml, "minus");
+ test_command("ZoomIn", mathml, "frac")?;
+ test_command("ZoomIn", mathml, "num")?;
+ test_command("MoveNext", mathml, "denom")?;
+ test_command("MoveNext", mathml, "denom")?;
+ test_command("MovePrevious", mathml, "num")?;
+ test_command("MovePrevious", mathml, "num")?;
+ test_command("ZoomOut", mathml, "frac")?;
+ test_command("MoveNext", mathml, "minus")?;
return Ok( () );
});
}
@@ -2194,43 +2198,43 @@ mod tests {
return Ok( () );
fn test_mode(mathml_str: &str, mode: &str) -> Result<()> {
- init_default_prefs(mathml_str, mode);
+ init_default_prefs(mathml_str, mode)?;
set_preference("AutoZoomOut", "False")?;
return MATHML_INSTANCE.with(|package_instance| {
debug!("--- Testing mode {mode} ---");
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomIn", mathml, "id-9");
+ test_command("ZoomIn", mathml, "id-9")?;
debug!("\nStart zoom in");
match mode {
"Enhanced" => {
- test_command("MoveNext", mathml, "id-10");
- let speech = test_command("ZoomIn", mathml, "id-11");
+ test_command("MoveNext", mathml, "id-10")?;
+ let speech = test_command("ZoomIn", mathml, "id-11")?;
assert_eq!(speech, "zoom in; in root; b squared minus 4"); // only one arg, so don't say "in root"
- let speech = test_command("ZoomIn", mathml, "id-12");
+ let speech = test_command("ZoomIn", mathml, "id-12")?;
assert_eq!(speech, "zoom in; b squared"); // only one arg, so don't say "in root"
- let speech = test_command("ZoomIn", mathml, "id-13");
+ let speech = test_command("ZoomIn", mathml, "id-13")?;
assert_eq!(speech, "zoom in; in base; b");
},
"Simple" => {
- test_command("MoveNext", mathml, "id-10");
- let speech = test_command("ZoomIn", mathml, "id-12");
+ test_command("MoveNext", mathml, "id-10")?;
+ let speech = test_command("ZoomIn", mathml, "id-12")?;
assert_eq!(speech, "zoom in; in root; b squared");
- let speech = test_command("ZoomIn", mathml, "id-13");
+ let speech = test_command("ZoomIn", mathml, "id-13")?;
assert_eq!(speech, "zoom in; in base; b");
},
_ => { // "Character"
- let speech = test_command("MoveNext", mathml, "id-13");
+ let speech = test_command("MoveNext", mathml, "id-13")?;
assert_eq!(speech, "move right; in root; in base; b");
}
}
let squared_speech = if mode == "Character" {"b super 2 end super"} else {"b squared"};
let sqrt_speech = if mode == "Character" {"root"} else {"square root"};
- let speech = test_command("ZoomOut", mathml, "id-12");
+ let speech = test_command("ZoomOut", mathml, "id-12")?;
assert_eq!(speech, format!("zoom out; out of base; {squared_speech}"));
- let speech = test_command("ZoomOut", mathml, "id-11");
+ let speech = test_command("ZoomOut", mathml, "id-11")?;
assert_eq!(speech, format!("zoom out; {squared_speech} minus 4"));
- let speech = test_command("ZoomOut", mathml, "id-10");
+ let speech = test_command("ZoomOut", mathml, "id-10")?;
assert_eq!(speech, format!("zoom out; out of root; the {sqrt_speech} of {squared_speech} minus 4, end root",));
return Ok( () );
});
@@ -2255,18 +2259,18 @@ mod tests {
]
"#;
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomIn", mathml, "row-1");
- let speech = test_command("MoveNext", mathml, "row-2");
+ test_command("ZoomIn", mathml, "row-1")?;
+ let speech = test_command("MoveNext", mathml, "row-2")?;
assert_eq!(speech, "move right; row 2; 5, negative 6");
- let speech = test_command("ZoomIn", mathml, "id-13");
+ let speech = test_command("ZoomIn", mathml, "id-13")?;
assert_eq!(speech, "zoom in; column 1; 5");
- let speech = test_command("ZoomOut", mathml, "row-2");
+ let speech = test_command("ZoomOut", mathml, "row-2")?;
assert_eq!(speech, "zoom out; row 2; 5, negative 6");
- let speech = test_command("ZoomOut", mathml, "table");
+ let speech = test_command("ZoomOut", mathml, "table")?;
assert_eq!(speech, "zoom out; the 2 by 2 matrix; row 1; 9, negative 13; row 2; 5, negative 6");
return Ok( () );
});
@@ -2290,12 +2294,12 @@ mod tests {
";
- init_default_prefs(mathml_str, "Enhanced");
+ init_default_prefs(mathml_str, "Enhanced")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomIn", mathml, "id-2");
- let speech = test_command("MoveNext", mathml, "id-6");
+ test_command("ZoomIn", mathml, "id-2")?;
+ let speech = test_command("MoveNext", mathml, "id-6")?;
// tables need to check their parent for proper speech
assert_eq!(speech, "move right; cap s");
return Ok( () );
@@ -2320,22 +2324,22 @@ mod tests {
|
";
- init_default_prefs(mathml_str, "Enhanced");
- set_preference("SpeechStyle", "ClearSpeak").unwrap();
+ init_default_prefs(mathml_str, "Enhanced")?;
+ set_preference("SpeechStyle", "ClearSpeak")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- let speech = test_command("ZoomIn", mathml, "row-1");
+ let speech = test_command("ZoomIn", mathml, "row-1")?;
assert_eq!(speech, "zoom in; row 1; 9, negative 13");
- let speech = test_command("MoveNext", mathml, "row-2");
+ let speech = test_command("MoveNext", mathml, "row-2")?;
assert_eq!(speech, "move right; row 2; 5, negative 6");
- let speech = test_command("MoveNext", mathml, "row-2");
+ let speech = test_command("MoveNext", mathml, "row-2")?;
assert_eq!(speech, "cannot move right, end of math");
- let speech = test_command("ZoomIn", mathml, "id-13");
+ let speech = test_command("ZoomIn", mathml, "id-13")?;
assert_eq!(speech, "zoom in; column 1; 5");
- let speech = test_command("MoveNext", mathml, "row2-negative");
+ let speech = test_command("MoveNext", mathml, "row2-negative")?;
assert_eq!(speech, "move right; column 2, negative 6");
- let speech = test_command("ZoomOutAll", mathml, "table");
+ let speech = test_command("ZoomOutAll", mathml, "table")?;
assert_eq!(speech, "zoomed out all of the way; the 2 by 2 determinant; row 1; 9, negative 13; row 2; 5, negative 6");
return Ok( () );
});
@@ -2358,22 +2362,22 @@ mod tests {
";
- init_default_prefs(mathml_str, "Enhanced");
- set_preference("SpeechStyle", "ClearSpeak").unwrap();
+ init_default_prefs(mathml_str, "Enhanced")?;
+ set_preference("SpeechStyle", "ClearSpeak")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomIn", mathml, "row-1");
- let speech = test_command("MovePrevious", mathml, "row-1");
+ test_command("ZoomIn", mathml, "row-1")?;
+ let speech = test_command("MovePrevious", mathml, "row-1")?;
assert_eq!(speech, "move left; start of math");
- let speech = test_command("MoveNext", mathml, "row-2");
+ let speech = test_command("MoveNext", mathml, "row-2")?;
assert_eq!(speech, "move right; case 2; positive x comma; if x, is greater than or equal to 0");
- let speech = test_command("ZoomOut", mathml, "table");
+ let speech = test_command("ZoomOut", mathml, "table")?;
assert_eq!(speech, "zoom out; 2 cases; case 1; negative x comma; if x is less than 0; case 2; positive x comma; if x, is greater than or equal to 0");
- let speech = test_command("ZoomIn", mathml, "row-1");
+ let speech = test_command("ZoomIn", mathml, "row-1")?;
assert_eq!(speech, "zoom in; case 1; negative x comma; if x is less than 0");
- set_preference("NavMode", "Character").unwrap();
- let speech = test_command("MovePrevious", mathml, "open");
+ set_preference("NavMode", "Character")?;
+ let speech = test_command("MovePrevious", mathml, "open")?;
assert_eq!(speech, "move left; open brace");
return Ok( () );
});
@@ -2396,14 +2400,14 @@ mod tests {
2
";
- init_default_prefs(mathml_str, "Enhanced");
- set_preference("SpeechStyle", "ClearSpeak").unwrap();
+ init_default_prefs(mathml_str, "Enhanced")?;
+ set_preference("SpeechStyle", "ClearSpeak")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- let speech = test_command("ZoomIn", mathml, "id-4");
+ let speech = test_command("ZoomIn", mathml, "id-4")?;
assert_eq!(speech, "zoom in; in base; 2 x");
- let speech = test_command("MoveNext", mathml, "id-9");
+ let speech = test_command("MoveNext", mathml, "id-9")?;
assert_eq!(speech, "move right; in exponent; 2");
return Ok( () );
});
@@ -2421,45 +2425,45 @@ mod tests {
)
";
- init_default_prefs(mathml_str, "Character");
- set_preference("SpeechStyle", "ClearSpeak").unwrap();
+ init_default_prefs(mathml_str, "Character")?;
+ set_preference("SpeechStyle", "ClearSpeak")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
debug!("Character mode");
- let speech = test_command("MoveStart", mathml, "id-2");
+ let speech = test_command("MoveStart", mathml, "id-2")?;
assert_eq!(speech, "move to start of math; open paren");
- let speech = test_command("MoveNext", mathml, "id-4");
+ let speech = test_command("MoveNext", mathml, "id-4")?;
// I'm not keen on the use of numerator/denominator here, but character mode turns off intent
assert_eq!(speech, "move right; in numerator; n");
- let speech = test_command("MoveNext", mathml, "id-5");
+ let speech = test_command("MoveNext", mathml, "id-5")?;
assert_eq!(speech, "move right; in denominator; k");
debug!("before zoom out");
- let speech = test_command("ZoomOut", mathml, "id-3");
+ let speech = test_command("ZoomOut", mathml, "id-3")?;
assert_eq!(speech, "zoom out; out of denominator; n over k");
- // let speech = test_command("ZoomOut", mathml, "id-1");
+ // let speech = test_command("ZoomOut", mathml, "id-1")?;
// assert_eq!(speech, "zoom out; open paren n over k, close paren");
- set_preference("NavMode", "Simple").unwrap();
+ set_preference("NavMode", "Simple")?;
debug!("Simple mode");
- let speech = test_command("ZoomIn", mathml, "id-4");
+ let speech = test_command("ZoomIn", mathml, "id-4")?;
assert_eq!(speech, "zoom in; in part 1; n");
- let speech = test_command("MoveNext", mathml, "id-5");
+ let speech = test_command("MoveNext", mathml, "id-5")?;
assert_eq!(speech, "move right; in part 2; k");
- let speech = test_command("MoveNext", mathml, "id-5");
+ let speech = test_command("MoveNext", mathml, "id-5")?;
assert_eq!(speech, "cannot move right, end of math");
- let speech = test_command("ZoomOut", mathml, "id-1-literal-0");
+ let speech = test_command("ZoomOut", mathml, "id-1-literal-0")?;
assert_eq!(speech, "zoom out; out of part 2; n choose k");
- set_preference("NavMode", "Enhanced").unwrap();
+ set_preference("NavMode", "Enhanced")?;
debug!("Enhanced mode");
- let speech = test_command("ZoomIn", mathml, "id-4");
+ let speech = test_command("ZoomIn", mathml, "id-4")?;
assert_eq!(speech, "zoom in; in part 1; n");
- let speech = test_command("MoveNext", mathml, "id-5");
+ let speech = test_command("MoveNext", mathml, "id-5")?;
assert_eq!(speech, "move right; in part 2; k");
- let speech = test_command("MoveNext", mathml, "id-5");
+ let speech = test_command("MoveNext", mathml, "id-5")?;
assert_eq!(speech, "cannot move right, end of math");
- let speech = test_command("ZoomOut", mathml, "id-1-literal-0");
+ let speech = test_command("ZoomOut", mathml, "id-1-literal-0")?;
assert_eq!(speech, "zoom out; out of part 2; n choose k");
return Ok( () );
@@ -2491,19 +2495,19 @@ mod tests {
)
"#;
- init_default_prefs(mathml_str, "Simple");
+ init_default_prefs(mathml_str, "Simple")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- let speech = test_command("ZoomIn", mathml, "id-3-literal-1");
+ let speech = test_command("ZoomIn", mathml, "id-3-literal-1")?;
assert_eq!(speech, "zoom in; 1");
- let speech = test_command("MoveNext", mathml, "id-3-literal-2");
+ let speech = test_command("MoveNext", mathml, "id-3-literal-2")?;
assert_eq!(speech, "move right; 2");
- let speech = test_command("MoveNext", mathml, "id-3-literal-3");
+ let speech = test_command("MoveNext", mathml, "id-3-literal-3")?;
assert_eq!(speech, "move right; 3");
- let speech = test_command("MoveNext", mathml, "id-3-literal-3");
+ let speech = test_command("MoveNext", mathml, "id-3-literal-3")?;
assert_eq!(speech, "cannot move right, end of math");
- let speech = test_command("ZoomOut", mathml, "id-3-literal-0");
+ let speech = test_command("ZoomOut", mathml, "id-3-literal-0")?;
assert_eq!(speech, "zoom out; diagonal 1 2 3");
return Ok( () );
@@ -2522,25 +2526,25 @@ mod tests {
";
- init_default_prefs(mathml_str, "Enhanced");
- set_preference("SpeechStyle", "ClearSpeak").unwrap();
+ init_default_prefs(mathml_str, "Enhanced")?;
+ set_preference("SpeechStyle", "ClearSpeak")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- let speech = test_command("ZoomIn", mathml, "2");
+ let speech = test_command("ZoomIn", mathml, "2")?;
assert_eq!(speech, "zoom in; 2");
- let speech = test_command("MoveNext", mathml, "abs");
+ let speech = test_command("MoveNext", mathml, "abs")?;
assert_eq!(speech, "move right; the absolute value of x");
- let speech = test_command("ZoomIn", mathml, "x");
+ let speech = test_command("ZoomIn", mathml, "x")?;
assert_eq!(speech, "zoom in; in absolute value; x");
- let speech = test_command("MoveNext", mathml, "x");
+ let speech = test_command("MoveNext", mathml, "x")?;
assert_eq!(speech, "cannot move right, end of math");
- set_preference("NavMode", "Character").unwrap();
- let speech = test_command("MoveNext", mathml, "end");
+ set_preference("NavMode", "Character")?;
+ let speech = test_command("MoveNext", mathml, "end")?;
assert_eq!(speech, "move right; vertical line");
- let speech = test_command("MoveLineStart", mathml, "2");
+ let speech = test_command("MoveLineStart", mathml, "2")?;
assert_eq!(speech, "move to start of line; 2");
- let speech = test_command("MoveNext", mathml, "start");
+ let speech = test_command("MoveNext", mathml, "start")?;
assert_eq!(speech, "move right; vertical line");
return Ok( () );
});
@@ -2558,15 +2562,15 @@ mod tests {
3
";
- init_default_prefs(mathml_str, "Enhanced");
- set_preference("SpeechStyle", "SimpleSpeak").unwrap();
+ init_default_prefs(mathml_str, "Enhanced")?;
+ set_preference("SpeechStyle", "SimpleSpeak")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomIn", mathml, "frac");
- let speech = test_command("ReadCurrent", mathml, "frac");
+ test_command("ZoomIn", mathml, "frac")?;
+ let speech = test_command("ReadCurrent", mathml, "frac")?;
assert_eq!(speech, "read current; fraction, b plus 1, over 3, end fraction");
- let speech = test_command("DescribeCurrent", mathml, "frac");
+ let speech = test_command("DescribeCurrent", mathml, "frac")?;
assert_eq!(speech, "describe current; fraction");
return Ok( () );
});
@@ -2593,21 +2597,14 @@ mod tests {
";
- init_prefs(mathml_str, "Enhanced", "ru");
+ init_prefs(mathml_str, "Enhanced", "ru")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- let speech = test_command("ZoomIn", mathml, "");
+ let speech = test_command("ZoomIn", mathml, "")?;
assert_eq!("переход внутрь; в числитель; икс плюс, квадратный корень из 1 разделить на игрек, конец корня", speech);
- match do_navigate_command_string(mathml, "DescribeCurrent") {
- Ok(speech) => {
- let speech = speech.trim_end_matches(&[' ', ',', ';']).to_string();
- assert_eq!("описать текущее; икс плюс, квадратный корень из 1 разделить на игрек", speech);
- },
- Err(e) => {
- panic!("DescribeCurrent failed: {}", crate::interface::errors_to_string(&e));
- },
- };
+ let speech = test_command("DescribeCurrent", mathml, "")?;
+ assert_eq!("описать текущее; икс плюс, квадратный корень из 1 разделить на игрек", speech);
return Ok( () );
});
}
@@ -2626,16 +2623,16 @@ mod tests {
7
";
- init_default_prefs(mathml_str, "Enhanced");
- set_preference("SpeechStyle", "SimpleSpeak").unwrap();
+ init_default_prefs(mathml_str, "Enhanced")?;
+ set_preference("SpeechStyle", "SimpleSpeak")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- let speech = test_command("ZoomOutAll", mathml, "mrow");
+ let speech = test_command("ZoomOutAll", mathml, "mrow")?;
assert_eq!(speech, "zoomed out all of the way; 1 plus 2 plus 3 plus 4 plus 5 plus 6 plus 7");
- let speech = test_command("ReadCurrent", mathml, "mrow");
+ let speech = test_command("ReadCurrent", mathml, "mrow")?;
assert_eq!(speech, "read current; 1 plus 2 plus 3 plus 4 plus 5 plus 6 plus 7");
- let speech = test_command("DescribeCurrent", mathml, "mrow");
+ let speech = test_command("DescribeCurrent", mathml, "mrow")?;
assert_eq!(speech, "describe current; 1 plus 2 plus 3 and so on");
return Ok( () );
});
@@ -2651,16 +2648,16 @@ mod tests {
y
";
- init_default_prefs(mathml_str, "Simple");
- set_preference("SpeechStyle", "SimpleSpeak").unwrap();
+ init_default_prefs(mathml_str, "Simple")?;
+ set_preference("SpeechStyle", "SimpleSpeak")?;
return MATHML_INSTANCE.with(|package_instance| {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- let speech = test_command("ZoomIn", mathml, "id-2");
+ let speech = test_command("ZoomIn", mathml, "id-2")?;
assert_eq!(speech, "zoom in; x");
- let speech = test_command("ToggleZoomLockUp", mathml, "id-2");
+ let speech = test_command("ToggleZoomLockUp", mathml, "id-2")?;
assert_eq!(speech, "enhanced mode; x");
- let speech = test_command("ReadNext", mathml, "id-2");
+ let speech = test_command("ReadNext", mathml, "id-2")?;
assert_eq!(speech, "read right; y");
return Ok( () );
});
@@ -2690,63 +2687,68 @@ mod tests {
";
- set_rules_dir(super::super::abs_rules_dir_path()).unwrap();
+ set_rules_dir(super::super::abs_rules_dir_path())?;
for lang in get_supported_languages().unwrap_or_default() {
- test_language(&lang, mathml_str);
+ test_language(&lang, mathml_str)?;
}
return Ok( () );
- fn test_language(lang: &str, mathml_str: &str) {
- init_default_prefs(mathml_str, "Enhanced");
- set_preference("Language", lang).unwrap();
+ fn test_language(lang: &str, mathml_str: &str) -> Result<()> {
+ init_default_prefs(mathml_str, "Enhanced")?;
+ set_preference("Language", lang)?;
- set_preference("NavMode", "Enhanced").unwrap();
- MATHML_INSTANCE.with(|package_instance| {
+ set_preference("NavMode", "Enhanced")?;
+ MATHML_INSTANCE.with(|package_instance| -> Result<()> {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomInAll", mathml, "2");
- test_command("MoveNext", mathml, "msup");
- test_command("MoveNext", mathml, "plus");
- test_command("MovePrevious", mathml, "term");
- test_command("MovePrevious", mathml, "term");
- test_command("ZoomOutAll", mathml, "contents");
- });
+ test_command("ZoomInAll", mathml, "2")?;
+ test_command("MoveNext", mathml, "msup")?;
+ test_command("MoveNext", mathml, "plus")?;
+ test_command("MovePrevious", mathml, "term")?;
+ test_command("MovePrevious", mathml, "term")?;
+ test_command("ZoomOutAll", mathml, "contents")?;
+ return Ok( () );
+ })?;
- set_preference("NavMode", "Simple").unwrap();
- MATHML_INSTANCE.with(|package_instance: &RefCell| {
+ set_preference("NavMode", "Simple")?;
+ MATHML_INSTANCE.with(|package_instance: &RefCell| -> Result<()> {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomInAll", mathml, "2");
- test_command("MoveNext", mathml, "msup");
- test_command("MoveNext", mathml, "plus");
- test_command("MovePrevious", mathml, "msup");
- test_command("MovePrevious", mathml, "2");
- test_command("MovePrevious", mathml, "2");
- test_command("ZoomOutAll", mathml, "contents");
- });
+ test_command("ZoomInAll", mathml, "2")?;
+ test_command("MoveNext", mathml, "msup")?;
+ test_command("MoveNext", mathml, "plus")?;
+ test_command("MovePrevious", mathml, "msup")?;
+ test_command("MovePrevious", mathml, "2")?;
+ test_command("MovePrevious", mathml, "2")?;
+ test_command("ZoomOutAll", mathml, "contents")?;
+ return Ok( () );
+ })?;
- set_preference("NavMode", "Character").unwrap();
- MATHML_INSTANCE.with(|package_instance| {
+ set_preference("NavMode", "Character")?;
+ MATHML_INSTANCE.with(|package_instance| -> Result<()> {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomIn", mathml, "2");
- test_command("MoveNext", mathml, "x");
- test_command("MoveNext", mathml, "3");
- test_command("MoveNext", mathml, "plus");
- test_command("MovePrevious", mathml, "3");
- test_command("MovePrevious", mathml, "x");
- test_command("MovePrevious", mathml, "2");
- test_command("MovePrevious", mathml, "2");
- });
+ test_command("ZoomIn", mathml, "2")?;
+ test_command("MoveNext", mathml, "x")?;
+ test_command("MoveNext", mathml, "3")?;
+ test_command("MoveNext", mathml, "plus")?;
+ test_command("MovePrevious", mathml, "3")?;
+ test_command("MovePrevious", mathml, "x")?;
+ test_command("MovePrevious", mathml, "2")?;
+ test_command("MovePrevious", mathml, "2")?;
+ return Ok( () );
+ })?;
// simple sanity check that "overview.yaml" doesn't have a syntax error
- set_preference("Overview", "True").unwrap();
- set_preference("NavMode", "Character").unwrap();
- MATHML_INSTANCE.with(|package_instance| {
+ set_preference("Overview", "True")?;
+ set_preference("NavMode", "Character")?;
+ MATHML_INSTANCE.with(|package_instance| -> Result<()> {
let package_instance = package_instance.borrow();
let mathml = get_element(&package_instance);
- test_command("ZoomIn", mathml, "2");
- });
+ test_command("ZoomIn", mathml, "2")?;
+ return Ok( () );
+ })?;
+ return Ok( () );
}
}
}
diff --git a/src/speech.rs b/src/speech.rs
index e2b42bead..43743a16c 100644
--- a/src/speech.rs
+++ b/src/speech.rs
@@ -945,7 +945,7 @@ impl ReplacementArray {
let after = if i+1 == replacement_strings.len() {""} else {&replacement_strings[i+1]};
replacement_strings[i] = replacement_strings[i].replace(
PAUSE_AUTO_STR,
- &rules_with_context.speech_rules.pref_manager.borrow().get_tts().compute_auto_pause(&rules_with_context.speech_rules.pref_manager.borrow(), before, after));
+ &rules_with_context.speech_rules.pref_manager.borrow().get_tts().compute_auto_pause(&rules_with_context.speech_rules.pref_manager.borrow(), before, after)?);
}
}
@@ -2825,7 +2825,7 @@ impl<'c, 's:'c, 'r, 'm:'c> SpeechRulesWithContext<'c, 's,'m> {
let unicode_full = rules.unicode_full.borrow();
for ch in unicode.keys() {
if unicode_full.get(ch).is_some() {
- error!("*** Character '{}' (0x{:X}) is repeated in both short and full unicode tables", char::from_u32(*ch).unwrap(), *ch as u32);
+ error!("*** Character '{}' (0x{:X}) is repeated in both short and full unicode tables", *ch, *ch);
}
}
}
diff --git a/src/tts.rs b/src/tts.rs
index 0144a17dd..a6a3c4b5b 100644
--- a/src/tts.rs
+++ b/src/tts.rs
@@ -196,26 +196,25 @@ pub enum TTSCommandValue {
}
impl TTSCommandValue {
- fn get_num(&self) -> f64 {
+ fn get_num(&self) -> Result {
match self {
- TTSCommandValue::Number(n) => return *n,
- _ => panic!("Internal error: TTSCommandValue is not a number"),
+ TTSCommandValue::Number(n) => Ok(*n),
+ _ => bail!("Internal error: TTSCommandValue is not a number"),
}
}
- fn get_string(&self) -> &String {
+ fn get_string(&self) -> Result<&String> {
match self {
- TTSCommandValue::String(s) => return s,
- _ => panic!("Internal error: TTSCommandValue is not a string"),
+ TTSCommandValue::String(s) => Ok(s),
+ _ => bail!("Internal error: TTSCommandValue is not a string"),
}
}
- fn get_pronounce(&self) -> &Pronounce {
+ fn get_pronounce(&self) -> Result<&Pronounce> {
match self {
- TTSCommandValue::Pronounce(p) => return p,
- _ => panic!("Internal error: TTSCommandValue is not a 'pronounce' command'"),
+ TTSCommandValue::Pronounce(p) => Ok(p),
+ _ => bail!("Internal error: TTSCommandValue is not a 'pronounce' command"),
}
-
}
}
@@ -456,16 +455,16 @@ impl TTS {
// small optimization to avoid generating tags that do nothing
- if ((command.command == TTSCommand::Pitch || command.command == TTSCommand::Volume || command.command == TTSCommand::Pause) && command.value.get_num() == 0.0) ||
- (command.command == TTSCommand::Rate && command.value.get_num() == 100.0) {
+ if ((command.command == TTSCommand::Pitch || command.command == TTSCommand::Volume || command.command == TTSCommand::Pause) && command.value.get_num()? == 0.0) ||
+ (command.command == TTSCommand::Rate && command.value.get_num()? == 100.0) {
return command.replacements.replace::(rules_with_context, mathml);
}
let mut result = String::with_capacity(255);
result += &match self {
- TTS::None => self.get_string_none(&command, prefs, true),
- TTS::SSML => self.get_string_ssml(&command, prefs, true),
- TTS::SAPI5 => self.get_string_sapi5(&command, prefs, true),
+ TTS::None => self.get_string_none(&command, prefs, true)?,
+ TTS::SSML => self.get_string_ssml(&command, prefs, true)?,
+ TTS::SAPI5 => self.get_string_sapi5(&command, prefs, true)?,
};
@@ -478,9 +477,9 @@ impl TTS {
}
let end_tag = match self {
- TTS::None => self.get_string_none(&command, prefs, false),
- TTS::SSML => self.get_string_ssml(&command, prefs, false),
- TTS::SAPI5 => self.get_string_sapi5(&command, prefs, false),
+ TTS::None => self.get_string_none(&command, prefs, false)?,
+ TTS::SSML => self.get_string_ssml(&command, prefs, false)?,
+ TTS::SAPI5 => self.get_string_sapi5(&command, prefs, false)?,
};
if end_tag.is_empty() {
@@ -504,13 +503,13 @@ impl TTS {
// auto pausing can't be known until neighboring strings are computed
// we create a unique string in this case and compute the real value later
- fn get_string_none(&self, command: &TTSCommandRule, prefs: &PreferenceManager, is_start_tag: bool) -> String {
+ fn get_string_none(&self, command: &TTSCommandRule, prefs: &PreferenceManager, is_start_tag: bool) -> Result {
// they only thing to do is handle "pause" with some punctuation hacks along with 'spell'
if is_start_tag {
if command.command == TTSCommand::Pause {
- let amount = command.value.get_num();
+ let amount = command.value.get_num()?;
// only ',' and ';' are used as '.' didn't seem to reliably generate pauses in tests
- return crate::speech::CONCAT_INDICATOR.to_string() + (
+ return Ok(crate::speech::CONCAT_INDICATOR.to_string() + (
if amount == PAUSE_AUTO {
PAUSE_AUTO_STR
} else {
@@ -523,22 +522,22 @@ impl TTS {
";"
}
}
- );
+ ));
} else if command.command == TTSCommand::Spell {
// debug!("spell rule: {}", command.value.get_string());
- return command.value.get_string().to_string();
+ return Ok(command.value.get_string()?.to_string());
} else if let TTSCommandValue::Pronounce(p) = &command.value {
- return crate::speech::CONCAT_INDICATOR.to_string() + &p.text;
+ return Ok(crate::speech::CONCAT_INDICATOR.to_string() + &p.text);
}
};
- return "".to_string();
+ return Ok("".to_string());
}
- fn get_string_sapi5(&self, command: &TTSCommandRule, prefs: &PreferenceManager, is_start_tag: bool) -> String {
+ fn get_string_sapi5(&self, command: &TTSCommandRule, prefs: &PreferenceManager, is_start_tag: bool) -> Result {
return match &command.command {
TTSCommand::Pause => if is_start_tag {
- let amount = command.value.get_num();
- if amount == PAUSE_AUTO {
+ let amount = command.value.get_num()?;
+ Ok(if amount == PAUSE_AUTO {
PAUSE_AUTO_STR.to_string()
} else {
let amount = amount * TTS::get_pause_multiplier(prefs);
@@ -547,35 +546,60 @@ impl TTS {
} else {
"".to_string()
}
- }
+ })
} else {
- "".to_string()
+ Ok("".to_string())
},
// pitch must be in [-10, 10], logarithmic based on octaves
// note MathPlayer uses 'absmiddle' (requires keeping a stack) -- could be 'middle' is not well supported
- TTSCommand::Pitch => if is_start_tag {format!("", (24.0*(1.0+command.value.get_num()/100.0).log2()).round())} else {String::from("")},
+ TTSCommand::Pitch => if is_start_tag {
+ Ok(format!("", (24.0*(1.0+command.value.get_num()?/100.0).log2()).round()))
+ } else {
+ Ok(String::from(""))
+ },
// rate must be in [-10, 10], but we get relative %s. 300% => 10 (see comments at top of file)
- TTSCommand::Rate => if is_start_tag {format!("", 10.0*(0.01*command.value.get_num()).log(3.0))} else {String::from("")},
- TTSCommand::Volume =>if is_start_tag {format!("", command.value.get_num())} else {String::from("")},
- TTSCommand::Audio => "".to_string(), // SAPI5 doesn't support audio
- TTSCommand::Gender =>if is_start_tag {format!("", command.value.get_string())} else {String::from("")},
- TTSCommand::Voice =>if is_start_tag {format!("", command.value.get_string())} else {String::from("")},
- TTSCommand::Spell =>if is_start_tag {format!("{}", command.value.get_string())} else {String::from("")},
- TTSCommand::Pronounce =>if is_start_tag {
- format!("{}", &command.value.get_pronounce().sapi5, &command.value.get_pronounce().text)
- } else {
- String::from("")
- },
- TTSCommand::Bookmark => panic!("Internal error: bookmarks should have been handled earlier"),
+ TTSCommand::Rate => if is_start_tag {
+ Ok(format!("", 10.0*(0.01*command.value.get_num()?).log(3.0)))
+ } else {
+ Ok(String::from(""))
+ },
+ TTSCommand::Volume => if is_start_tag {
+ Ok(format!("", command.value.get_num()?))
+ } else {
+ Ok(String::from(""))
+ },
+ TTSCommand::Audio => Ok("".to_string()), // SAPI5 doesn't support audio
+ TTSCommand::Gender => if is_start_tag {
+ Ok(format!("", command.value.get_string()?))
+ } else {
+ Ok(String::from(""))
+ },
+ TTSCommand::Voice => if is_start_tag {
+ Ok(format!("", command.value.get_string()?))
+ } else {
+ Ok(String::from(""))
+ },
+ TTSCommand::Spell => if is_start_tag {
+ Ok(format!("{}", command.value.get_string()?))
+ } else {
+ Ok(String::from(""))
+ },
+ TTSCommand::Pronounce => if is_start_tag {
+ let pronounce = command.value.get_pronounce()?;
+ Ok(format!("{}", &pronounce.sapi5, &pronounce.text))
+ } else {
+ Ok(String::from(""))
+ },
+ TTSCommand::Bookmark => bail!("Internal error: bookmarks should have been handled earlier"),
};
}
- fn get_string_ssml(&self, command: &TTSCommandRule, prefs: &PreferenceManager, is_start_tag: bool) -> String {
+ fn get_string_ssml(&self, command: &TTSCommandRule, prefs: &PreferenceManager, is_start_tag: bool) -> Result {
return match &command.command {
TTSCommand::Pause => {
if is_start_tag {
- let amount = command.value.get_num();
- if amount == PAUSE_AUTO {
+ let amount = command.value.get_num()?;
+ Ok(if amount == PAUSE_AUTO {
PAUSE_AUTO_STR.to_string()
} else {
let amount = amount * TTS::get_pause_multiplier(prefs);
@@ -584,25 +608,54 @@ impl TTS {
} else {
"".to_string()
}
- }
+ })
} else {
- "".to_string()
+ Ok("".to_string())
}
},
- TTSCommand::Pitch => if is_start_tag {format!("", command.value.get_num())} else {String::from("")},
- TTSCommand::Rate => if is_start_tag {format!("", command.value.get_num())} else {String::from("")},
- TTSCommand::Volume =>if is_start_tag {format!("", command.value.get_num())} else {String::from("")},
- TTSCommand::Audio =>if is_start_tag {format!("")}, // only 'beep' is supported for now
- TTSCommand::Gender =>if is_start_tag {format!("", command.value.get_string())} else {String::from("")},
- TTSCommand::Voice =>if is_start_tag {format!("", command.value.get_string())} else {String::from("")},
- TTSCommand::Spell =>if is_start_tag {format!("{}", command.value.get_string())} else {String::from("")},
- TTSCommand::Pronounce =>if is_start_tag {
- format!("{}", &command.value.get_pronounce().ipa, &command.value.get_pronounce().text)
+ TTSCommand::Pitch => if is_start_tag {
+ Ok(format!("", command.value.get_num()?))
} else {
- String::from("")
+ Ok(String::from(""))
},
- TTSCommand::Bookmark => panic!("Internal error: bookmarks should have been handled earlier"),
- }
+ TTSCommand::Rate => if is_start_tag {
+ Ok(format!("", command.value.get_num()?))
+ } else {
+ Ok(String::from(""))
+ },
+ TTSCommand::Volume => if is_start_tag {
+ Ok(format!("", command.value.get_num()?))
+ } else {
+ Ok(String::from(""))
+ },
+ TTSCommand::Audio => if is_start_tag {
+ Ok(format!(""))
+ }, // only 'beep' is supported for now
+ TTSCommand::Gender => if is_start_tag {
+ Ok(format!("", command.value.get_string()?))
+ } else {
+ Ok(String::from(""))
+ },
+ TTSCommand::Voice => if is_start_tag {
+ Ok(format!("", command.value.get_string()?))
+ } else {
+ Ok(String::from(""))
+ },
+ TTSCommand::Spell => if is_start_tag {
+ Ok(format!("{}", command.value.get_string()?))
+ } else {
+ Ok(String::from(""))
+ },
+ TTSCommand::Pronounce => if is_start_tag {
+ let pronounce = command.value.get_pronounce()?;
+ Ok(format!("{}", &pronounce.ipa, &pronounce.text))
+ } else {
+ Ok(String::from(""))
+ },
+ TTSCommand::Bookmark => bail!("Internal error: bookmarks should have been handled earlier"),
+ };
}
fn get_pause_multiplier(prefs: &PreferenceManager) -> f64 {
@@ -613,7 +666,7 @@ impl TTS {
///
/// The computation is based on the length of the speech strings (after removing tagging).
/// There is a bias towards pausing more _after_ longer strings.
- pub fn compute_auto_pause(&self, prefs: &PreferenceManager, before: &str, after: &str) -> String {
+ pub fn compute_auto_pause(&self, prefs: &PreferenceManager, before: &str, after: &str) -> Result {
static REMOVE_XML: LazyLock = LazyLock::new(|| Regex::new(r"<.+?>").unwrap()); // punctuation ending with a '.'
let before_len;
let after_len;
@@ -635,7 +688,7 @@ impl TTS {
if after_len < 3 {
// hack to prevent pausing before "of" in exprs like "the fourth power of secant, of x"
// if it should pause anywhere, it should be after the "of"
- return "".to_string();
+ return Ok("".to_string());
}
let pause = std::cmp::min(3000, ((2 * before_len + after_len)/48) * 128);
// create a TTSCommandRule so we reuse code
diff --git a/src/xpath_functions.rs b/src/xpath_functions.rs
index 3ee936dfc..944e505f8 100644
--- a/src/xpath_functions.rs
+++ b/src/xpath_functions.rs
@@ -1609,22 +1609,31 @@ pub fn add_builtin_functions(context: &mut Context) {
#[cfg(test)]
mod tests {
use super::*;
+ use crate::errors::Result;
+ use crate::interface::{get_element, init_panic_handler, report_any_panic, trim_element};
use sxd_document::parser;
- use crate::interface::{trim_element, get_element};
+ use std::panic::{catch_unwind, AssertUnwindSafe};
+ fn xpath_test(f: F) -> Result<()>
+ where
+ F: FnOnce() -> Result<()> + std::panic::UnwindSafe,
+ {
+ init_panic_handler();
+ let result = catch_unwind(AssertUnwindSafe(f));
+ return report_any_panic(result);
+ }
- fn init_word_list() {
- crate::interface::set_rules_dir(super::super::abs_rules_dir_path()).unwrap();
- crate::interface::set_preference("Language", "en").unwrap();
- let result = crate::definitions::read_definitions_file(true);
- if let Err(e) = result {
- panic!("unable to read 'Rules/Languages/en/definitions.yaml\n{e}");
- }
+ fn init_word_list() -> Result<()> {
+ crate::interface::set_rules_dir(super::super::abs_rules_dir_path())?;
+ crate::interface::set_preference("Language", "en")?;
+ crate::definitions::read_definitions_file(true)?;
+ return Ok( () );
}
#[test]
- fn ordinal_one_digit() {
- init_word_list();
+ fn ordinal_one_digit() -> Result<()> {
+ return xpath_test(|| {
+ init_word_list()?;
assert_eq!("zeroth", ToOrdinal::convert("0", false, false).unwrap());
assert_eq!("second", ToOrdinal::convert("2", false, false).unwrap());
assert_eq!("ninth", ToOrdinal::convert("9", false, false).unwrap());
@@ -1641,11 +1650,14 @@ mod tests {
assert_eq!("halves", ToOrdinal::convert("2", true, true).unwrap());
assert_eq!("halves", ToOrdinal::convert("002", true, true).unwrap());
assert_eq!("ninths", ToOrdinal::convert("9", true, true).unwrap());
+ return Ok( () );
+ });
}
#[test]
- fn ordinal_two_digit() {
- init_word_list();
+ fn ordinal_two_digit() -> Result<()> {
+ return xpath_test(|| {
+ init_word_list()?;
assert_eq!("tenth", ToOrdinal::convert("10", false, false).unwrap());
assert_eq!("seventeenth", ToOrdinal::convert("17", false, false).unwrap());
assert_eq!("thirty second", ToOrdinal::convert("32", false, false).unwrap());
@@ -1668,11 +1680,14 @@ mod tests {
assert_eq!("nineteenths", ToOrdinal::convert("19", true, true).unwrap());
assert_eq!("twentieths", ToOrdinal::convert("20", true, true).unwrap());
assert_eq!("nineteenths", ToOrdinal::convert("𝟏𝟗", true, true).unwrap());
+ return Ok( () );
+ });
}
#[test]
- fn ordinal_three_digit() {
- init_word_list();
+ fn ordinal_three_digit() -> Result<()> {
+ return xpath_test(|| {
+ init_word_list()?;
assert_eq!("one hundred first", ToOrdinal::convert("101", false, false).unwrap());
assert_eq!("two hundred tenth", ToOrdinal::convert("210", false, false).unwrap());
assert_eq!("four hundred thirty second", ToOrdinal::convert("432", false, false).unwrap());
@@ -1691,10 +1706,13 @@ mod tests {
assert_eq!("seven hundredths", ToOrdinal::convert("700", true, true).unwrap());
assert_eq!("one hundredths", ToOrdinal::convert("100", true, true).unwrap());
assert_eq!("eight hundred seventeenths", ToOrdinal::convert("817", true, true).unwrap());
+ return Ok( () );
+ });
}
#[test]
- fn ordinal_large() {
- init_word_list();
+ fn ordinal_large() -> Result<()> {
+ return xpath_test(|| {
+ init_word_list()?;
assert_eq!("one thousandth", ToOrdinal::convert("1000", false, false).unwrap());
assert_eq!("two thousand one hundredth", ToOrdinal::convert("2100", false, false).unwrap());
assert_eq!("thirty thousandth", ToOrdinal::convert("30000", false, false).unwrap());
@@ -1713,89 +1731,101 @@ mod tests {
assert_eq!("nine billion eight hundred seventy six million five hundred forty three thousand two hundred tenths", ToOrdinal::convert("9876543210", true, true).unwrap());
assert_eq!("nine billion five hundred forty three thousand two hundred tenths", ToOrdinal::convert("9000543210", true, true).unwrap());
assert_eq!("zeroth", ToOrdinal::convert("00000", false, false).unwrap());
+ return Ok( () );
+ });
}
- fn test_is_simple(message: &'static str, mathml_str: &'static str) {
+ fn test_is_simple(message: &'static str, mathml_str: &'static str) -> Result<()> {
// this forces initialization
crate::speech::SPEECH_RULES.with(|_| true);
let package = parser::parse(mathml_str)
- .expect("failed to parse XML");
+ .map_err(|e| anyhow::anyhow!("failed to parse XML: {e}"))?;
let mathml = get_element(&package);
trim_element(mathml, false);
assert!(IsNode::is_simple(mathml), "{}", message);
+ return Ok( () );
}
- fn test_is_not_simple(message: &'static str, mathml_str: &'static str) {
+ fn test_is_not_simple(message: &'static str, mathml_str: &'static str) -> Result<()> {
// this forces initialization
crate::speech::SPEECH_RULES.with(|_| true);
let package = parser::parse(mathml_str)
- .expect("failed to parse XML");
+ .map_err(|e| anyhow::anyhow!("failed to parse XML: {e}"))?;
let mathml = get_element(&package);
trim_element(mathml, false);
assert!(!IsNode::is_simple(mathml), "{}", message);
+ return Ok( () );
}
#[test]
- fn is_simple() {
- test_is_simple("single variable", "x");
- test_is_simple("single number", "1.2");
- test_is_simple("negative number", "-10");
- test_is_simple("negative variable", "-x");
- test_is_simple("ordinal fraction", "34");
- test_is_simple("x y", "xy");
+ fn is_simple() -> Result<()> {
+ return xpath_test(|| {
+ test_is_simple("single variable", "x")?;
+ test_is_simple("single number", "1.2")?;
+ test_is_simple("negative number", "-10")?;
+ test_is_simple("negative variable", "-x")?;
+ test_is_simple("ordinal fraction", "34")?;
+ test_is_simple("x y", "xy")?;
test_is_simple("negative two vars",
- "-xy");
+ "-xy")?;
test_is_simple("-2 x y",
"-2
- xz");
- test_is_simple("sin x", "sinx");
- test_is_simple("f(x)", "f(x)");
+ xz")?;
+ test_is_simple("sin x", "sinx")?;
+ test_is_simple("f(x)", "f(x)")?;
test_is_simple("f(x+y)",
"f\
- (x+y)");
-
+ (x+y)")?;
+ return Ok( () );
+ });
}
#[test]
- fn is_not_simple() {
- test_is_not_simple("multi-char variable", "rise");
- test_is_not_simple("large ordinal fraction", "304");
- test_is_not_simple("fraction with var in numerator", "x4");
- test_is_not_simple("square root", "x");
- test_is_not_simple("subscript", "x4");
+ fn is_not_simple() -> Result<()> {
+ return xpath_test(|| {
+ test_is_not_simple("multi-char variable", "rise")?;
+ test_is_not_simple("large ordinal fraction", "304")?;
+ test_is_not_simple("fraction with var in numerator", "x4")?;
+ test_is_not_simple("square root", "x")?;
+ test_is_not_simple("subscript", "x4")?;
test_is_not_simple("-x y z",
"-x
- yz");
+ yz")?;
test_is_not_simple("C(-2,1,4)", // github.com/NSoiffer/MathCAT/issues/199
- "C(−2,1,4)");
-
+ "C(−2,1,4)")?;
+ return Ok( () );
+ });
}
- fn check_table_dims(mathml: &str, dims: (usize, usize)) {
- let package = parser::parse(mathml).expect("failed to parse XML");
+ fn check_table_dims(mathml: &str, dims: (usize, usize)) -> Result<()> {
+ let package = parser::parse(mathml).map_err(|e| anyhow::anyhow!("failed to parse XML: {e}"))?;
let math_elem = get_element(&package);
let child = as_element(math_elem.children()[0]);
assert!(CountTableDims::new().count_table_dims(child) == Ok((Value::Number(dims.0 as f64), Value::Number(dims.1 as f64))));
+ return Ok( () );
}
#[test]
- fn table_dim() {
- check_table_dims("a", (1, 1));
- check_table_dims("ab", (2, 4));
+ fn table_dim() -> Result<()> {
+ return xpath_test(|| {
+ check_table_dims("a", (1, 1))?;
+ check_table_dims("ab", (2, 4))?;
- check_table_dims("labelabcd", (2, 2));
+ check_table_dims("labelabcd", (2, 2))?;
// extended rows beyond the `mtr`s do *not* count towards the row count.
- check_table_dims("a", (1, 1));
+ check_table_dims("a", (1, 1))?;
check_table_dims("a
-b", (2, 3));
-
+b", (2, 3))?;
+ return Ok( () );
+ });
}
#[test]
- fn at_left_edge() {
+ fn at_left_edge() -> Result<()> {
+ return xpath_test(|| {
let mathml = "30x4";
- let package = parser::parse(mathml).expect("failed to parse XML");
+ let package = parser::parse(mathml).map_err(|e| anyhow::anyhow!("failed to parse XML: {e}"))?;
let mathml = get_element(&package);
trim_element(mathml, false);
let fraction = as_element(mathml.children()[0]);
@@ -1805,12 +1835,15 @@ mod tests {
let mi = as_element(as_element(fraction.children()[0]).children()[1]);
assert_eq!(EdgeNode::edge_node(mi, true, "2D"), None);
+ return Ok( () );
+ });
}
#[test]
- fn at_right_edge() {
+ fn at_right_edge() -> Result<()> {
+ return xpath_test(|| {
let mathml = "430x.";
- let package = parser::parse(mathml).expect("failed to parse XML");
+ let package = parser::parse(mathml).map_err(|e| anyhow::anyhow!("failed to parse XML: {e}"))?;
let mathml = get_element(&package);
trim_element(mathml, false);
let fraction = as_element(as_element(mathml.children()[0]).children()[0]);
@@ -1821,5 +1854,7 @@ mod tests {
let mn = as_element(as_element(fraction.children()[1]).children()[0]);
assert_eq!(EdgeNode::edge_node(mn, true, "2D"), None);
+ return Ok( () );
+ });
}
}
diff --git a/tests/Languages/hu/ClearSpeak/large_ops.rs b/tests/Languages/hu/ClearSpeak/large_ops.rs
index 994dafff6..c50d483b4 100644
--- a/tests/Languages/hu/ClearSpeak/large_ops.rs
+++ b/tests/Languages/hu/ClearSpeak/large_ops.rs
@@ -128,7 +128,7 @@ fn intersection_both() -> Result<()> {
Si
";
- test("hu", "ClearSpeak", expr, "kereszteződés ettől: i egyenlő 1, eddig: 10 értéke:; nagy s alsó index i")?;
+ test("hu", "ClearSpeak", expr, "metszet ettől: i egyenlő 1, eddig: 10 értéke:; nagy s alsó index i")?;
return Ok(());
}
@@ -143,7 +143,7 @@ fn intersection_under() -> Result<()> {
Si
";
- test("hu", "ClearSpeak", expr, "kereszteződés alatta nagy c, nagy s alsó index i")?;
+ test("hu", "ClearSpeak", expr, "metszet alatta nagy c, nagy s alsó index i")?;
return Ok(());
}
@@ -155,7 +155,7 @@ fn intersection() -> Result<()> {
⋂
Si
";
- test("hu", "ClearSpeak", expr, "kereszteződés nagy s alsó index i")?;
+ test("hu", "ClearSpeak", expr, "metszet nagy s alsó index i")?;
return Ok(());
}
diff --git a/tests/Languages/hu/SimpleSpeak/large_ops.rs b/tests/Languages/hu/SimpleSpeak/large_ops.rs
index 1d798202c..09e30e109 100644
--- a/tests/Languages/hu/SimpleSpeak/large_ops.rs
+++ b/tests/Languages/hu/SimpleSpeak/large_ops.rs
@@ -128,7 +128,7 @@ fn intersection_both() -> Result<()> {
Si
";
- test("hu", "SimpleSpeak", expr, "kereszteződés ettől: i egyenlő 1, eddig: 10 értéke:; nagy s alsó index i")?;
+ test("hu", "SimpleSpeak", expr, "metszet ettől: i egyenlő 1, eddig: 10 értéke:; nagy s alsó index i")?;
return Ok(());
}
@@ -143,7 +143,7 @@ fn intersection_under() -> Result<()> {
Si
";
- test("hu", "SimpleSpeak", expr, "kereszteződés alatta nagy c, nagy s alsó index i")?;
+ test("hu", "SimpleSpeak", expr, "metszet alatta nagy c, nagy s alsó index i")?;
return Ok(());
}
@@ -155,7 +155,7 @@ fn intersection() -> Result<()> {
⋂
Si
";
- test("hu", "SimpleSpeak", expr, "kereszteződés nagy s alsó index i")?;
+ test("hu", "SimpleSpeak", expr, "metszet nagy s alsó index i")?;
return Ok(());
}
diff --git a/tests/Languages/hu/alphabets.rs b/tests/Languages/hu/alphabets.rs
index 7fcdecbda..3c582e79f 100644
--- a/tests/Languages/hu/alphabets.rs
+++ b/tests/Languages/hu/alphabets.rs
@@ -12,7 +12,7 @@ fn special_alphabet_chars() -> Result<()> {
let expr = " ℍ,ℿ";
test("hu", "SimpleSpeak", expr, "dupla leütésű nagy h, vessző; dupla leütésű nagy pí")?;
let expr = " ℐ,ℳ";
- test("hu", "SimpleSpeak", expr, "script nagy i vessző, script nagy m")?;
+ test("hu", "SimpleSpeak", expr, "alsó index nagy i, vessző, alsó index nagy m")?;
return Ok(());
}
@@ -37,7 +37,7 @@ fn greek() -> Result<()> {
#[test]
fn cap_cyrillic() -> Result<()> {
let expr = " А,Я";
- test("hu", "SimpleSpeak", expr, "nagybetű а vessző, nagybetű ya")?;
+ test("hu", "SimpleSpeak", expr, "nagy а vessző, nagy ciril ya")?;
return Ok(());
}
@@ -120,14 +120,14 @@ fn double_struck() -> Result<()> {
#[test]
fn script() -> Result<()> {
let expr = " 𝒜,𝒵";
- test("hu", "SimpleSpeak", expr, "script nagy a vessző, script nagy z")?;
+ test("hu", "SimpleSpeak", expr, "alsó index nagy a, vessző, alsó index nagy z")?;
let expr = " 𝒶,𝓏";
- test("hu", "SimpleSpeak", expr, "script a vessző, script z")?;
+ test("hu", "SimpleSpeak", expr, "alsó index a vessző, alsó index z")?;
// MathType private space versions
let expr = " ,";
- test("hu", "SimpleSpeak", expr, "script nagy a vessző, script nagy z")?;
+ test("hu", "SimpleSpeak", expr, "alsó index nagy a, vessző, alsó index nagy z")?;
let expr = " ,";
- test("hu", "SimpleSpeak", expr, "script a vessző, script z")?;
+ test("hu", "SimpleSpeak", expr, "alsó index a vessző, alsó index z")?;
return Ok(());
}
@@ -136,14 +136,14 @@ fn script() -> Result<()> {
#[test]
fn bold_script() -> Result<()> {
let expr = " 𝓐,𝓩";
- test("hu", "SimpleSpeak", expr, "script félkövér nagy a, vessző; script félkövér nagy z")?;
+ test("hu", "SimpleSpeak", expr, "alsó index félkövér nagy a, vessző; alsó index félkövér nagy z")?;
let expr = " 𝓪,𝔃";
- test("hu", "SimpleSpeak", expr, "script félkövér a, vessző, script félkövér z")?;
+ test("hu", "SimpleSpeak", expr, "alsó index félkövér a, vessző; alsó index félkövér z")?;
// MathType private space versions
let expr = " ,";
- test("hu", "SimpleSpeak", expr, "script félkövér nagy a, vessző; script félkövér nagy z")?;
+ test("hu", "SimpleSpeak", expr, "alsó index félkövér nagy a, vessző; alsó index félkövér nagy z")?;
let expr = " ,";
- test("hu", "SimpleSpeak", expr, "script félkövér a, vessző, script félkövér z")?;
+ test("hu", "SimpleSpeak", expr, "alsó index félkövér a, vessző; alsó index félkövér z")?;
return Ok(());
}
diff --git a/tests/Languages/hu/intent.rs b/tests/Languages/hu/intent.rs
index c5c2fa3ec..659936680 100644
--- a/tests/Languages/hu/intent.rs
+++ b/tests/Languages/hu/intent.rs
@@ -7,18 +7,44 @@ use anyhow::Result;
// AI generated
#[test]
fn silent_intent() -> Result<()> {
- let expr = " 2 x ";
+ let expr = " 2 x ";
test("hu", "SimpleSpeak", expr, "2 x")?;
test("hu", "LiteralSpeak", expr, "2 x")?;
return Ok(());
}
+#[test]
+fn silent_intent_underscore() -> Result<()> {
+ let expr = "
+
+ H
+ 2
+ ";
+ test("hu", "SimpleSpeak", expr, "nagy h vessző, 2")?;
+ test("hu", "ClearSpeak", expr, "nagy h vessző, 2")?;
+ return Ok(());
+
+}
+
+#[test]
+fn intent_prob_x() -> Result<()> {
+ //init_logger();
+ let expr = "
+
+ x
+ P
+ ";
+ test("hu", "ClearSpeak", expr, "valószínűség x")?;
+ return Ok(());
+
+}
+
// AI generated
#[test]
fn prefix_intent() -> Result<()> {
- let expr = r#" x T "#;
- test("hu", "SimpleSpeak", expr, "testing x")?;
+ let expr = r#" x T "#;
+ test("hu", "SimpleSpeak", expr, "tesztelés x")?;
return Ok(());
}
@@ -26,8 +52,8 @@ fn prefix_intent() -> Result<()> {
// AI generated
#[test]
fn postfix_intent() -> Result<()> {
- let expr = r#" x T "#;
- test("hu", "SimpleSpeak", expr, "x testing")?;
+ let expr = r#" x T "#;
+ test("hu", "SimpleSpeak", expr, "x tesztelése")?;
return Ok(());
}
@@ -35,12 +61,12 @@ fn postfix_intent() -> Result<()> {
// AI generated
#[test]
fn infix_intent() -> Result<()> {
- let expr = r#"
+ let expr = r#"
x
y
z
"#;
- test("hu", "SimpleSpeak", expr, "x testing y testing z testing 2")?;
+ test("hu", "SimpleSpeak", expr, "x tesztelés y tesztelés z tesztelés 2")?;
return Ok(());
}
@@ -49,7 +75,7 @@ fn infix_intent() -> Result<()> {
#[test]
fn infix_intent_no_args() -> Result<()> {
// this is illegal intent, so it is just an mrow with one child
- let expr = r#"
+ let expr = r#"
x
"#;
test("hu", "SimpleSpeak", expr, "x")?;
@@ -60,11 +86,11 @@ fn infix_intent_no_args() -> Result<()> {
// AI generated
#[test]
fn infix_intent_one_arg() -> Result<()> {
- let expr = r#"
+ let expr = r#"
x
"#;
// Note: we say the intent name because there are infix plus/minus with a single arg due to continued rows or combined columns
- test("hu", "SimpleSpeak", expr, "testing x")?;
+ test("hu", "SimpleSpeak", expr, "teszteljük x")?;
return Ok(());
}
@@ -72,12 +98,12 @@ fn infix_intent_one_arg() -> Result<()> {
// AI generated
#[test]
fn function_intent() -> Result<()> {
- let expr = r#"
+ let expr = r#"
x
y
z
"#;
- test("hu", "SimpleSpeak", expr, "testing x vessző, y vessző, z vessző, 2")?;
+ test("hu", "SimpleSpeak", expr, "teszteljük x vessző, y vessző, z vessző, 2")?;
return Ok(());
}
@@ -86,7 +112,7 @@ fn function_intent() -> Result<()> {
#[test]
fn function_no_args_intent() -> Result<()> {
// this is illegal intent, so it is just an mrow with one child
- let expr = r#"
+ let expr = r#"
x
"#;
test("hu", "SimpleSpeak", expr, "x")?;
@@ -97,10 +123,10 @@ fn function_no_args_intent() -> Result<()> {
// AI generated
#[test]
fn function_one_arg_intent() -> Result<()> {
- let expr = r#"
+ let expr = r#"
x
"#;
- test("hu", "SimpleSpeak", expr, "testing x")?;
+ test("hu", "SimpleSpeak", expr, "teszteljük x")?;
return Ok(());
}
diff --git a/tests/Languages/hu/shared.rs b/tests/Languages/hu/shared.rs
index 1d47de7fe..c3278cc99 100644
--- a/tests/Languages/hu/shared.rs
+++ b/tests/Languages/hu/shared.rs
@@ -477,14 +477,14 @@ fn literal_speak_perpendicular() -> Result<()> {
A
→
- ⊥
+ ⊥
B
→
"#;
- test("hu", "LiteralSpeak", expr, "nagy a jobbra nyíl, perpendicular to, nagy b jobbra nyíl")?;
+ test("hu", "LiteralSpeak", expr, "nagy a jobbra nyíl, merőleges nagy b jobbra nyíl")?;
return Ok(());
}
@@ -513,7 +513,7 @@ fn literal_speak_chars() -> Result<()> {
// AI generated
#[test]
fn literal_speak_with_name() -> Result<()> {
- let expr = r#"
+ let expr = r#"
f
@@ -527,7 +527,7 @@ fn literal_speak_with_name() -> Result<()> {
"#;
- test("hu", "LiteralSpeak", expr, "forced f, bal zárójel, x felkiáltójel, jobb zárójel")?;
+ test("hu", "LiteralSpeak", expr, "kényszerített f, bal zárójel, x felkiáltójel, jobb zárójel")?;
return Ok(());
}
@@ -563,14 +563,14 @@ fn literal_intent_property() -> Result<()> {
A
→
- ⊥
+ ⊥
B
→
"#;
- test("hu", "SimpleSpeak", expr, "nagy a jobbra nyíl, perpendicular to, nagy b jobbra nyíl")?;
+ test("hu", "SimpleSpeak", expr, "nagy a jobbra nyíl, merőleges nagy b jobbra nyíl")?;
return Ok(());
}
@@ -578,7 +578,7 @@ fn literal_intent_property() -> Result<()> {
// AI generated
#[test]
fn literal_intent_property_with_name() -> Result<()> {
- let expr = r#"
+ let expr = r#"
f
@@ -592,7 +592,7 @@ fn literal_intent_property_with_name() -> Result<()> {
"#;
- test("hu", "SimpleSpeak", expr, "forced f, nyitott zárójel, x felkiáltójel, zárt zárójel")?;
+ test("hu", "SimpleSpeak", expr, "kényszerített f, nyitott zárójel, x felkiáltójel, zárt zárójel")?;
return Ok(());
}
diff --git a/tests/braille/Nemeth/other.rs b/tests/braille/Nemeth/other.rs
index 26435c1ba..27cb3b9c7 100644
--- a/tests/braille/Nemeth/other.rs
+++ b/tests/braille/Nemeth/other.rs
@@ -78,9 +78,7 @@ fn extra_indicators_bug_343() -> Result<()> {
#[test]
fn find_baseline_indicator_bug_364() -> Result<()> {
- use libmathcat::interface::*;
-
- // https://github.com/NSoiffer/MathCAT/issues/343 -- extra indicators before baseline indicator due to -x^2, not there for x^2
+ // https://github.com/NSoiffer/MathCAT/issues/364
let expr = r#"
π
@@ -91,19 +89,7 @@ fn find_baseline_indicator_bug_364() -> Result<()> {
"#;
- set_rules_dir(abs_rules_dir_path()).unwrap();
- set_preference("BrailleNavHighlight", "Off").unwrap();
- set_preference("BrailleCode", "Nemeth").unwrap();
- if let Err(e) = set_mathml(expr) {
- panic!("{}", errors_to_string(&e));
- };
- match get_navigation_node_from_braille_position(4) {
- Ok((node_id, offset)) => {
- assert_eq!(&node_id, "id-6");
- assert_eq!(offset, 0);
- }
- Err(e) => panic!("{}", errors_to_string(&e)),
- };
+ test_braille_nav_position("Nemeth", expr, 4, "id-6", 0)?;
return Ok(());
}
diff --git a/tests/braille/Swedish/swedish.rs b/tests/braille/Swedish/swedish.rs
index a66bbffe3..beff82b95 100644
--- a/tests/braille/Swedish/swedish.rs
+++ b/tests/braille/Swedish/swedish.rs
@@ -273,6 +273,7 @@ fn ex_6_14() -> Result<()> {
}
#[test]
+#[ignore] // need to figure out rationale for why a doubled "⠳⠳" is not used here
fn ex_6_15() -> Result<()> {
let expr= r#"b0+a1
b1+a2
@@ -284,6 +285,7 @@ fn ex_6_15() -> Result<()> {
}
#[test]
+#[ignore] // need to figure out rationale for why a doubled "⠿⠦" and close ""⠿⠴" is not used here
fn ex_6_16() -> Result<()> {
let expr= r#"z=7x−6y
5x+8y7x−6y
@@ -294,6 +296,7 @@ fn ex_6_16() -> Result<()> {
}
#[test]
+#[ignore] // need to figure out rationale for why a doubled "⠳⠳" is not used here
fn ex_6_17() -> Result<()> {
let expr= r#"z=1+7x−6y
5x+8y7x−6y
@@ -314,6 +317,7 @@ fn ex_6_18() -> Result<()> {
}
#[test]
+#[ignore] // need to figure out rationale for why "⠿⠴" is used in one place
fn ex_6_19() -> Result<()> {
// FIXED: Added non-breaking spaces around the text
let expr= r#"963,96
diff --git a/tests/common/mod.rs b/tests/common/mod.rs
index 13dfbeb45..5a51fff09 100644
--- a/tests/common/mod.rs
+++ b/tests/common/mod.rs
@@ -126,6 +126,24 @@ pub fn test_ClearSpeak_prefs(language: &str, prefs: Vec<(&str, &str)>, mathml: &
test_prefs(language, "ClearSpeak", prefs, mathml, speech)
}
+/// Speech language to use when testing a given `BrailleCode`.
+/// Nemeth, UEB, LaTeX, and ASCIIMath use English; other codes use their natural language pack.
+fn language_for_braille_code(code: &str) -> &'static str {
+ match code {
+ "Vietnam" => "vi",
+ "CMU" => "es",
+ "Swedish" => "sv",
+ "Finnish" => "fi",
+ "French" => "fr",
+ "Russian" => "ru",
+ _ => "en",
+ }
+}
+
+fn set_language_for_braille_code(code: &str) {
+ set_preference("Language", language_for_braille_code(code)).unwrap();
+}
+
// Compare the result of brailling the mathml input to the output (Unicode) 'braille'
#[allow(dead_code)] // used in testing
#[allow(non_snake_case)]
@@ -138,13 +156,7 @@ pub fn test_braille(code: &str, mathml: &str, braille: &str) -> Result<()> {
set_preference("BrailleNavHighlight", "Off").unwrap();
set_preference("BrailleCode", code).unwrap();
set_preference("LaTeX_UseShortName", "false").unwrap();
- // FIX: this shouldn't need to be done -- need to figure out how to get definitions set automatically
- // log::debug!("\nsetting Language");
- match code {
- "Vietnam" => set_preference("Language", "vi").unwrap(),
- "CMU" => set_preference("Language", "es").unwrap(),
- _ => set_preference("Language", "en").unwrap(),
- }
+ set_language_for_braille_code(code);
if let Err(e) = set_mathml(mathml) {
panic!("{}", errors_to_string(&e));
};
@@ -165,13 +177,7 @@ pub fn test_braille_prefs(code: &str, test_prefs: Vec<(&str, &str)>, mathml: &st
set_preference("DecimalSeparator", "Auto").unwrap();
set_preference("BrailleCode", code).unwrap();
- // FIX: this shouldn't need to be done -- need to figure out how to get definitions set automatically
- // log::debug!("\nsetting Language");
- match code {
- "Vietnam" => set_preference("Language", "vi").unwrap(),
- "CMU" => set_preference("Language", "es").unwrap(),
- _ => set_preference("Language", "en").unwrap(),
- }
+ set_language_for_braille_code(code);
set_preference("UseSpacesAroundAllOperators", "false").unwrap(); // makes testing simpler
for &(pref_name, pref_value) in &test_prefs {
@@ -190,6 +196,38 @@ pub fn test_braille_prefs(code: &str, test_prefs: Vec<(&str, &str)>, mathml: &st
report_any_panic(result)
}
+/// Setup braille and assert `get_navigation_node_from_braille_position` result.
+#[allow(dead_code)] // used in testing
+pub fn test_braille_nav_position(
+ code: &str,
+ mathml: &str,
+ braille_position: usize,
+ expected_node_id: &str,
+ expected_offset: usize,
+) -> Result<()> {
+ init_panic_handler();
+ let result = catch_unwind(AssertUnwindSafe(|| {
+ set_rules_dir(abs_rules_dir_path()).unwrap();
+ set_preference("DecimalSeparator", "Auto").unwrap();
+ set_preference("BrailleNavHighlight", "Off").unwrap();
+ set_preference("BrailleCode", code).unwrap();
+ set_preference("LaTeX_UseShortName", "false").unwrap();
+ set_language_for_braille_code(code);
+ if let Err(e) = set_mathml(mathml) {
+ panic!("{}", errors_to_string(&e));
+ };
+ match get_navigation_node_from_braille_position(braille_position) {
+ Ok((node_id, offset)) => {
+ assert_eq!(node_id, expected_node_id);
+ assert_eq!(offset, expected_offset);
+ }
+ Err(e) => panic!("{}", errors_to_string(&e)),
+ };
+ Ok(())
+ }));
+ report_any_panic(result)
+}
+
#[allow(dead_code)]
pub fn test_intent(mathml: &str, target: &str, test_prefs: Vec<(&str, &str)>) -> Result<()> {
use sxd_document::{dom::Element, parser};
@@ -269,13 +307,7 @@ pub fn test_from_braille(code: &str, mathml: &str, braille: &str) -> Result<()>
set_preference("BrailleNavHighlight", "Off").unwrap();
set_preference("BrailleCode", code).unwrap();
set_preference("LaTeX_UseShortName", "false").unwrap();
- // FIX: this shouldn't need to be done -- need to figure out how to get definitions set automatically
- // log::debug!("\nsetting Language");
- match code {
- "Vietnam" => set_preference("Language", "vi").unwrap(),
- "CMU" => set_preference("Language", "es").unwrap(),
- _ => set_preference("Language", "en").unwrap(),
- }
+ set_language_for_braille_code(code);
if let Err(e) = set_mathml(mathml) {
panic!("{}", errors_to_string(&e));
};