2
0
mirror of https://github.com/sharkdp/bat synced 2024-11-06 21:20:25 +00:00

Add sample Crystal file

This commit is contained in:
Spencer Williams 2020-10-06 22:14:42 -04:00 committed by David Peter
parent e6c3f96931
commit b30f9a1677
2 changed files with 234 additions and 0 deletions

View File

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

View File

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