bat/tests/syntax-tests/highlighted/Crystal/test.cr

118 lines
16 KiB
Crystal
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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