Posted by root
Mon, 04 Aug 2008 13:59:00 GMT
Use nil when the return is a boolean value.
Use false when the return is either false or not true object.
Otherwise they have pretty much the same semantic:
nil == false => false
nil.nil? => true
false.nil? => false
true.nil? => false
if !nil && !false
puts 'true'
end
if nil.nil? && !true.nil?
puts 'true'
end
>> TrueClass.ancestors
=> [TrueClass, Object, Kernel]
>> FalseClass.ancestors
=> [FalseClass, Object, Kernel]
>> NilClass.ancestors
=> [NilClass, Object, Kernel]
Ruby core docs
Posted in Ruby | Tags basis | no comments | no trackbacks
Posted by root
Sun, 03 Aug 2008 18:09:00 GMT
mt = Array.new(10) { |e| Hash.new { |h,k| h[k] = k * e } }
mt[1][2] => 2
mt[2][2] => 4
mt[5][4] => 20
mt[9][5] => 45
Posted in Ruby | Tags array, hash | no comments | no trackbacks
Posted by root
Fri, 01 Aug 2008 05:58:00 GMT
Sample .bashrc file:
alias d2b='ruby -e "puts ARGV.first.to_i.to_s(2)"'
alias d2h='ruby -e "puts ARGV.first.to_i.to_s(16)"'
alias d2o='ruby -e "puts ARGV.first.to_i.to_s(8)"'
alias b2d='ruby -e "puts eval(%q|0b| + ARGV.first)"'
alias b2h='ruby -e "puts eval(%q|0b| + ARGV.first).to_s(16)"'
alias b2o='ruby -e "puts eval(%q|0b| + ARGV.first).to_s(8)"'
alias h2d='ruby -e "puts eval(%q|0x| + ARGV.first)"'
alias h2b='ruby -e "puts eval(%q|0x| + ARGV.first).to_s(2)"'
alias h2o='ruby -e "puts eval(%q|0x| + ARGV.first).to_s(8)"'
alias o2d='ruby -e "puts eval(%q|0o| + ARGV.first)"'
alias o2b='ruby -e "puts eval(%q|0o| + ARGV.first).to_s(2)"'
alias o2h='ruby -e "puts eval(%q|0o| + ARGV.first).to_s(16)"'
Posted in Ruby, scripts | Tags alias | no comments | no trackbacks
Posted by root
Thu, 31 Jul 2008 11:03:00 GMT
require 'rubygems'
require 'google_translate'
tr = Google::Translate.new
tr.translate :from => "en", :to => "de", :text => "Hello, World!"
=> Hallo, Welt!
tr.translate :from => "en", :to => "es", :text => "Hello, World!"
=> Hola, Mundo!
tr = Google::Translate.new { |agent| agent.user_agent_alias = 'Mac Safari' }
The project home page
Posted in Ruby | Tags api | no comments
Posted by root
Wed, 30 Jul 2008 13:59:00 GMT
require 'benchmark'
n = 1_000_000
s = " : : : "
Benchmark.bm do |x|
x.report("tr:") { n.times{ s.tr(":", ";") } }
x.report("tr_s:") { n.times{ s.tr_s(":", ";") } }
x.report("gsub:") { n.times{ s.gsub(":", ";") } }
end
Right,
tr beats the other methods:
user system total real
tr: 2.760000 0.120000 2.880000 ( 2.897022)
tr_s: 5.310000 0.240000 5.550000 ( 5.822026)
gsub: 8.850000 0.200000 9.050000 ( 9.311452)
Posted in Ruby | Tags performance | no comments
Posted by root
Sun, 27 Jul 2008 11:47:00 GMT
In essence (from bulgarian to japanese):
agent = WWW::Mechanize.new
agent.post("http://translate.google.com/translate_t",
"sl" => "bg",
"tl" => "ja",
"text" => "Здравей, свят!").search("#result_box").inner_html
results in こんにちは、世界!
Posted in Ruby | Tags api | no comments
Posted by root
Sun, 27 Jul 2008 07:55:00 GMT
String methods:
"a".upto("z"){ |i| puts i }
a = String.new "a"
0.upto(0){ p a }
1.upto(25){ p a.next! }
Range method:
("a".."z").each{ |e| puts e }
Posted in Ruby | Tags alphabet | no comments
Posted by root
Sat, 26 Jul 2008 04:50:00 GMT
def my_method; end
undef my_method
The core manual
Posted in Ruby | Tags OOP | no comments
Posted by root
Sat, 26 Jul 2008 04:11:00 GMT
arr = (1..10).to_a
str = arr * ', '
str = arr.join(', ')
Am I going to use the perlish coding style? Not really.
Posted in Ruby | Tags observation | no comments
Posted by root
Mon, 21 Jul 2008 22:15:00 GMT
Ruby file manipulation is as easy as:
MyFile.create "test.txt"
MyFile.add "test.txt", "some content"
MyFile.remove "test.txt"
For example create a file caled fileeasy.rb and add the following module to it:
module FileEasy
def self.included(subject)
subject.extend(ClassMethods)
end
module ClassMethods
alias_method :delete, :remove
alias_method :unlink, :remove
def create(filename)
File.open(filename, "w")
end
def add(filename, text)
File.open(filename, "a"){ |f| f << text }
end
def remove(filename)
File.delete(filename)
end
end
end
Then test it with irb:
require 'fileeasy'
class MyClass
include FileEasy
end
MyFile.create "text.txt"
MyFile.add "text.txt", "test content"
MyFile.remove "text.txt"
Of course this post is just a simple tutorial and the standard library is the best choice – FileUtils.
Posted in Ruby | Tags file | no comments