From b30f9a1677a4726b498828dfab1de2dcfc67c995 Mon Sep 17 00:00:00 2001 From: Spencer Williams Date: Tue, 6 Oct 2020 22:14:42 -0400 Subject: [PATCH] Add sample Crystal file --- .../syntax-tests/highlighted/Crystal/test.cr | 117 ++++++++++++++++++ tests/syntax-tests/source/Crystal/test.cr | 117 ++++++++++++++++++ 2 files changed, 234 insertions(+) create mode 100644 tests/syntax-tests/highlighted/Crystal/test.cr create mode 100644 tests/syntax-tests/source/Crystal/test.cr diff --git a/tests/syntax-tests/highlighted/Crystal/test.cr b/tests/syntax-tests/highlighted/Crystal/test.cr new file mode 100644 index 00000000..38c53cad --- /dev/null +++ b/tests/syntax-tests/highlighted/Crystal/test.cr @@ -0,0 +1,117 @@ +# An example file to test Crystal syntax highlighting in bat +my_var : Nil = nil +my_var_also : Int32 = 42 +my_other_var = 4.0 +another_float = 4.0_f32 +another_float_2 = 4e10 +another_float_3 = -0.5 +big_one = 1_000_000.111_111e-4 +ternary = 1 > 2 : 3 ? 4 +my_symbol = :ThisOne? +my_other_symbol = :No_That_One! +plus = :+ +minus = :- +my_string : String = "this string right here, with an interpolated value of #{my_var_also}" +my_array : Array(Int32) = [1,2,3,4] +my_tuple : Tuple(Int32, Int32, Int32, Int32) = {1,2,3,4} +my_named_tuple : NamedTuple(one: Int32, two: Int32) = {"one": 1, "two": 2} +my_hash : Hash(String, Int32) = {"one" => 1, "two" => 2} +my_proc : Proc(Int32, Int32) = ->(x : Int32){ x * x} +my_other_proc : Proc(String) = ->{ "Wow, neat!" } +puts my_string +puts(my_string) + +enum Colors + Red + Green + Blue +end + +class Greeter + @instance_field = Colors::Red + @@class_field = Colors::Green + + def initialize(@name = "world") + end + + def greet  + puts "Hello, #{@name}" + end + + def render_greeting : String + "Hello, #{@name}" + end + + def with_greeting + yield render_greeting + end + + def is_color_default? + @instance_field == @@class_field + end + + def self.greet_static(name : String) : Unit + puts "Hello, #{name}" + end +end + +greeter = Greeter.new("bat") +greeter.with_greeting do |greeting| + puts greeting +end + +puts <<-EOF + this is a heredoc and it has a value in it of #{greeter.render_greeting}! +EOF + +# This is a command: +`echo yay!` +$?.success? + +my_color = Colors::Red + +puts  + case my_color + when Colors::Red, .red? + "Red" + when Colors::Green, .green? + "Green" + when Colors::Blue, .blue? + "Blue" + else + "I dunno, man. Chartreuse? Maroon?" + end + +class MyGenericClass(T) + def initialize(@wrapped_value : T) + end + + def get + return @wrapped_value + end +end + + +def do_stuff_with_range(r : Range(Int|String)) + return if r.empty? + return unless !(r.empty?) + r.each do |item| + if /e/.match(item.to_s) + puts "#{item} contains the letter e!" + elsif item.to_s.empty? + break + else + next # this is unnecessary, but whatever + end + end +end + + +macro print_range(range) + {% for i in range %} + puts {{i.id}} + {% end %} +end + +print_range(1..3) +print_range(1...3) diff --git a/tests/syntax-tests/source/Crystal/test.cr b/tests/syntax-tests/source/Crystal/test.cr new file mode 100644 index 00000000..179a5577 --- /dev/null +++ b/tests/syntax-tests/source/Crystal/test.cr @@ -0,0 +1,117 @@ +# An example file to test Crystal syntax highlighting in bat +my_var : Nil = nil +my_var_also : Int32 = 42 +my_other_var = 4.0 +another_float = 4.0_f32 +another_float_2 = 4e10 +another_float_3 = -0.5 +big_one = 1_000_000.111_111e-4 +ternary = 1 > 2 : 3 ? 4 +my_symbol = :ThisOne? +my_other_symbol = :No_That_One! +plus = :+ +minus = :- +my_string : String = "this string right here, with an interpolated value of #{my_var_also}" +my_array : Array(Int32) = [1,2,3,4] +my_tuple : Tuple(Int32, Int32, Int32, Int32) = {1,2,3,4} +my_named_tuple : NamedTuple(one: Int32, two: Int32) = {"one": 1, "two": 2} +my_hash : Hash(String, Int32) = {"one" => 1, "two" => 2} +my_proc : Proc(Int32, Int32) = ->(x : Int32){ x * x} +my_other_proc : Proc(String) = ->{ "Wow, neat!" } +puts my_string +puts(my_string) + +enum Colors + Red + Green + Blue +end + +class Greeter + @instance_field = Colors::Red + @@class_field = Colors::Green + + def initialize(@name = "world") + end + + def greet + puts "Hello, #{@name}" + end + + def render_greeting : String + "Hello, #{@name}" + end + + def with_greeting + yield render_greeting + end + + def is_color_default? + @instance_field == @@class_field + end + + def self.greet_static(name : String) : Unit + puts "Hello, #{name}" + end +end + +greeter = Greeter.new("bat") +greeter.with_greeting do |greeting| + puts greeting +end + +puts <<-EOF + this is a heredoc and it has a value in it of #{greeter.render_greeting}! +EOF + +# This is a command: +`echo yay!` +$?.success? + +my_color = Colors::Red + +puts + case my_color + when Colors::Red, .red? + "Red" + when Colors::Green, .green? + "Green" + when Colors::Blue, .blue? + "Blue" + else + "I dunno, man. Chartreuse? Maroon?" + end + +class MyGenericClass(T) + def initialize(@wrapped_value : T) + end + + def get + return @wrapped_value + end +end + + +def do_stuff_with_range(r : Range(Int|String)) + return if r.empty? + return unless !(r.empty?) + r.each do |item| + if /e/.match(item.to_s) + puts "#{item} contains the letter e!" + elsif item.to_s.empty? + break + else + next # this is unnecessary, but whatever + end + end +end + + +macro print_range(range) + {% for i in range %} + puts {{i.id}} + {% end %} +end + +print_range(1..3) +print_range(1...3)