[simple.center-ops]
samples = [":=", ":-", ":+", "<*", "<*>", "*>", "+:", "-:", "=:", "<***>", "<:", ":>", "*-", "-*", "*=", "=*", "*+", "+*"]
desc = 'Vertically align some of the operators (like `*`) to the center position it is before or after a "center" operator (like `+`)'

[simple.center-op-trigger-plus-minus-l]
samples = ["*+", "*-", ":+", ":-", ".+", ".-"]
desc = 'Plus (`+`) and Minus (`-`) will trigger other operator characters at left to be centered'

[simple.center-op-trigger-plus-minus-r]
samples = ["+*", "-*", "+:", "-:", "+.", "-."]
desc = 'Plus (`+`) and Minus (`-`) will trigger other operator characters at right to be centered'

[simple.center-op-trigger-equal-l]
samples = ["*=", ":=", ".="]
desc = 'Equal (`=`) will trigger other operator characters at left to be centered'

[simple.center-op-trigger-equal-r]
samples = ["=*", "=:", "=."]
desc = 'Equal (`=`) will trigger other operator characters at right to be centered'

[simple.center-op-trigger-bar-l]
samples = ["*|", ":|"]
desc = 'Bars (`|`) will trigger other operator characters at left to be centered'

[simple.center-op-trigger-bar-r]
samples = ["|*", "|:"]
desc = 'Bars (`|`) will trigger other operator characters at right to be centered'

[simple.center-op-trigger-angle-inside]
samples = ["<:", "<:>", ":>", "<*", "<*>", "*>", "<.", "<.>", ".>"]
desc = 'Less (`<`) and Greater (`>`) will trigger other operator characters at inside to be centered'

[simple.center-op-trigger-angle-outside]
samples = [">*", "*<"]
desc = 'Less (`<`) and Greater (`>`) will trigger other operator characters at outside to be centered'

[simple.center-op-influence-dot]
samples = ["<.", "<.>", ".>"]
desc = 'Treat dot (`.`) as operator and perform chained centering'

[simple.center-op-influence-colon]
samples = ["<:", "<:>", ":>", ":=", "=:", ":-", "-:"]
desc = 'Treat colon (`:`) as operator and perform chained centering'



[simple.arrow-l]
samples = ["<--", "<---", "<<-", "<-", "<-->", "<--->", "<---->", "<=", "<==", "<===", "<<=", "<==>", "<===>", "<====>", "<~~", "<~", "<=<", "<-<"]
desc = 'Enable ligation set that forms left-pointing arrows'

[simple.arrow-r]
samples = ["->", "->>", "-->", "--->", "<-->", "<--->", "<---->", "=>", "=>>", "==>", "===>", "<==>", "<===>", "<====>", "~>", "~~>", "-------->", ">=>", ">->"]
desc = 'Enable ligation set that forms right-pointing arrows'

[simple.arrow-lr]
samples = ["<->", "<=>", "<~>"]
desc = 'Enable ligation set that forms dual-pointing arrows'

[simple.counter-arrow-l]
samples = ["-<<", "-<", "-<-", "=<<", "=<", "=<=", "<=<", "-<<", "-<", "-<-", "=<<", "=<", "=<="]
desc = 'Enable ligation that produces left-pointing counter-arrows'

[simple.counter-arrow-r]
samples = ["->-", ">-", ">>-", "=>=", ">=>", "->-", ">-", ">>-", ">>=", "=>="]
desc = 'Enable ligation that produces right-pointing counter-arrows'

[simple.trig]
samples = ["<|", "<|>", "|>"]
desc = 'Enable ligation for `<|`, `|>` , `<||`, and other bar-and-angle-bracket symbols'

[simple.eqeqeq]
samples = ["==="]
sampleRank = 2
desc = 'Enable special ligation for `===` with triple lines'

[simple.eqeq]
samples = ["==", "==="]
desc = 'Enable ligation for `==` and `===`'

[simple.lteq]
samples = ["<="]
sampleRank = 2
desc = 'Enable ligation for `<=` as less-than-or-equal sign'

