Skip to content

Instantly share code, notes, and snippets.

View denisdefreyne's full-sized avatar

Denis Defreyne denisdefreyne

View GitHub Profile
scores = [
Score.new(6),
Score.new(17),
Score.new(14),
Score.new(13),
Score.new(11),
]
p scores.min
p scores.max
class Score
attr_reader :value
def initialize(value)
@value = value
end
def grade
if @value < 10
"failing"
case "/home/denis"
when PathPattern.new("/home/*")
puts "Home sweet home"
else
puts "Somewhere, I guess"
end
bin_ruby = Path.new("bin", "ruby")
var_log = Path.new("var", "log")
pattern = PathPattern.new("/bin/*")
pattern === bin_ruby # => true
pattern === var_log # => false
pattern = PathPattern.new("/bin/*")
pattern === "/bin/ruby" # => true
pattern === "/var/log" # => false
class PathPattern
def initialize(string)
@string = string
end
def ===(other)
File.fnmatch(@string, other)
end
end
phone = "+491573abcde"
case phone
when /00000/
puts "Too many zeroes!"
when /[a-z]/
puts "Your phone number has letters in it?!"
end
[4, 2.0, 7, 6.1].grep(Integer) # => [4, 7]
[4, 2.0, 7, 6.1].grep(2..6) # => [4, 2.0]
# Same, but more verbose:
[4, 2.0, 7, 6.1].select { |num| Integer === num }
[4, 2.0, 7, 6.1].select { |num| 2..6 === num }
Integer === 15 # => true
Integer === 15.5 # => false
if 10..15 === 14
puts "Kinda small!"
elsif 80..99 === 14
puts "Kinda large!"
end