mirror of
https://github.com/sharkdp/bat
synced 2024-12-26 12:13:09 +00:00
118 lines
2.2 KiB
Crystal
118 lines
2.2 KiB
Crystal
|
# 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)
|