[simple.eqlt]
samples = ["=<"]
sampleRank = 2
desc = 'Enable ligation for `=<` as less-than-or-equal sign'

[simple.gteq]
samples = [">="]
sampleRank = 2
desc = 'Enable ligation for `>=` as greater-than-or-equal sign'

[simple.lteq-separate]
samples = ["<="]
sampleRank = 3
desc = 'Display `<=` as separate shape'

[simple.eqlt-separate]
samples = ["=<"]
sampleRank = 3
desc = 'Display `=<` as separate shape'

[simple.gteq-separate]
samples = [">="]
sampleRank = 3
desc = 'Display `>=` as separate shape'

[simple.exeqeqeq]
samples = ["!==="]
sampleRank = 3
desc = 'Enable special ligation for `!===` with triple lines'

[simple.exeqeq]
samples = ["!=="]
sampleRank = 3
desc = 'Enable special ligation for `!==` with triple lines'

[simple.eqexeq]
samples = ["=!="]
desc = 'Enable special ligation for `=!=` with triple lines'

[simple.eqexeq-dl]
samples = ["=!="]
desc = 'Enable special ligation for `=!=` with double lines'

[simple.exeq]
samples = ["!=", "!==", "!==="]
desc = 'Enable ligation for `!=` and `!==`'

[simple.tildeeq]
samples = ["~="]
desc = 'Enable ligation for `~=` as inequality'

[simple.eqslasheq]
samples = ["=/="]
sampleRank = 2
desc = 'Enable special triple-line ligation for `=/=` as inequality'

[simple.slasheq]
samples = ["/=", "=/="]
desc = 'Enable ligation for `/=` and `=/=` as inequality'

[simple.ltgt-ne]
samples = ["<>"]
sampleRank = 2
desc = 'Enable ligation for `<>` as inequality'

[simple.ltgt-diamond]
samples = ["<>"]
desc = 'Enable ligation for `<>` as diamond'

[simple.ltgt-diamond-tag]
samples = ["<>"]
sampleRank = 3
desc = 'Enable ligation for `<>` as diamond-shaped empty HTML/XML tag'

[simple.ltgt-slash-tag]
samples = ["</", "/>", "</>"]
sampleRank = 2
desc = 'Enable ligation for `</`, `/>` and `</>`'

[simple.brst]
samples = ["(*", "*)", "(* comm *)"]
desc = 'Center asterisk in `(*` and `*)`'

[simple.slash-asterisk]
samples = ["/*", "*/", "/* comm */"]
desc = 'Shift asterisk in `/*` and `*/`'

[simple.kern-dotty]
samples = ["::", ":::"]
desc = 'Move connecting dotty punctuations closer, like for `::`, `:::` and `...`'

[simple.kern-bars]
samples = ["||", "|||"]
desc = 'Move consecutive bars closer, like for `||`, `|||` and `//`'

[simple.logic]
samples = ["/\\", "\\/", "|-", "-|"]
desc = 'Enable ligation for `/\` and `\/`'

[simple.llgg]
samples = ["<<", ">>", "<<<", ">>>"]
desc = 'Enable ligation for `<<`, `>>` and other angle-bracket chaining'

[simple.llggeq]
samples = ["<<=", ">>="]
sampleRank = 2
desc = 'Enable ligation for `<<=`, `>>=` as shift operator'

[simple.html-comment]
samples = ["<!--", "<!---"]
desc = 'Enable ligation for `<!--` and `<!---`'

[simple.colon-greater-as-colon-arrow]
samples = [":>"]
sampleRank = 2
desc = 'Transform `:>` into `:` and a narrow arrow'

[simple.brace-bar]
samples = ["{|", "|}"]
desc = 'Enable ligation for `{|` and `|}`'

[simple.brack-bar]
samples = ["[|", "|]"]
desc = 'Enable ligation for `[|` and `|]`'

# Connection
[simple.tilde-tilde]
samples = ["~~"]
implies = ["tilde-tilde-tilde"]
desc = 'Make 2 or more contiguous ASCII tildes (like `~~`, `~~~` and `~~~~`) connected as a wave line'

