2018-01-21 23:33:32 +08:00
// CodeMirror, copyright (c) by Marijn Haverbeke and others
2018-10-07 18:02:07 +08:00
// Distributed under an MIT license: https://codemirror.net/LICENSE
2018-01-21 23:33:32 +08:00
( function ( ) {
var mode = CodeMirror . getMode ( { indentUnit : 2 } , "text/x-xu" ) ;
function MT ( name ) { test . mode ( name , mode , Array . prototype . slice . call ( arguments , 1 ) , "xu" ) ; }
MT ( "empty chart" ,
"[keyword msc][bracket {]" ,
"[base ]" ,
"[bracket }]"
) ;
MT ( "empty chart" ,
"[keyword xu][bracket {]" ,
"[base ]" ,
"[bracket }]"
) ;
MT ( "comments" ,
"[comment // a single line comment]" ,
"[comment # another single line comment /* and */ ignored here]" ,
"[comment /* A multi-line comment even though it contains]" ,
"[comment msc keywords and \"quoted text\"*/]" ) ;
MT ( "strings" ,
"[string \"// a string\"]" ,
"[string \"a string running over]" ,
"[string two lines\"]" ,
"[string \"with \\\"escaped quote\"]"
) ;
MT ( "xù/ msgenny keywords classify as 'keyword'" ,
"[keyword watermark]" ,
"[keyword alt]" , "[keyword loop]" , "[keyword opt]" , "[keyword ref]" , "[keyword else]" , "[keyword break]" , "[keyword par]" , "[keyword seq]" , "[keyword assert]"
) ;
MT ( "xù/ msgenny constants classify as 'variable'" ,
"[variable auto]" ,
"[variable true]" , "[variable false]" , "[variable on]" , "[variable off]"
) ;
MT ( "mscgen options classify as keyword" ,
"[keyword hscale]" , "[keyword width]" , "[keyword arcgradient]" , "[keyword wordwraparcs]"
) ;
MT ( "mscgen arcs classify as keyword" ,
"[keyword note]" , "[keyword abox]" , "[keyword rbox]" , "[keyword box]" ,
"[keyword |||...---]" , "[keyword ..--==::]" ,
"[keyword ->]" , "[keyword <-]" , "[keyword <->]" ,
"[keyword =>]" , "[keyword <=]" , "[keyword <=>]" ,
"[keyword =>>]" , "[keyword <<=]" , "[keyword <<=>>]" ,
"[keyword >>]" , "[keyword <<]" , "[keyword <<>>]" ,
"[keyword -x]" , "[keyword x-]" , "[keyword -X]" , "[keyword X-]" ,
"[keyword :>]" , "[keyword <:]" , "[keyword <:>]"
) ;
MT ( "within an attribute list, attributes classify as attribute" ,
"[bracket [[][attribute label]" ,
"[attribute id]" , "[attribute url]" , "[attribute idurl]" ,
"[attribute linecolor]" , "[attribute linecolour]" , "[attribute textcolor]" , "[attribute textcolour]" , "[attribute textbgcolor]" , "[attribute textbgcolour]" ,
"[attribute arclinecolor]" , "[attribute arclinecolour]" , "[attribute arctextcolor]" , "[attribute arctextcolour]" , "[attribute arctextbgcolor]" , "[attribute arctextbgcolour]" ,
2019-06-02 15:59:07 +08:00
"[attribute arcskip]" , "[attribute title]" ,
"[attribute activate]" , "[attribute deactivate]" , "[attribute activation][bracket ]]]"
2018-01-21 23:33:32 +08:00
) ;
MT ( "outside an attribute list, attributes classify as base" ,
"[base label]" ,
"[base id]" , "[base url]" , "[base idurl]" ,
"[base linecolor]" , "[base linecolour]" , "[base textcolor]" , "[base textcolour]" , "[base textbgcolor]" , "[base textbgcolour]" ,
"[base arclinecolor]" , "[base arclinecolour]" , "[base arctextcolor]" , "[base arctextcolour]" , "[base arctextbgcolor]" , "[base arctextbgcolour]" ,
2019-06-02 15:59:07 +08:00
"[base arcskip]" , "[base title]"
2018-01-21 23:33:32 +08:00
) ;
MT ( "a typical program" ,
"[comment # typical xu program]" ,
"[keyword xu][base ][bracket {]" ,
"[keyword wordwraparcs][operator =][string \"true\"][base , ][keyword hscale][operator =][string \"0.8\"][base , ][keyword arcgradient][operator =][base 30, ][keyword width][operator =][variable auto][base ;]" ,
"[base a][bracket [[][attribute label][operator =][string \"Entity A\"][bracket ]]][base ,]" ,
"[base b][bracket [[][attribute label][operator =][string \"Entity B\"][bracket ]]][base ,]" ,
"[base c][bracket [[][attribute label][operator =][string \"Entity C\"][bracket ]]][base ;]" ,
"[base a ][keyword =>>][base b][bracket [[][attribute label][operator =][string \"Hello entity B\"][bracket ]]][base ;]" ,
2019-06-02 15:59:07 +08:00
"[base a ][keyword <<][base b][bracket [[][attribute label][operator =][string \"Here's an answer dude!\"][base , ][attribute title][operator =][string \"This is a title for this message\"][bracket ]]][base ;]" ,
2018-01-21 23:33:32 +08:00
"[base c ][keyword :>][base *][bracket [[][attribute label][operator =][string \"What about me?\"][base , ][attribute textcolor][operator =][base red][bracket ]]][base ;]" ,
"[bracket }]"
) ;
} ) ( ) ;