Skip to content

Instantly share code, notes, and snippets.

View taq's full-sized avatar

Eustáquio Rangel taq

View GitHub Profile
@taq
taq / gist:5413857
Created April 18, 2013 15:53
Using the "starship" operator
class Pessoa
include Comparable
attr_accessor :nome
def initialize(nome)
self.nome = nome
end
def <=>(outra)
return -1 if outra.size<self.nome.size
@taq
taq / gist:5413841
Created April 18, 2013 15:52
Overiding == operator in Ruby.
class Pessoa
attr_accessor :nome
def initialize(nome)
self.nome = nome
end
def ==(outra)
outra == self.nome
end
#!/bin/bash
if ! which md5sum > /dev/null; then
echo Install md5sum
exit 1
fi
if ! which curl > /dev/null; then
echo Install curl
exit 1
@taq
taq / enum_perf_big.rb
Created November 3, 2012 19:46
Ruby 2.0 lazy enumerators bigger collection performance
require "benchmark"
include Benchmark
values = (0..1000).to_a
bm(10) do |bench|
bench.report("regular") do
values.map { |x| x * 10 }.select { |x| x > 30 }
end
bench.report("lazy") do
@taq
taq / enum_perf_small.rb
Created November 3, 2012 19:43
Ruby 2.0 lazy enumerators small collection performance
require "benchmark"
include Benchmark
values = (0..100).to_a
bm(10) do |bench|
bench.report("regular") do
values.map { |x| x * 10 }.select { |x| x > 30 }
end
bench.report("lazy") do
@taq
taq / lazy.rb
Created November 3, 2012 19:39
Natural numbers enumerator on Ruby 2.0 using lazy evaluation
natural_numbers = Enumerator.new do |yielder|
number = 1
loop do
yielder.yield number
number += 1
end
end
p natural_numbers.lazy.select { |n| n.odd? }.take(5).to_a # => [1, 3, 5, 7, 9]
p natural_numbers.lazy.map { |n| n*2 }.take(5).to_a # => [2, 4, 6, 8, 10]
@taq
taq / enum.rb
Created November 3, 2012 19:34
Natural numbers enumerator on Ruby 1.9.x
natural_numbers = Enumerator.new do |yielder|
number = 1
loop do
yielder.yield number
number += 1
end
end
p natural_numbers.select { |n| n.odd? }.take(5).to_a
@taq
taq / onigmo.rb
Created November 3, 2012 19:25
Ruby 2.0 Onigmo
regexp = /^([A-Z])?[a-z]+(?(1)[A-Z]|[a-z])$/
p regexp =~ "foo" #=> 0
p regexp =~ "foO" #=> nil
p regexp =~ "FoO" #=> 0
@taq
taq / refinements.rb
Created November 3, 2012 19:16
Ruby 2.0 refinements
module TimeExtensions
refine Fixnum do
def minutes; self * 60; end
end
end
class MyApp
using TimeExtensions
def initialize
p 2.minutes
@taq
taq / prepend2.rb
Created November 3, 2012 19:06
Ruby 2.0 Module#prepend
class C
def x; "x"; end
end
module M
def x; '[' + super + ']'; end
def y; "y"; end
end
class C