[simple.tilde-tilde-tilde]
samples = ["~~~", "~~~~"]
desc = 'Make 3 or more contiguous ASCII tildes (like `~~~` and `~~~~`) connected as a wave line'

[simple.minus-minus]
samples = ["--"]
implies = ["minus-minus-minus"]
desc = 'Make 2 or more contiguous hyphen-minuses (like `--`, `---` and `----`) connected as a straight solid line'

[simple.minus-minus-minus]
samples = ["---", "----"]
desc = 'Make 3 or more contiguous hyphen-minuses (like `---` and `----`) connected as a straight solid line'

[simple.plus-plus]
samples = ["++"]
implies = ["plus-plus-plus"]
desc = 'Make 2 or more contiguous plus signs (like `++`, `+++` and `++++`) connected.'

[simple.plus-plus-plus]
samples = ["+++", "++++"]
desc = 'Make 3 or more contiguous plus signs (like `+++` and `++++`) connected.'

[simple.underscore-underscore]
samples = ["__"]
implies = ["underscore-underscore-underscore"]
desc = 'Make 2 or more contiguous underscores (like `__`, `___` and `____`) connected'

[simple.underscore-underscore-underscore]
samples = ["___", "____"]
desc = 'Make 3 or more contiguous underscores (like `___` and `____`) connected'

[simple.hash-hash]
samples = ["##"]
implies = ["hash-hash-hash"]
desc = 'Make 2 or more contiguous hash signs (number signs) (like `##`, `###` and `####`) connected'

[simple.hash-hash-hash]
samples = ["###", "####"]
desc = 'Make 3 or more contiguous hash signs (number signs) (like `##` and `###`) connected'

###################################################################################################

# Non-tagged composites, used for inheritance
[composite.--default-center-ops--]
buildup = [
	'center-ops',
	'center-op-trigger-plus-minus-l',
	'center-op-trigger-plus-minus-r',
	'center-op-trigger-equal-l',
	'center-op-trigger-equal-r',
	'center-op-trigger-angle-inside',
	'center-op-trigger-angle-outside',
	'center-op-influence-colon',
]

[composite.--c-center-ops--]
buildup = [
	'center-ops',
	'center-op-trigger-equal-l',
]

[composite.--default-equality-inequality--]
buildup = [ 'eqeq', 'exeq', 'lteq', 'gteq' ]

[composite.--c-equality-inequality--]
buildup = [ 'eqeqeq', 'eqeq', 'exeqeq', 'exeq', 'lteq', 'gteq' ]

[composite.--raku-equality-inequality--]
buildup = [ 'eqeqeq', 'eqeq', 'exeqeqeq', 'exeq', 'lteq', 'gteq' ]

[composite.--ml-equality-inequality--]
buildup = [ 'eqeq', 'ltgt-ne', 'lteq', 'gteq' ]

[composite.--fstar-equality-inequality--]
buildup = [ 'eqeq', 'ltgt-ne', 'eqeqeq', 'eqexeq', 'lteq', 'gteq' ]

[composite.--haskell-equality-inequality--]
buildup = [ 'eqeq', 'slasheq', 'lteq', 'gteq' ]

[composite.--matlab-equality-inequality--]
buildup = [ 'eqeq', 'tildeeq', 'lteq', 'gteq' ]

[composite.--verilog-equality-inequality--]
buildup = [ 'eqeqeq', 'eqeq', 'exeqeq', 'exeq', 'lteq-separate', 'gteq-separate' ]

[composite.--wolfram-equality-inequality--]
buildup = [ 'eqeq', 'exeq', 'eqexeq-dl', 'lteq', 'gteq' ]

[composite.--erlang-equality-inequality--]
buildup = [ 'eqeq', 'exeq', 'eqlt', 'gteq' ]

[composite.--default-kern--]
buildup = [ 'kern-dotty', 'kern-bars' ]

[composite.--default-chaining--]
buildup = [ 'plus-plus-plus', 'minus-minus-minus', 'underscore-underscore-underscore', 'hash-hash-hash', 'tilde-tilde-tilde' ]

