# 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)