Catching bugs
This commit is contained in:
parent
c1c62fd720
commit
524a28629b
2883
FiraCode.glyphs
2883
FiraCode.glyphs
File diff suppressed because one or more lines are too long
|
@ -32,9 +32,20 @@
|
||||||
" " (str/join " " (drop 1 liga))
|
" " (str/join " " (drop 1 liga))
|
||||||
";\n"))))
|
";\n"))))
|
||||||
|
|
||||||
|
;; #346 We need << <<< >> >>> || ||| substituted before -- --- == ===
|
||||||
|
;; so that `ignore [less greater bar] hyphen hyphen` would not trigger
|
||||||
|
(def priority?
|
||||||
|
#{["less" "less"]
|
||||||
|
["less" "less" "less"]
|
||||||
|
["greater" "greater"]
|
||||||
|
["greater" "greater" "greater"]
|
||||||
|
["bar" "bar"]
|
||||||
|
["bar" "bar" "bar"]})
|
||||||
|
|
||||||
|
|
||||||
(def ignores
|
(def ignores
|
||||||
{ ["slash" "asterisk"]
|
(coll/multimap-by str
|
||||||
|
["slash" "asterisk"]
|
||||||
(str
|
(str
|
||||||
" ignore sub slash' asterisk slash;\n"
|
" ignore sub slash' asterisk slash;\n"
|
||||||
" ignore sub asterisk slash' asterisk;\n")
|
" ignore sub asterisk slash' asterisk;\n")
|
||||||
|
@ -65,23 +76,6 @@
|
||||||
["colon" "greater"]
|
["colon" "greater"]
|
||||||
" ignore sub colon' greater equal;\n"
|
" ignore sub colon' greater equal;\n"
|
||||||
|
|
||||||
;; #346 =:=
|
|
||||||
["colon" "equal"]
|
|
||||||
" ignore sub equal colon' equal;\n"
|
|
||||||
|
|
||||||
;; #346 =!=
|
|
||||||
["exclam" "equal"]
|
|
||||||
" ignore sub equal exclam' equal;\n"
|
|
||||||
|
|
||||||
;; #346 <=< <=> <=| <=: <=! <=/
|
|
||||||
["less" "equal"]
|
|
||||||
" ignore sub less' equal [less greater bar colon exclam slash];\n"
|
|
||||||
|
|
||||||
;; #548 >=<
|
|
||||||
;; #346 >=> >=< >=| >=: >=! >=/
|
|
||||||
["greater" "equal"]
|
|
||||||
" ignore sub greater' equal [less greater bar colon exclam slash];\n"
|
|
||||||
|
|
||||||
;; #593 {|}
|
;; #593 {|}
|
||||||
["braceleft" "bar"]
|
["braceleft" "bar"]
|
||||||
" ignore sub braceleft' bar braceright;\n"
|
" ignore sub braceleft' bar braceright;\n"
|
||||||
|
@ -97,55 +91,92 @@
|
||||||
" ignore sub bracketleft bar' bracketright;\n"
|
" ignore sub bracketleft bar' bracketright;\n"
|
||||||
|
|
||||||
;; #410 <*>> <+>> <$>>
|
;; #410 <*>> <+>> <$>>
|
||||||
;; #346 >>->> >>=>>
|
|
||||||
["greater" "greater"]
|
["greater" "greater"]
|
||||||
(str " ignore sub [asterisk plus dollar hyphen equal] greater' greater;\n"
|
" ignore sub [asterisk plus dollar] greater' greater;\n"
|
||||||
" ignore sub greater' greater [hyphen equal];\n")
|
|
||||||
|
|
||||||
;; #410 <*>>> <+>>> <$>>>
|
;; #410 <*>>> <+>>> <$>>>
|
||||||
;; #346 >>>->>> >>>=>>>
|
|
||||||
["greater" "greater" "greater"]
|
["greater" "greater" "greater"]
|
||||||
" ignore sub [asterisk plus dollar] greater' greater greater;\n"
|
" ignore sub [asterisk plus dollar] greater' greater greater;\n"
|
||||||
|
|
||||||
;; #410 <<*> <<+> <<$>
|
;; #410 <<*> <<+> <<$>
|
||||||
;; #346 <<-<< <<=<<
|
|
||||||
["less" "less"]
|
["less" "less"]
|
||||||
(str " ignore sub [hyphen equal] less' less;\n"
|
" ignore sub less' less [asterisk plus dollar];\n"
|
||||||
" ignore sub less' less [asterisk plus dollar hyphen equal];\n")
|
|
||||||
|
|
||||||
;; #410 <<<*> <<<+> <<<$>
|
;; #410 <<<*> <<<+> <<<$>
|
||||||
["less" "less" "less"]
|
["less" "less" "less"]
|
||||||
" ignore sub less' less less [asterisk plus dollar];\n"
|
" ignore sub less' less less [asterisk plus dollar];\n"
|
||||||
|
|
||||||
;; #968 [==
|
;; #968 [== ==]
|
||||||
;; #346 <==> >==< |==| /==/
|
|
||||||
["equal" "equal"]
|
["equal" "equal"]
|
||||||
(str " ignore sub [bracketleft less greater bar slash] equal' equal;\n"
|
(str " ignore sub bracketleft equal' equal;\n"
|
||||||
" ignore sub equal' equal [bracketright less greater bar slash] ;\n")
|
" ignore sub equal' equal bracketright;\n")
|
||||||
|
|
||||||
;; #968 [===
|
;; #968 [=== ===]
|
||||||
;; #346 <===> >===< |===| /===/
|
|
||||||
["equal" "equal" "equal"]
|
["equal" "equal" "equal"]
|
||||||
(str " ignore sub [bracketleft less greater bar slash] equal' equal equal;\n"
|
(str " ignore sub bracketleft equal' equal equal;\n"
|
||||||
" ignore sub equal' equal equal [bracketright less greater bar slash];\n")
|
" ignore sub equal' equal equal bracketright;\n")
|
||||||
|
|
||||||
;; #968 [--
|
;; #346 =:=
|
||||||
;; #346 <--> >--< |--|
|
["colon" "equal"]
|
||||||
["hyphen" "hyphen"]
|
" ignore sub equal colon' equal;\n"
|
||||||
(str " ignore sub [bracketleft less greater bar] hyphen' hyphen;\n"
|
|
||||||
" ignore sub hyphen' hyphen [bracketright less greater bar];\n")
|
|
||||||
|
|
||||||
;; #968 [---
|
;; #346 =!=
|
||||||
;; #346 <---> >---< |---|
|
["exclam" "equal"]
|
||||||
["hyphen" "hyphen" "hyphen"]
|
" ignore sub equal exclam' equal;\n"
|
||||||
(str " ignore sub [bracketleft less greater bar] hyphen' hyphen hyphen;\n"
|
;; #346 =!==
|
||||||
" ignore sub hyphen' hyphen hyphen [bracketright less greater bar];\n")
|
["exclam" "equal" "equal"]
|
||||||
|
" ignore sub equal exclam' equal equal;\n"
|
||||||
|
|
||||||
|
;; #346 =<= <=< <=> <=| <=: <=! <=/
|
||||||
|
["less" "equal"]
|
||||||
|
(str " ignore sub equal less' equal;\n"
|
||||||
|
" ignore sub less' equal [less greater bar colon exclam slash];\n")
|
||||||
|
|
||||||
|
;; #548 >=<
|
||||||
|
;; #346 =>= >=> >=< >=| >=: >=! >=/
|
||||||
|
["greater" "equal"]
|
||||||
|
(str " ignore sub equal greater' equal;\n"
|
||||||
|
" ignore sub greater' equal [less greater bar colon exclam slash];\n")
|
||||||
|
|
||||||
|
;; #346 >>->> >>=>>
|
||||||
|
["greater" "greater"]
|
||||||
|
(str " ignore sub [hyphen equal] greater' greater;\n"
|
||||||
|
" ignore sub greater' greater [hyphen equal];\n")
|
||||||
|
|
||||||
|
;; #346 <<-<< <<=<<
|
||||||
|
["less" "less"]
|
||||||
|
(str " ignore sub [hyphen equal] less' less;\n"
|
||||||
|
" ignore sub less' less [hyphen equal];\n")
|
||||||
|
|
||||||
;; #346 ||-|| ||=||
|
;; #346 ||-|| ||=||
|
||||||
["bar" "bar"]
|
["bar" "bar"]
|
||||||
(str " ignore sub [hyphen equal] bar' bar;\n"
|
(str " ignore sub [hyphen equal] bar' bar;\n"
|
||||||
" ignore sub bar' bar [hyphen equal];\n")
|
" ignore sub bar' bar [hyphen equal];\n")
|
||||||
})
|
|
||||||
|
;; #346 <--> >--< |--|
|
||||||
|
["hyphen" "hyphen"]
|
||||||
|
(str " ignore sub [less greater bar] hyphen' hyphen;\n"
|
||||||
|
" ignore sub hyphen' hyphen [less greater bar];\n")
|
||||||
|
|
||||||
|
;; #346 <---> >---< |---|
|
||||||
|
["hyphen" "hyphen" "hyphen"]
|
||||||
|
(str " ignore sub [less greater bar] hyphen' hyphen hyphen;\n"
|
||||||
|
" ignore sub hyphen' hyphen hyphen [less greater bar];\n")
|
||||||
|
|
||||||
|
;; #346 <==> >==< |==| /==/ =:== =!== ==:= ==!=
|
||||||
|
["equal" "equal"]
|
||||||
|
(str " ignore sub equal [colon exclam] equal' equal;\n"
|
||||||
|
" ignore sub [less greater bar slash] equal' equal;\n"
|
||||||
|
" ignore sub equal' equal [less greater bar slash] ;\n"
|
||||||
|
" ignore sub equal' equal [colon exclam] equal;\n")
|
||||||
|
|
||||||
|
;; #346 <===> >===< |===| /===/ =:=== =!=== ===:= ===!=
|
||||||
|
["equal" "equal" "equal"]
|
||||||
|
(str " ignore sub equal [colon exclam] equal' equal equal;\n"
|
||||||
|
" ignore sub [less greater bar slash] equal' equal equal;\n"
|
||||||
|
" ignore sub equal' equal equal [less greater bar slash];\n"
|
||||||
|
" ignore sub equal' equal equal [colon exclam] equal;\n")
|
||||||
|
))
|
||||||
|
|
||||||
|
|
||||||
;; DO NOT generate ignores at all
|
;; DO NOT generate ignores at all
|
||||||
|
@ -238,6 +269,8 @@
|
||||||
|
|
||||||
(defn compare-ligas [l1 l2]
|
(defn compare-ligas [l1 l2]
|
||||||
(cond
|
(cond
|
||||||
|
(and (priority? l1) (not (priority? l2))) -1
|
||||||
|
(and (not (priority? l1)) (priority? l2)) 1
|
||||||
(> (count l1) (count l2)) -1
|
(> (count l1) (count l2)) -1
|
||||||
(< (count l1) (count l2)) 1
|
(< (count l1) (count l2)) 1
|
||||||
:else (compare l1 l2)))
|
:else (compare l1 l2)))
|
||||||
|
|
|
@ -13,4 +13,13 @@
|
||||||
(fn [m k vs]
|
(fn [m k vs]
|
||||||
(assoc m k (value-fn vs)))
|
(assoc m k (value-fn vs)))
|
||||||
{}
|
{}
|
||||||
(group-by key-fn xs)))
|
(group-by key-fn xs)))
|
||||||
|
|
||||||
|
|
||||||
|
(defn multimap-by [f & kvs]
|
||||||
|
(reduce
|
||||||
|
(fn [m [k v]]
|
||||||
|
(if (contains? m k)
|
||||||
|
(update m k f v)
|
||||||
|
(assoc m k v)))
|
||||||
|
{} (partition 2 kvs)))
|
|
@ -1,51 +0,0 @@
|
||||||
### Arbitrary-length arrows #346
|
|
||||||
|
|
||||||
lookup arrows {
|
|
||||||
# Disable |||
|
|
||||||
ignore sub bar bar' bar hyphen;
|
|
||||||
ignore sub bar bar' hyphen;
|
|
||||||
ignore sub [hyphen_start.arw hyphen_end.arw] bar' bar bar;
|
|
||||||
|
|
||||||
# continue hyphen
|
|
||||||
sub [less_start.arw less_less_start.arw less_middle.arw less_less_middle.arw greater_start.arw greater_greater_start.arw greater_middle.arw greater_greater_middle.arw bar_start.arw bar_bar_start.arw bar_middle.arw bar_bar_middle.arw hyphen_start.arw hyphen_end.arw] hyphen' by hyphen_end.arw;
|
|
||||||
|
|
||||||
# double middles
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] less.spacer less' hyphen by less_less_middle.arw;
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] less' less hyphen by less.spacer;
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] greater.spacer greater' hyphen by greater_greater_middle.arw;
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] greater' greater hyphen by greater.spacer;
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] bar.spacer bar' hyphen by bar_bar_middle.arw;
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] bar' bar hyphen by bar.spacer;
|
|
||||||
|
|
||||||
# single middles
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] less' hyphen by less_middle.arw;
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] greater' hyphen by greater_middle.arw;
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] bar' hyphen by bar_middle.arw;
|
|
||||||
|
|
||||||
# double ends
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] less.spacer less' by less_less_end.arw;
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] less' less by less.spacer;
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] greater.spacer greater' by greater_greater_end.arw;
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] greater' greater by greater.spacer;
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] bar.spacer bar' by bar_bar_end.arw;
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] bar' bar by bar.spacer;
|
|
||||||
|
|
||||||
# single ends
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] less' by less_end.arw;
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] greater' by greater_end.arw;
|
|
||||||
sub [hyphen_start.arw hyphen_end.arw] bar' by bar_end.arw;
|
|
||||||
|
|
||||||
# double beginnings
|
|
||||||
sub less.spacer less' hyphen by less_less_start.arw;
|
|
||||||
sub less' less hyphen by less.spacer;
|
|
||||||
sub greater.spacer greater' hyphen by greater_greater_start.arw;
|
|
||||||
sub greater' greater hyphen by greater.spacer;
|
|
||||||
sub bar.spacer bar' hyphen by bar_bar_start.arw;
|
|
||||||
sub bar' bar hyphen by bar.spacer;
|
|
||||||
|
|
||||||
# single beginnings
|
|
||||||
sub less' hyphen by less_start.arw;
|
|
||||||
sub greater' hyphen by greater_start.arw;
|
|
||||||
sub bar' hyphen by bar_start.arw;
|
|
||||||
sub hyphen' [hyphen less greater bar] by hyphen_start.arw;
|
|
||||||
} arrows;
|
|
|
@ -1,63 +0,0 @@
|
||||||
lookup double_arrows {
|
|
||||||
# Disable |||
|
|
||||||
ignore sub bar bar' bar equal;
|
|
||||||
ignore sub bar bar' equal;
|
|
||||||
ignore sub [equal_start.darw equal_end.darw] bar' bar bar;
|
|
||||||
|
|
||||||
# continue hyphen
|
|
||||||
sub [less_start.darw less_less_start.darw less_middle.darw less_less_middle.darw greater_start.darw greater_greater_start.darw greater_middle.darw greater_greater_middle.darw bar_start.darw bar_bar_start.darw bar_middle.darw bar_bar_middle.darw slash_start.darw slash_middle.darw colon_middle.darw exclam_middle.darw equal_start.darw equal_end.darw] equal' by equal_end.darw;
|
|
||||||
|
|
||||||
# double middles
|
|
||||||
sub [equal_start.darw equal_end.darw] less.spacer less' equal by less_less_middle.darw;
|
|
||||||
sub [equal_start.darw equal_end.darw] less' less equal by less.spacer;
|
|
||||||
sub [equal_start.darw equal_end.darw] greater.spacer greater' equal by greater_greater_middle.darw;
|
|
||||||
sub [equal_start.darw equal_end.darw] greater' greater equal by greater.spacer;
|
|
||||||
sub [equal_start.darw equal_end.darw] bar.spacer bar' equal by bar_bar_middle.darw;
|
|
||||||
sub [equal_start.darw equal_end.darw] bar' bar equal by bar.spacer;
|
|
||||||
|
|
||||||
# single middles
|
|
||||||
sub [equal_start.darw equal_end.darw] less' equal by less_middle.darw;
|
|
||||||
sub [equal_start.darw equal_end.darw] greater' equal by greater_middle.darw;
|
|
||||||
sub [equal_start.darw equal_end.darw] bar' equal by bar_middle.darw;
|
|
||||||
sub [equal_start.darw equal_end.darw] slash' equal by slash_middle.darw;
|
|
||||||
sub [equal_start.darw equal_end.darw] colon' equal by colon_middle.darw;
|
|
||||||
sub [equal_start.darw equal_end.darw] exclam' equal by exclam_middle.darw;
|
|
||||||
|
|
||||||
# double ends
|
|
||||||
sub [equal_start.darw equal_end.darw] less.spacer less' by less_less_end.darw;
|
|
||||||
sub [equal_start.darw equal_end.darw] less' less by less.spacer;
|
|
||||||
sub [equal_start.darw equal_end.darw] greater.spacer greater' by greater_greater_end.darw;
|
|
||||||
sub [equal_start.darw equal_end.darw] greater' greater by greater.spacer;
|
|
||||||
sub [equal_start.darw equal_end.darw] bar.spacer bar' by bar_bar_end.darw;
|
|
||||||
sub [equal_start.darw equal_end.darw] bar' bar by bar.spacer;
|
|
||||||
|
|
||||||
# single ends
|
|
||||||
sub [equal_start.darw equal_end.darw] less' by less_end.darw;
|
|
||||||
sub [equal_start.darw equal_end.darw] greater' by greater_end.darw;
|
|
||||||
sub [equal_start.darw equal_end.darw] bar' by bar_end.darw;
|
|
||||||
sub [equal_start.darw equal_end.darw] slash' by slash_end.darw;
|
|
||||||
|
|
||||||
# double beginnings
|
|
||||||
sub less.spacer less' equal by less_less_start.darw;
|
|
||||||
sub less' less equal by less.spacer;
|
|
||||||
sub greater.spacer greater' equal by greater_greater_start.darw;
|
|
||||||
sub greater' greater equal by greater.spacer;
|
|
||||||
sub bar.spacer bar' equal by bar_bar_start.darw;
|
|
||||||
sub bar' bar equal by bar.spacer;
|
|
||||||
|
|
||||||
# Disable >=< #548
|
|
||||||
sub greater' equal less [equal less] by greater_start.darw;
|
|
||||||
ignore sub greater' equal less;
|
|
||||||
|
|
||||||
# Disable =< #479 #468 #424 #406 #355 #305
|
|
||||||
sub equal' less [equal less] by equal_start.darw;
|
|
||||||
ignore sub equal' less;
|
|
||||||
|
|
||||||
# single beginnings
|
|
||||||
sub less' equal by less_start.darw;
|
|
||||||
sub greater' equal by greater_start.darw;
|
|
||||||
sub bar' equal by bar_start.darw;
|
|
||||||
sub slash' equal by slash_start.darw;
|
|
||||||
sub equal' [equal less greater bar colon exclam slash] by equal_start.darw;
|
|
||||||
|
|
||||||
} double_arrows;
|
|
65
features/calt/equal_arrows.fea
Normal file
65
features/calt/equal_arrows.fea
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
lookup equal_arrows {
|
||||||
|
# Disable |||
|
||||||
|
ignore sub bar bar' bar equal;
|
||||||
|
ignore sub bar bar' equal;
|
||||||
|
ignore sub [equal_start.darw equal_middle.darw] bar' bar bar;
|
||||||
|
|
||||||
|
# equal middle & end
|
||||||
|
sub [less_start.darw less_less_start.darw less_middle.darw less_less_middle.darw greater_start.darw greater_greater_start.darw greater_middle.darw greater_greater_middle.darw bar_start.darw bar_bar_start.darw bar_middle.darw bar_bar_middle.darw slash_start.darw slash_middle.darw colon_middle.darw exclam_middle.darw equal_start.darw equal_middle.darw] equal' [equal less greater bar slash colon exclam] by equal_middle.darw;
|
||||||
|
|
||||||
|
sub [less_start.darw less_less_start.darw less_middle.darw less_less_middle.darw greater_start.darw greater_greater_start.darw greater_middle.darw greater_greater_middle.darw bar_start.darw bar_bar_start.darw bar_middle.darw bar_bar_middle.darw slash_start.darw slash_middle.darw colon_middle.darw exclam_middle.darw equal_start.darw equal_middle.darw] equal' by equal_end.darw;
|
||||||
|
|
||||||
|
# double middles
|
||||||
|
sub [equal_start.darw equal_middle.darw] less.spacer less' equal by less_less_middle.darw;
|
||||||
|
sub [equal_start.darw equal_middle.darw] less' less equal by less.spacer;
|
||||||
|
sub [equal_start.darw equal_middle.darw] greater.spacer greater' equal by greater_greater_middle.darw;
|
||||||
|
sub [equal_start.darw equal_middle.darw] greater' greater equal by greater.spacer;
|
||||||
|
sub [equal_start.darw equal_middle.darw] bar.spacer bar' equal by bar_bar_middle.darw;
|
||||||
|
sub [equal_start.darw equal_middle.darw] bar' bar equal by bar.spacer;
|
||||||
|
|
||||||
|
# single middles
|
||||||
|
sub [equal_start.darw equal_middle.darw] less' equal by less_middle.darw;
|
||||||
|
sub [equal_start.darw equal_middle.darw] greater' equal by greater_middle.darw;
|
||||||
|
sub [equal_start.darw equal_middle.darw] bar' equal by bar_middle.darw;
|
||||||
|
sub [equal_start.darw equal_middle.darw] slash' equal by slash_middle.darw;
|
||||||
|
sub [equal_start.darw equal_middle.darw] colon' equal by colon_middle.darw;
|
||||||
|
sub [equal_start.darw equal_middle.darw] exclam' equal by exclam_middle.darw;
|
||||||
|
|
||||||
|
# double ends
|
||||||
|
sub [equal_start.darw equal_middle.darw] less.spacer less' by less_less_end.darw;
|
||||||
|
sub [equal_start.darw equal_middle.darw] less' less by less.spacer;
|
||||||
|
sub [equal_start.darw equal_middle.darw] greater.spacer greater' by greater_greater_end.darw;
|
||||||
|
sub [equal_start.darw equal_middle.darw] greater' greater by greater.spacer;
|
||||||
|
sub [equal_start.darw equal_middle.darw] bar.spacer bar' by bar_bar_end.darw;
|
||||||
|
sub [equal_start.darw equal_middle.darw] bar' bar by bar.spacer;
|
||||||
|
|
||||||
|
# single ends
|
||||||
|
sub [equal_start.darw equal_middle.darw] less' by less_end.darw;
|
||||||
|
sub [equal_start.darw equal_middle.darw] greater' by greater_end.darw;
|
||||||
|
sub [equal_start.darw equal_middle.darw] bar' by bar_end.darw;
|
||||||
|
sub [equal_start.darw equal_middle.darw] slash' by slash_end.darw;
|
||||||
|
|
||||||
|
# double beginnings
|
||||||
|
sub less.spacer less' equal by less_less_start.darw;
|
||||||
|
sub less' less equal by less.spacer;
|
||||||
|
sub greater.spacer greater' equal by greater_greater_start.darw;
|
||||||
|
sub greater' greater equal by greater.spacer;
|
||||||
|
sub bar.spacer bar' equal by bar_bar_start.darw;
|
||||||
|
sub bar' bar equal by bar.spacer;
|
||||||
|
|
||||||
|
# Disable >=< #548
|
||||||
|
sub greater' equal less [equal less] by greater_start.darw;
|
||||||
|
ignore sub greater' equal less;
|
||||||
|
|
||||||
|
# Disable =< #479 #468 #424 #406 #355 #305
|
||||||
|
sub equal' less [equal less] by equal_start.darw;
|
||||||
|
ignore sub equal' less;
|
||||||
|
|
||||||
|
# single beginnings
|
||||||
|
sub less' equal by less_start.darw;
|
||||||
|
sub greater' equal by greater_start.darw;
|
||||||
|
sub bar' equal by bar_start.darw;
|
||||||
|
sub slash' equal by slash_start.darw;
|
||||||
|
sub equal' [equal less greater bar colon exclam slash] by equal_start.darw;
|
||||||
|
|
||||||
|
} equal_arrows;
|
54
features/calt/hyphen_arrows.fea
Normal file
54
features/calt/hyphen_arrows.fea
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
|
||||||
|
### Arbitrary-length arrows #346
|
||||||
|
|
||||||
|
lookup hyphen_arrows {
|
||||||
|
# Disable |||
|
||||||
|
ignore sub bar bar' bar hyphen;
|
||||||
|
ignore sub bar bar' hyphen;
|
||||||
|
ignore sub [hyphen_start.arw hyphen_middle.arw] bar' bar bar;
|
||||||
|
|
||||||
|
# hyphen middle & end
|
||||||
|
sub [less_start.arw less_less_start.arw less_middle.arw less_less_middle.arw greater_start.arw greater_greater_start.arw greater_middle.arw greater_greater_middle.arw bar_start.arw bar_bar_start.arw bar_middle.arw bar_bar_middle.arw hyphen_start.arw hyphen_middle.arw] hyphen' [hyphen less greater bar] by hyphen_middle.arw;
|
||||||
|
|
||||||
|
sub [less_start.arw less_less_start.arw less_middle.arw less_less_middle.arw greater_start.arw greater_greater_start.arw greater_middle.arw greater_greater_middle.arw bar_start.arw bar_bar_start.arw bar_middle.arw bar_bar_middle.arw hyphen_start.arw hyphen_middle.arw] hyphen' by hyphen_end.arw;
|
||||||
|
|
||||||
|
# double middles
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] less.spacer less' hyphen by less_less_middle.arw;
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] less' less hyphen by less.spacer;
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] greater.spacer greater' hyphen by greater_greater_middle.arw;
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] greater' greater hyphen by greater.spacer;
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] bar.spacer bar' hyphen by bar_bar_middle.arw;
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] bar' bar hyphen by bar.spacer;
|
||||||
|
|
||||||
|
# single middles
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] less' hyphen by less_middle.arw;
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] greater' hyphen by greater_middle.arw;
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] bar' hyphen by bar_middle.arw;
|
||||||
|
|
||||||
|
# double ends
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] less.spacer less' by less_less_end.arw;
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] less' less by less.spacer;
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] greater.spacer greater' by greater_greater_end.arw;
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] greater' greater by greater.spacer;
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] bar.spacer bar' by bar_bar_end.arw;
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] bar' bar by bar.spacer;
|
||||||
|
|
||||||
|
# single ends
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] less' by less_end.arw;
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] greater' by greater_end.arw;
|
||||||
|
sub [hyphen_start.arw hyphen_middle.arw] bar' by bar_end.arw;
|
||||||
|
|
||||||
|
# double beginnings
|
||||||
|
sub less.spacer less' hyphen by less_less_start.arw;
|
||||||
|
sub less' less hyphen by less.spacer;
|
||||||
|
sub greater.spacer greater' hyphen by greater_greater_start.arw;
|
||||||
|
sub greater' greater hyphen by greater.spacer;
|
||||||
|
sub bar.spacer bar' hyphen by bar_bar_start.arw;
|
||||||
|
sub bar' bar hyphen by bar.spacer;
|
||||||
|
|
||||||
|
# single beginnings
|
||||||
|
sub less' hyphen by less_start.arw;
|
||||||
|
sub greater' hyphen by greater_start.arw;
|
||||||
|
sub bar' hyphen by bar_start.arw;
|
||||||
|
sub hyphen' [hyphen less greater bar] by hyphen_start.arw;
|
||||||
|
} hyphen_arrows;
|
|
@ -1,8 +1,14 @@
|
||||||
lookup underscore_arrows {
|
lookup underscore_arrows {
|
||||||
|
# middle parts
|
||||||
sub [underscore_start.uarw underscore_middle.uarw] bar' underscore by bar_middle.uarw;
|
sub [underscore_start.uarw underscore_middle.uarw] bar' underscore by bar_middle.uarw;
|
||||||
|
|
||||||
sub [underscore_start.uarw underscore_middle.uarw bar_middle.uarw] underscore' bar underscore by underscore_middle.uarw;
|
sub [underscore_start.uarw underscore_middle.uarw bar_middle.uarw] underscore' bar underscore by underscore_middle.uarw;
|
||||||
sub [underscore_start.uarw underscore_middle.uarw bar_middle.uarw] underscore' underscore by underscore_middle.uarw;
|
sub [underscore_start.uarw underscore_middle.uarw bar_middle.uarw] underscore' underscore by underscore_middle.uarw;
|
||||||
|
|
||||||
|
# ends
|
||||||
sub [underscore_start.uarw underscore_middle.uarw bar_middle.uarw] underscore' by underscore_end.uarw;
|
sub [underscore_start.uarw underscore_middle.uarw bar_middle.uarw] underscore' by underscore_end.uarw;
|
||||||
|
|
||||||
|
# beginnings
|
||||||
sub underscore' bar underscore by underscore_start.uarw;
|
sub underscore' bar underscore by underscore_start.uarw;
|
||||||
sub underscore' underscore by underscore_start.uarw;
|
sub underscore' underscore by underscore_start.uarw;
|
||||||
} underscore_arrows;
|
} underscore_arrows;
|
|
@ -93,42 +93,171 @@ r 0 123456789 & && $ <$ <$> $> @ <= >=
|
||||||
|
|
||||||
# Arbitrary-length arrows #346
|
# Arbitrary-length arrows #346
|
||||||
|
|
||||||
<--------------------------------------------<<
|
<---------------------------------------------<<
|
||||||
----- ----< ---<< ----> --->> ----| ---||
|
<- <-- <--- <---- ----> ---> --> ->
|
||||||
<---- <---< <--<< <---> <-->> <---| <--|| --<--
|
>- >-- >--- >---- ----< ---< --< -<
|
||||||
<<--- <<--< <<-<< <<--> <<->> <<--| <<-|| -<<-
|
|- |-- |--- |---- ----| ---| --| -|
|
||||||
>---- >---< >--<< >---> >-->> >---| >--|| -->--
|
<<- <<-- <<--- <<---- ---->> --->> -->> ->>
|
||||||
>>--- >>--< >>-<< >>--> >>->> >>--| >>-|| ->>-
|
>>- >>-- >>--- >>---- ----<< ---<< --<< -<<
|
||||||
|---- |---< |--<< |---> |-->> |---| |--|| --|--
|
||- ||-- ||--- ||---- ----|| ---|| --|| -||
|
||||||
||--- ||--< ||-<< ||--> ||->> ||--| ||-|| -||-
|
----- ----< ---<< ----> --->> ----| ---||
|
||||||
|
<---- <---< <--<< <---> <-->> <---| <--|| --<--
|
||||||
|
<<--- <<--< <<-<< <<--> <<->> <<--| <<-|| -<<-
|
||||||
|
>---- >---< >--<< >---> >-->> >---| >--|| -->--
|
||||||
|
>>--- >>--< >>-<< >>--> >>->> >>--| >>-|| ->>-
|
||||||
|
|---- |---< |--<< |---> |-->> |---| |--|| --|--
|
||||||
|
||--- ||--< ||-<< ||--> ||->> ||--| ||-|| -||-
|
||||||
|
|-<-<<->>->-|-||-|
|
||||||
|--<--<<-->>-->--|--||--|
|
|--<--<<-->>-->--|--||--|
|
||||||
|
|---<---<<--->>--->---|---||---|
|
||||||
|
|
||||||
|
< -< --< ---< ----<
|
||||||
|
<- -<- --<- ---<- ----<-
|
||||||
|
<-- -<-- --<-- ---<-- ----<--
|
||||||
|
<--- -<--- --<--- ---<--- ----<---
|
||||||
|
<---- -<---- --<---- ---<---- ----<----
|
||||||
|
|
||||||
|
> -> --> ---> ---->
|
||||||
|
>- ->- -->- --->- ---->-
|
||||||
|
>-- ->-- -->-- --->-- ---->--
|
||||||
|
>--- ->--- -->--- --->--- ---->---
|
||||||
|
>---- ->---- -->---- --->---- ---->----
|
||||||
|
|
||||||
|
| -| --| ---| ----|
|
||||||
|
|- -|- --|- ---|- ----|-
|
||||||
|
|-- -|-- --|-- ---|-- ----|--
|
||||||
|
|--- -|--- --|--- ---|--- ----|---
|
||||||
|
|---- -|---- --|---- ---|---- ----|----
|
||||||
|
|
||||||
|
<< -<< --<< ---<< ----<<
|
||||||
|
<<- -<<- --<<- ---<<- ----<<-
|
||||||
|
<<-- -<<-- --<<-- ---<<-- ----<<--
|
||||||
|
<<--- -<<--- --<<--- ---<<--- ----<<---
|
||||||
|
<<---- -<<---- --<<---- ---<<---- ----<<----
|
||||||
|
|
||||||
|
>> ->> -->> --->> ---->>
|
||||||
|
>>- ->>- -->>- --->>- ---->>-
|
||||||
|
>>-- ->>-- -->>-- --->>-- ---->>--
|
||||||
|
>>--- ->>--- -->>--- --->>--- ---->>---
|
||||||
|
>>---- ->>---- -->>---- --->>---- ---->>----
|
||||||
|
|
||||||
|
|| -|| --|| ---|| ----||
|
||||||
|
||- -||- --||- ---||- ----||-
|
||||||
|
||-- -||-- --||-- ---||-- ----||--
|
||||||
|
||--- -||--- --||--- ---||--- ----||---
|
||||||
|
||---- -||---- --||---- ---||---- ----||----
|
||||||
|
|
||||||
|
<====================================================<<
|
||||||
|
<= <== <=== <==== ====> ===> ==> =>
|
||||||
|
>= >== >=== >==== ====< ===< ==< =<
|
||||||
|
|= |== |=== |==== ====| ===| ==| =|
|
||||||
|
<<= <<== <<=== <<==== ====>> ===>> ==>> =>>
|
||||||
|
>>= >>== >>=== >>==== ====<< ===<< ==<< =<<
|
||||||
|
||= ||== ||=== ||==== ====|| ===|| ==|| =||
|
||||||
|
===== ====< ===<< ====> ===>> ====| ===|| ====/
|
||||||
|
<==== <===< <==<< <===> <==>> <===| <==|| <===/ ==<==
|
||||||
|
<<=== <<==< <<=<< <<==> <<=>> <<==| <<=|| <<==/ =<<=
|
||||||
|
>==== >===< >==<< >===> >==>> >===| >==|| >===/ ==>==
|
||||||
|
>>=== >>==< >>=<< >>==> >>=>> >>==| >>=|| >>==/ =>>=
|
||||||
|
|==== |===< |==<< |===> |==>> |===| |==|| |===/ ==|==
|
||||||
|
||=== ||==< ||=<< ||==> ||=>> ||==| ||=|| ||==/ =||=
|
||||||
|
/==== /===< /==<< /===> /==>> /===| /==|| /===/ ==/==
|
||||||
|
|=<=<<=>>=>=|=||=/=:=!=|
|
||||||
|
|==<==<<==>>==>==|==||==/==:==!==|
|
||||||
|
|===<===<<===>>===>===|===||===/===:===!===|
|
||||||
|
|
||||||
|
< =< ==< ===< ====<
|
||||||
|
<= =<= ==<= ===<= ====<=
|
||||||
|
<== =<== ==<== ===<== ====<==
|
||||||
|
<=== =<=== ==<=== ===<=== ====<===
|
||||||
|
<==== =<==== ==<==== ===<==== ====<====
|
||||||
|
|
||||||
|
> => ==> ===> ====>
|
||||||
|
>= =>= ==>= ===>= ====>=
|
||||||
|
>== =>== ==>== ===>== ====>==
|
||||||
|
>=== =>=== ==>=== ===>=== ====>===
|
||||||
|
>==== =>==== ==>==== ===>==== ====>====
|
||||||
|
|
||||||
|
| =| ==| ===| ====|
|
||||||
|
|= =|= ==|= ===|= ====|=
|
||||||
|
|== =|== ==|== ===|== ====|==
|
||||||
|
|=== =|=== ==|=== ===|=== ====|===
|
||||||
|
|==== =|==== ==|==== ===|==== ====|====
|
||||||
|
|
||||||
|
<< =<< ==<< ===<< ====<<
|
||||||
|
<<= =<<= ==<<= ===<<= ====<<=
|
||||||
|
<<== =<<== ==<<== ===<<== ====<<==
|
||||||
|
<<=== =<<=== ==<<=== ===<<=== ====<<===
|
||||||
|
<<==== =<<==== ==<<==== ===<<==== ====<<====
|
||||||
|
|
||||||
|
>> =>> ==>> ===>> ====>>
|
||||||
|
>>= =>>= ==>>= ===>>= ====>>=
|
||||||
|
>>== =>>== ==>>== ===>>== ====>>==
|
||||||
|
>>=== =>>=== ==>>=== ===>>=== ====>>===
|
||||||
|
>>==== =>>==== ==>>==== ===>>==== ====>>====
|
||||||
|
|
||||||
|
|| =|| ==|| ===|| ====||
|
||||||
|
||= =||= ==||= ===||= ====||=
|
||||||
|
||== =||== ==||== ===||== ====||==
|
||||||
|
||=== =||=== ==||=== ===||=== ====||===
|
||||||
|
||==== =||==== ==||==== ===||==== ====||====
|
||||||
|
|
||||||
|
/ =/ ==/ ===/ ====/
|
||||||
|
/= =/= ==/= ===/= ====/=
|
||||||
|
/== =/== ==/== ===/== ====/==
|
||||||
|
/=== =/=== ==/=== ===/=== ====/===
|
||||||
|
/==== =/==== ==/==== ===/==== ====/====
|
||||||
|
|
||||||
|
: =: ==: ===: ====:
|
||||||
|
:= =:= ==:= ===:= ====:=
|
||||||
|
:== =:== ==:== ===:== ====:==
|
||||||
|
:=== =:=== ==:=== ===:=== ====:===
|
||||||
|
:==== =:==== ==:==== ===:==== ====:====
|
||||||
|
|
||||||
|
! =! ==! ===! ====!
|
||||||
|
!= =!= ==!= ===!= ====!=
|
||||||
|
!== =!== ==!== ===!== ====!==
|
||||||
|
!=== =!=== ==!=== ===!=== ====!===
|
||||||
|
!==== =!==== ==!==== ===!==== ====!====
|
||||||
|
|
||||||
|
_ __ ___ ____
|
||||||
|
_|_ __|_ _|__ __|__
|
||||||
|
_| |_ _||_ __| ___| |__ |___
|
||||||
|
|
||||||
|
# Progress bars
|
||||||
|
|
||||||
|
[>----------]
|
||||||
|
[=>---------]
|
||||||
|
[==>--------]
|
||||||
|
[===>-------]
|
||||||
|
[====>------]
|
||||||
|
[=====>-----]
|
||||||
|
[======>----]
|
||||||
|
[=======>---]
|
||||||
|
[========>--]
|
||||||
|
[=========>-]
|
||||||
|
[==========>]
|
||||||
|
|
||||||
|
# Sanity check
|
||||||
|
|
||||||
- -- --- |> <| ||> <|| <!-- -~ .- ~-
|
- -- --- |> <| ||> <|| <!-- -~ .- ~-
|
||||||
|
|
||||||
|
= == === .= ..= := ::= != !== ?= #= ^=
|
||||||
|
<= <=< <=> <=|
|
||||||
|
>=
|
||||||
|
#548 >=< >=> >=| >=<< >>=<
|
||||||
|
#479 #468 #424 #406 #355 #305 =< ==< =<< |=<
|
||||||
|
#574 :>=
|
||||||
|
#621 <||>
|
||||||
|
|
||||||
<<<-<<< <<<--<<< <<<---<<< <<<----<<<
|
<<<-<<< <<<--<<< <<<---<<< <<<----<<<
|
||||||
>>>->>> >>>-->>> >>>--->>> >>>---->>>
|
>>>->>> >>>-->>> >>>--->>> >>>---->>>
|
||||||
|||-||| |||--||| |||---||| |||----|||
|
|||-||| |||--||| |||---||| |||----|||
|
||||||
|
//- //-- //--- //----
|
||||||
|
///- ///-- ///--- ///----
|
||||||
|
|
||||||
<============================================<<
|
|
||||||
===== ====< ===<< ====> ===>> ====| ===|| ====/
|
|
||||||
<==== <===< <==<< <===> <==>> <===| <==|| <===/ ==<==
|
|
||||||
<<=== <<==< <<=<< <<==> <<=>> <<==| <<=|| <<==/ =<<=
|
|
||||||
>==== >===< >==<< >===> >==>> >===| >==|| >===/ ==>==
|
|
||||||
>>=== >>==< >>=<< >>==> >>=>> >>==| >>=|| >>==/ =>>=
|
|
||||||
|==== |===< |==<< |===> |==>> |===| |==|| |===/ ==|==
|
|
||||||
||=== ||==< ||=<< ||==> ||=>> ||==| ||=|| ||==/ =||=
|
|
||||||
/==== /===< /==<< /===> /==>> /===| /==|| /===/ ==/==
|
|
||||||
|==<==<<==>>==>==|==||==/==:==!==|
|
|
||||||
.= ..= := ::= != !== ?= #= ^=
|
|
||||||
=:= =!= =/= >=:=> <=!=< |=/=| >>=:=!=/=>>
|
|
||||||
/= /== //= //== //=== ///= ///== ///===
|
|
||||||
= == === ====
|
|
||||||
<= <=< <=> <=|
|
|
||||||
>= >=< >=> >=|
|
|
||||||
>=< >=<< >>=<
|
|
||||||
=< ==< =<< |=<
|
|
||||||
:>= <||>
|
|
||||||
<<<=<<< <<<==<<< <<<===<<< <<<====<<<
|
<<<=<<< <<<==<<< <<<===<<< <<<====<<<
|
||||||
>>>=>>> >>>==>>> >>>===>>> >>>====>>>
|
>>>=>>> >>>==>>> >>>===>>> >>>====>>>
|
||||||
|||=||| |||==||| |||===||| |||====|||
|
|||=||| |||==||| |||===||| |||====|||
|
||||||
|
//= //== //=== //====
|
||||||
_ __ ___ ____ _|_ __|_ _|__ __|__
|
///= ///== ///=== ///====
|
||||||
_| |_ _||_ __| ___| |__ |___
|
|
||||||
|
|
Loading…
Reference in a new issue