[composite.--fast-chaining--]
buildup = [ 'plus-plus', 'minus-minus', 'underscore-underscore', 'hash-hash', 'tilde-tilde' ]

[composite.--c-like-chaining--]
buildup = [ 'plus-plus', 'minus-minus-minus', 'underscore-underscore', 'hash-hash-hash', 'tilde-tilde-tilde' ]

# This feature is on by default by many software
[composite.default-calt]
tag     = 'calt'
brief   = 'Default'
desc    = 'Default setting in text editors'
readmeDesc = 'Inherit default ligation set'
buildup = [
	'--default-center-ops--',
	'--default-equality-inequality--',
	'--default-kern--',
	'--default-chaining--',
	'arrow-l', 'arrow-r', 'arrow-lr',
	'html-comment',
	'ltgt-diamond-tag',
	'ltgt-slash-tag',
	'trig',
	'slash-asterisk',
	'llgg',
	'llggeq',
]

[composite.dlig]
tag     = 'dlig'
brief   = 'Discretionary'
desc    = 'Discretionary ligatures'
buildup = [
	'--default-center-ops--',
	'center-op-influence-dot',
	'--default-equality-inequality--',
	'--default-kern--',
	'--fast-chaining--',
	'arrow-l', 'arrow-r', 'arrow-lr',
	'counter-arrow-l', 'counter-arrow-r',
	'html-comment',
	'ltgt-diamond-tag',
	'ltgt-slash-tag',
	'trig',
	'slash-asterisk',
	'llgg',
	'logic',
	'brst',
	'brace-bar',
	'brack-bar',
]

[composite.clike]
tag     = 'CLIK'
desc    = 'C-Like'
buildup = [
	'--c-center-ops--',
	'--c-equality-inequality--',
	'--default-kern--',
	'--c-like-chaining--',
	'arrow-r', 'arrow-lr',
	'ltgt-diamond',
	'trig',
	'slash-asterisk',
	'llgg',
	'llggeq',
]

[composite.javascript]
tag     = 'JSPT'
desc    = 'JavaScript'
buildup = [
	'--c-center-ops--',
	'--c-equality-inequality--',
	'--default-kern--',
	'--c-like-chaining--',
	'arrow-r', 'arrow-lr',
	'html-comment',
	'ltgt-diamond-tag',
	'ltgt-slash-tag',
	'trig',
	'slash-asterisk',
	'llgg',
	'llggeq',
]

[composite.php]
tag     = 'PHPX'
desc    = 'PHP'
buildup = [
	'--default-center-ops--',
	'center-op-influence-dot',
	'--c-equality-inequality--',
	'--default-kern--',
	'--c-like-chaining--',
	'arrow-r', 'arrow-lr',
	'html-comment',
	'ltgt-diamond-tag',
	'ltgt-slash-tag',
	'trig',
	'slash-asterisk',
	'llgg',
	'llggeq',
]

[composite.julia]
tag     = 'JLIA'
desc    = 'Julia'
buildup = [
	'--default-center-ops--',
	'center-op-influence-dot',
	'--c-equality-inequality--',
	'--default-kern--',
	'--default-chaining--',
	'arrow-l', 'arrow-r', 'arrow-lr',
	'trig',
	'llgg',
	'llggeq',
]

[composite.raku]
tag     = 'RAKU'
desc    = 'Raku'
buildup = [
	'--default-center-ops--',
	'center-op-influence-dot',
	'--raku-equality-inequality--',
	'--default-kern--',
	'--c-like-chaining--',
	'arrow-l', 'arrow-r', 'arrow-lr',
	'trig',
	'llgg',
	'llggeq',
]

[composite.ml]
tag     = 'MLXX'
desc    = 'ML'
buildup = [
	'--default-center-ops--',
	'--ml-equality-inequality--',
	'--default-kern--',
	'--fast-chaining--',
	'arrow-l', 'arrow-r', 'arrow-lr',
	'trig',
	'brst',
	'logic',
]

[composite.fsharp]
tag     = 'FSHP'
desc    = 'F#'
buildup = [ 'ml' ]

