summaryrefslogtreecommitdiff
path: root/tests/lexers/fancy/example.txt
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lexers/fancy/example.txt')
-rw-r--r--tests/lexers/fancy/example.txt926
1 files changed, 926 insertions, 0 deletions
diff --git a/tests/lexers/fancy/example.txt b/tests/lexers/fancy/example.txt
new file mode 100644
index 00000000..21ccab5f
--- /dev/null
+++ b/tests/lexers/fancy/example.txt
@@ -0,0 +1,926 @@
+---input---
+class Person {
+ def initialize: @name age: @age {
+ """
+ This is a docstring for the Person constructor method.
+ Docstrings usually are multi-line, like this one.
+ """
+ }
+
+ def to_s {
+ # return is optional in this case, but we use it nontheless
+ return "Person with name: #{@name inspect} and age: #{@age}"
+ }
+}
+
+class PersonWithCity : Person {
+ def initialize: @name age: @age city: @city {
+ }
+
+ def to_s {
+ super to_s ++ " living in: #{@city inspect}"
+ }
+}
+
+p1 = Person new: "Johnny Jackson" age: 42
+p1 println # prints: Person with name: "Johnny Jackson" and age: 42
+
+p2 = PersonWithCity new: "John Appleseed" age: 55 city: "New York"
+p2 println # prints: Person with name: "John Appleseed" age: 55 living in: "New York"
+
+array = [1,2,3, "foo", 'bar]
+hash = <['foo => "bar", 'bar => 42]>
+tuple = (1,2,"hello","world")
+block = |x, y| {
+ x + y println
+}
+block call: [4,2]
+
+0b010101 & 0b00101 to_s: 2 . println
+0xFF & 0xAB to_s: 16 . println
+0o77 > 0o76 println
+123.123 + 0.222 println
+
+x = 0
+try {
+ 10 / x println
+} catch ZeroDivisionError => e {
+ x = 3
+ retry
+} finally {
+ "Finally, done!" println
+}
+
+def a_method: arg1 with_default_arg: arg2 (42) {
+ arg1 * arg2 println
+}
+
+a_method: 42
+a_method: 42 with_default_arg: 85
+
+class ClassWithClassMethod {
+ def self class_method1 {
+ 'works
+ }
+
+ def ClassWithClassMethod class_method2 {
+ 'this_as_well
+ }
+}
+
+ClassWithClassMethod class_method1 println
+ClassWithClassMethod class_method2 println
+
+def another_method: block {
+ 1 upto: 10 . map: block
+}
+
+# local returns
+another_method: |x| { return_local x * 2 } . inspect println
+
+
+# pattern matching:
+class PatternMatching {
+ def match_it: obj {
+ match obj {
+ case String -> "It's a String!" println
+ case Fixnum -> "It's a Number!" println
+ case _ -> "Aything else!" println
+ }
+ }
+
+ def match_with_extract: str {
+ match str {
+ # m holds the MatchData object, m1 & m2 the first and second matches
+ case /^(.*) : (.*)$/ -> |m, m1, m2|
+ "First match: #{m1}" println
+ "Second match: #{m2}" println
+ }
+ }
+}
+
+pm = PatternMatching new
+pm match_it: "foo"
+pm match_it: 42
+pm match_it: 'foo
+
+pm match_with_extract: "Hello : World!"
+
+
+# calling ruby methods:
+[3, 2, 1] reverse() each() |a| { puts(a) }
+"Hello" sub("ll", "y") println
+[3, 2, 1] map() |a| { a * 2 } inject(0) |s i| { s + i } println
+
+# test symbol highlighting
+['foo]
+['foo?!]
+{'foo}
+{'foo!?}
+{'foo:bar?!=&/:}
+('foo)
+
+# future sends
+42 @ to_s class println
+42 @ to_s: 16 . value println
+
+# async sends
+42 @@ println
+42 @@ upto: 100
+
+---tokens---
+'class' Keyword
+' ' Text
+'Person' Name.Constant
+' ' Text
+'{' Punctuation
+'\n ' Text
+'def' Keyword
+' ' Text
+'initialize:' Name.Function
+' ' Text
+'@name' Name.Variable.Instance
+' ' Text
+'age:' Name.Function
+' ' Text
+'@age' Name.Variable.Instance
+' ' Text
+'{' Punctuation
+'\n ' Text
+'"""\n This is a docstring for the Person constructor method.\n Docstrings usually are multi-line, like this one.\n """' Literal.String
+'\n ' Text
+'}' Punctuation
+'\n\n ' Text
+'def' Keyword
+' ' Text
+'to_s' Name
+' ' Text
+'{' Punctuation
+'\n ' Text
+'# return is optional in this case, but we use it nontheless\n' Comment.Single
+
+' ' Text
+'return' Keyword
+' ' Text
+'"Person with name: #{@name inspect} and age: #{@age}"' Literal.String
+'\n ' Text
+'}' Punctuation
+'\n' Text
+
+'}' Punctuation
+'\n\n' Text
+
+'class' Keyword
+' ' Text
+'PersonWithCity' Name.Constant
+' ' Text
+':' Punctuation
+' ' Text
+'Person' Name.Constant
+' ' Text
+'{' Punctuation
+'\n ' Text
+'def' Keyword
+' ' Text
+'initialize:' Name.Function
+' ' Text
+'@name' Name.Variable.Instance
+' ' Text
+'age:' Name.Function
+' ' Text
+'@age' Name.Variable.Instance
+' ' Text
+'city:' Name.Function
+' ' Text
+'@city' Name.Variable.Instance
+' ' Text
+'{' Punctuation
+'\n ' Text
+'}' Punctuation
+'\n\n ' Text
+'def' Keyword
+' ' Text
+'to_s' Name
+' ' Text
+'{' Punctuation
+'\n ' Text
+'super' Name.Constant
+' ' Text
+'to_s' Name
+' ' Text
+'++' Operator
+' ' Text
+'" living in: #{@city inspect}"' Literal.String
+'\n ' Text
+'}' Punctuation
+'\n' Text
+
+'}' Punctuation
+'\n\n' Text
+
+'p1' Name
+' ' Text
+'=' Operator
+' ' Text
+'Person' Name.Constant
+' ' Text
+'new:' Name.Function
+' ' Text
+'"Johnny Jackson"' Literal.String
+' ' Text
+'age:' Name.Function
+' ' Text
+'42' Literal.Number.Integer
+'\n' Text
+
+'p1' Name
+' ' Text
+'println' Name
+' ' Text
+'# prints: Person with name: "Johnny Jackson" and age: 42\n' Comment.Single
+
+'\n' Text
+
+'p2' Name
+' ' Text
+'=' Operator
+' ' Text
+'PersonWithCity' Name.Constant
+' ' Text
+'new:' Name.Function
+' ' Text
+'"John Appleseed"' Literal.String
+' ' Text
+'age:' Name.Function
+' ' Text
+'55' Literal.Number.Integer
+' ' Text
+'city:' Name.Function
+' ' Text
+'"New York"' Literal.String
+'\n' Text
+
+'p2' Name
+' ' Text
+'println' Name
+' ' Text
+'# prints: Person with name: "John Appleseed" age: 55 living in: "New York"\n' Comment.Single
+
+'\n' Text
+
+'array' Name
+' ' Text
+'=' Operator
+' ' Text
+'[' Operator
+'1' Literal.Number.Integer
+',' Punctuation
+'2' Literal.Number.Integer
+',' Punctuation
+'3' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'"foo"' Literal.String
+',' Punctuation
+' ' Text
+"'bar" Literal.String.Symbol
+']' Operator
+'\n' Text
+
+'hash' Name
+' ' Text
+'=' Operator
+' ' Text
+'<[' Operator
+"'foo" Literal.String.Symbol
+' ' Text
+'=>' Operator
+' ' Text
+'"bar"' Literal.String
+',' Punctuation
+' ' Text
+"'bar" Literal.String.Symbol
+' ' Text
+'=>' Operator
+' ' Text
+'42' Literal.Number.Integer
+']>' Operator
+'\n' Text
+
+'tuple' Name
+' ' Text
+'=' Operator
+' ' Text
+'(' Punctuation
+'1' Literal.Number.Integer
+',' Punctuation
+'2' Literal.Number.Integer
+',' Punctuation
+'"hello"' Literal.String
+',' Punctuation
+'"world"' Literal.String
+')' Punctuation
+'\n' Text
+
+'block' Name
+' ' Text
+'=' Operator
+' ' Text
+'|' Punctuation
+'x' Name
+',' Punctuation
+' ' Text
+'y' Name
+'|' Punctuation
+' ' Text
+'{' Punctuation
+'\n ' Text
+'x' Name
+' ' Text
+'+' Operator
+' ' Text
+'y' Name
+' ' Text
+'println' Name
+'\n' Text
+
+'}' Punctuation
+'\n' Text
+
+'block' Name
+' ' Text
+'call:' Name.Function
+' ' Text
+'[' Operator
+'4' Literal.Number.Integer
+',' Punctuation
+'2' Literal.Number.Integer
+']' Operator
+'\n\n' Text
+
+'0b010101' Literal.Number.Bin
+' ' Text
+'&' Operator
+' ' Text
+'0b00101' Literal.Number.Bin
+' ' Text
+'to_s:' Name.Function
+' ' Text
+'2' Literal.Number.Integer
+' ' Text
+'.' Operator
+' ' Text
+'println' Name
+'\n' Text
+
+'0xFF' Literal.Number.Hex
+' ' Text
+'&' Operator
+' ' Text
+'0xAB' Literal.Number.Hex
+' ' Text
+'to_s:' Name.Function
+' ' Text
+'16' Literal.Number.Integer
+' ' Text
+'.' Operator
+' ' Text
+'println' Name
+'\n' Text
+
+'0o77' Literal.Number.Oct
+' ' Text
+'>' Operator
+' ' Text
+'0o76' Literal.Number.Oct
+' ' Text
+'println' Name
+'\n' Text
+
+'123' Literal.Number.Integer
+'.' Operator
+'123' Literal.Number.Integer
+' ' Text
+'+' Operator
+' ' Text
+'0' Literal.Number.Integer
+'.' Operator
+'222' Literal.Number.Integer
+' ' Text
+'println' Name
+'\n\n' Text
+
+'x' Name
+' ' Text
+'=' Operator
+' ' Text
+'0' Literal.Number.Integer
+'\n' Text
+
+'try' Keyword
+' ' Text
+'{' Punctuation
+'\n ' Text
+'10' Literal.Number.Integer
+' ' Text
+'/' Operator
+' ' Text
+'x' Name
+' ' Text
+'println' Name
+'\n' Text
+
+'}' Punctuation
+' ' Text
+'catch' Keyword
+' ' Text
+'ZeroDivisionError' Name.Constant
+' ' Text
+'=>' Operator
+' ' Text
+'e' Name
+' ' Text
+'{' Punctuation
+'\n ' Text
+'x' Name
+' ' Text
+'=' Operator
+' ' Text
+'3' Literal.Number.Integer
+'\n ' Text
+'retry' Keyword
+'\n' Text
+
+'}' Punctuation
+' ' Text
+'finally' Keyword
+' ' Text
+'{' Punctuation
+'\n ' Text
+'"Finally, done!"' Literal.String
+' ' Text
+'println' Name
+'\n' Text
+
+'}' Punctuation
+'\n\n' Text
+
+'def' Keyword
+' ' Text
+'a_method:' Name.Function
+' ' Text
+'arg1' Name
+' ' Text
+'with_default_arg:' Name.Function
+' ' Text
+'arg2' Name
+' ' Text
+'(' Punctuation
+'42' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'{' Punctuation
+'\n ' Text
+'arg1' Name
+' ' Text
+'*' Operator
+' ' Text
+'arg2' Name
+' ' Text
+'println' Name
+'\n' Text
+
+'}' Punctuation
+'\n\n' Text
+
+'a_method:' Name.Function
+' ' Text
+'42' Literal.Number.Integer
+'\n' Text
+
+'a_method:' Name.Function
+' ' Text
+'42' Literal.Number.Integer
+' ' Text
+'with_default_arg:' Name.Function
+' ' Text
+'85' Literal.Number.Integer
+'\n\n' Text
+
+'class' Keyword
+' ' Text
+'ClassWithClassMethod' Name.Constant
+' ' Text
+'{' Punctuation
+'\n ' Text
+'def' Keyword
+' ' Text
+'self' Name.Constant
+' ' Text
+'class_method1' Name
+' ' Text
+'{' Punctuation
+'\n ' Text
+"'works" Literal.String.Symbol
+'\n ' Text
+'}' Punctuation
+'\n\n ' Text
+'def' Keyword
+' ' Text
+'ClassWithClassMethod' Name.Constant
+' ' Text
+'class_method2' Name
+' ' Text
+'{' Punctuation
+'\n ' Text
+"'this_as_well" Literal.String.Symbol
+'\n ' Text
+'}' Punctuation
+'\n' Text
+
+'}' Punctuation
+'\n\n' Text
+
+'ClassWithClassMethod' Name.Constant
+' ' Text
+'class_method1' Name
+' ' Text
+'println' Name
+'\n' Text
+
+'ClassWithClassMethod' Name.Constant
+' ' Text
+'class_method2' Name
+' ' Text
+'println' Name
+'\n\n' Text
+
+'def' Keyword
+' ' Text
+'another_method:' Name.Function
+' ' Text
+'block' Name
+' ' Text
+'{' Punctuation
+'\n ' Text
+'1' Literal.Number.Integer
+' ' Text
+'upto:' Name.Function
+' ' Text
+'10' Literal.Number.Integer
+' ' Text
+'.' Operator
+' ' Text
+'map:' Name.Function
+' ' Text
+'block' Name
+'\n' Text
+
+'}' Punctuation
+'\n\n' Text
+
+'# local returns\n' Comment.Single
+
+'another_method:' Name.Function
+' ' Text
+'|' Punctuation
+'x' Name
+'|' Punctuation
+' ' Text
+'{' Punctuation
+' ' Text
+'return_local' Keyword
+' ' Text
+'x' Name
+' ' Text
+'*' Operator
+' ' Text
+'2' Literal.Number.Integer
+' ' Text
+'}' Punctuation
+' ' Text
+'.' Operator
+' ' Text
+'inspect' Name
+' ' Text
+'println' Name
+'\n\n\n' Text
+
+'# pattern matching:\n' Comment.Single
+
+'class' Keyword
+' ' Text
+'PatternMatching' Name.Constant
+' ' Text
+'{' Punctuation
+'\n ' Text
+'def' Keyword
+' ' Text
+'match_it:' Name.Function
+' ' Text
+'obj' Name
+' ' Text
+'{' Punctuation
+'\n ' Text
+'match' Keyword
+' ' Text
+'obj' Name
+' ' Text
+'{' Punctuation
+'\n ' Text
+'case' Keyword
+' ' Text
+'String' Name.Builtin
+' ' Text
+'->' Operator
+' ' Text
+'"It\'s a String!"' Literal.String
+' ' Text
+'println' Name
+'\n ' Text
+'case' Keyword
+' ' Text
+'Fixnum' Name.Constant
+' ' Text
+'->' Operator
+' ' Text
+'"It\'s a Number!"' Literal.String
+' ' Text
+'println' Name
+'\n ' Text
+'case' Keyword
+' ' Text
+'_' Name
+' ' Text
+'->' Operator
+' ' Text
+'"Aything else!"' Literal.String
+' ' Text
+'println' Name
+'\n ' Text
+'}' Punctuation
+'\n ' Text
+'}' Punctuation
+'\n\n ' Text
+'def' Keyword
+' ' Text
+'match_with_extract:' Name.Function
+' ' Text
+'str' Name
+' ' Text
+'{' Punctuation
+'\n ' Text
+'match' Keyword
+' ' Text
+'str' Name
+' ' Text
+'{' Punctuation
+'\n ' Text
+'# m holds the MatchData object, m1 & m2 the first and second matches\n' Comment.Single
+
+' ' Text
+'case' Keyword
+' ' Text
+'/^(.*) : (.*)$/' Literal.String.Regex
+' ' Text
+'->' Operator
+' ' Text
+'|' Punctuation
+'m' Name
+',' Punctuation
+' ' Text
+'m1' Name
+',' Punctuation
+' ' Text
+'m2' Name
+'|' Punctuation
+'\n ' Text
+'"First match: #{m1}"' Literal.String
+' ' Text
+'println' Name
+'\n ' Text
+'"Second match: #{m2}"' Literal.String
+' ' Text
+'println' Name
+'\n ' Text
+'}' Punctuation
+'\n ' Text
+'}' Punctuation
+'\n' Text
+
+'}' Punctuation
+'\n\n' Text
+
+'pm' Name
+' ' Text
+'=' Operator
+' ' Text
+'PatternMatching' Name.Constant
+' ' Text
+'new' Name
+'\n' Text
+
+'pm' Name
+' ' Text
+'match_it:' Name.Function
+' ' Text
+'"foo"' Literal.String
+'\n' Text
+
+'pm' Name
+' ' Text
+'match_it:' Name.Function
+' ' Text
+'42' Literal.Number.Integer
+'\n' Text
+
+'pm' Name
+' ' Text
+'match_it:' Name.Function
+' ' Text
+"'foo" Literal.String.Symbol
+'\n\n' Text
+
+'pm' Name
+' ' Text
+'match_with_extract:' Name.Function
+' ' Text
+'"Hello : World!"' Literal.String
+'\n\n\n' Text
+
+'# calling ruby methods:\n' Comment.Single
+
+'[' Operator
+'3' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'2' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'1' Literal.Number.Integer
+']' Operator
+' ' Text
+'reverse' Name
+'(' Punctuation
+')' Punctuation
+' ' Text
+'each' Name
+'(' Punctuation
+')' Punctuation
+' ' Text
+'|' Punctuation
+'a' Name
+'|' Punctuation
+' ' Text
+'{' Punctuation
+' ' Text
+'puts' Name
+'(' Punctuation
+'a' Name
+')' Punctuation
+' ' Text
+'}' Punctuation
+'\n' Text
+
+'"Hello"' Literal.String
+' ' Text
+'sub' Name
+'(' Punctuation
+'"ll"' Literal.String
+',' Punctuation
+' ' Text
+'"y"' Literal.String
+')' Punctuation
+' ' Text
+'println' Name
+'\n' Text
+
+'[' Operator
+'3' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'2' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'1' Literal.Number.Integer
+']' Operator
+' ' Text
+'map' Name
+'(' Punctuation
+')' Punctuation
+' ' Text
+'|' Punctuation
+'a' Name
+'|' Punctuation
+' ' Text
+'{' Punctuation
+' ' Text
+'a' Name
+' ' Text
+'*' Operator
+' ' Text
+'2' Literal.Number.Integer
+' ' Text
+'}' Punctuation
+' ' Text
+'inject' Name
+'(' Punctuation
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'|' Punctuation
+'s' Name
+' ' Text
+'i' Name
+'|' Punctuation
+' ' Text
+'{' Punctuation
+' ' Text
+'s' Name
+' ' Text
+'+' Operator
+' ' Text
+'i' Name
+' ' Text
+'}' Punctuation
+' ' Text
+'println' Name
+'\n\n' Text
+
+'# test symbol highlighting\n' Comment.Single
+
+'[' Operator
+"'foo" Literal.String.Symbol
+']' Operator
+'\n' Text
+
+'[' Operator
+"'foo?!" Literal.String.Symbol
+']' Operator
+'\n' Text
+
+'{' Punctuation
+"'foo" Literal.String.Symbol
+'}' Punctuation
+'\n' Text
+
+'{' Punctuation
+"'foo!?" Literal.String.Symbol
+'}' Punctuation
+'\n' Text
+
+'{' Punctuation
+"'foo:bar?!=&/:" Literal.String.Symbol
+'}' Punctuation
+'\n' Text
+
+'(' Punctuation
+"'foo" Literal.String.Symbol
+')' Punctuation
+'\n\n' Text
+
+'# future sends\n' Comment.Single
+
+'42' Literal.Number.Integer
+' ' Text
+'@' Operator
+' ' Text
+'to_s' Name
+' ' Text
+'class' Keyword
+' ' Text
+'println' Name
+'\n' Text
+
+'42' Literal.Number.Integer
+' ' Text
+'@' Operator
+' ' Text
+'to_s:' Name.Function
+' ' Text
+'16' Literal.Number.Integer
+' ' Text
+'.' Operator
+' ' Text
+'value' Name
+' ' Text
+'println' Name
+'\n\n' Text
+
+'# async sends\n' Comment.Single
+
+'42' Literal.Number.Integer
+' ' Text
+'@@' Operator
+' ' Text
+'println' Name
+'\n' Text
+
+'42' Literal.Number.Integer
+' ' Text
+'@@' Operator
+' ' Text
+'upto:' Name.Function
+' ' Text
+'100' Literal.Number.Integer
+'\n' Text