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