[composite.fstar]
tag     = 'FSTA'
desc    = 'F*'
buildup = [
	'--default-center-ops--',
	'--fstar-equality-inequality--',
	'--default-kern--',
	'--fast-chaining--',
	'arrow-l', 'arrow-r', 'arrow-lr',
	'trig',
	'brst',
	'logic',
]

[composite.haskell]
tag     = 'HSKL'
desc    = 'Haskell'
buildup = [
	'--default-center-ops--',
	'center-op-influence-dot',
	'--haskell-equality-inequality--',
	'--default-kern--',
	'--fast-chaining--',
	'arrow-l', 'arrow-r', 'arrow-lr',
	'counter-arrow-l', 'counter-arrow-r',
	'trig',
	'llgg',
	'ltgt-diamond',
	'logic',
]

[composite.idris]
tag     = 'IDRS'
desc    = 'Idris'
buildup = [
	'haskell',
	'brack-bar',
]

[composite.elm]
tag     = 'ELMX'
desc    = 'Elm'
buildup = [ 'haskell' ]

[composite.purescript]
tag     = 'PURS'
desc    = 'PureScript'
buildup = [ 'haskell' ]

[composite.swift]
tag     = 'SWFT'
desc    = 'Swift'
buildup = [
	'--default-center-ops--',
	'--default-equality-inequality--',
	'--default-kern--',
	'--fast-chaining--',
	'arrow-l', 'arrow-r', 'arrow-lr',
	'counter-arrow-l', 'counter-arrow-r',
	'trig',
	'slash-asterisk',
	'llgg',
	'ltgt-diamond',
]

[composite.dafny]
tag     = 'DFNY'
desc    = 'Dafny'
buildup = [
	'--default-center-ops--',
	'center-op-trigger-bar-l',
	'center-op-trigger-bar-r',
	'--default-equality-inequality--',
	'--default-kern--',
	'--default-chaining--',
	'arrow-l', 'arrow-r', 'arrow-lr',
	'counter-arrow-l', 'counter-arrow-r',
	'trig',
	'slash-asterisk',
	'llgg',
	'ltgt-diamond',
]

[composite.coq]
tag     = 'COQX'
desc    = 'Coq'
buildup = [
	'--default-center-ops--',
	'center-op-influence-dot',
	'--ml-equality-inequality--',
	'--default-kern--',
	'--fast-chaining--',
	'arrow-l', 'arrow-r', 'arrow-lr',
	'counter-arrow-l', 'counter-arrow-r',
	'trig',
	'llgg',
	'logic',
	'brst',
]

[composite.matlab]
tag     = 'MTLB'
desc    = 'Matlab'
buildup = [
	'--default-center-ops--',
	'--matlab-equality-inequality--',
	'--default-kern--',
	'--default-chaining--',
	'arrow-l', 'arrow-r', 'arrow-lr',
	'trig',
	'llgg',
]

[composite.verilog]
tag     = 'VRLG'
desc    = 'Verilog'
buildup = [
	'--default-center-ops--',
	'--verilog-equality-inequality--',
	'--default-kern--',
	'--default-chaining--',
	'arrow-l', 'arrow-r', 'arrow-lr',
	'trig',
	'slash-asterisk',
	'llgg',
	'llggeq',
	'brst',
]

[composite.wolfram]
tag     = 'WFLM'
brief   = 'Wolfram'
desc    = 'Wolfram Language (Mathematica)'
buildup = [
	'--default-center-ops--',
	'--wolfram-equality-inequality--',
	'--default-kern--',
	'--fast-chaining--',
	'arrow-l', 'arrow-r', 'arrow-lr',
	'trig',
	'ltgt-diamond',
	'brst',
	'logic',
	'colon-greater-as-colon-arrow',
]

[composite.erlang]
tag     = 'ERLA'
brief   = 'Erlang'
desc    = 'Erlang Language'
buildup = [
   	'--default-center-ops--',
	'--erlang-equality-inequality--',
	'--default-kern--',
	'--default-chaining--',
	'arrow-l', 'arrow-r', 'arrow-lr',
	'trig',
	'llgg',
]
