def doSomething(x) if x < 10 raise "value to low" end end begin doSomething(5) rescue print "error: #{$!}\n" ensure print "make sure this is done\n" end # user-defined exception class ChainedException < Exception attr :no attr :cause def initialize(no, cause=nil) @no = no @cause = cause end def to_s() return "no=#{@no}" end end def raiseException() raise ChainedException.new(123) end begin raiseException() rescue ChainedException print "error: #{$!}\n" end
Mixin defining the "to_s" method based on reflection.
module Display def to_s() s = "" for name in instance_variables s += "#{name[1..-1]}=#{instance_eval(name)}\n" end return s end end # Tiny address class using the Display mixin class Address include Display attr_reader :street, :city, :country def initialize(street, city, country="Germany") @street, @city, @country = street, city, country end end address = Address.new("Am Seestern 4", "Duesseldorf", "Germany") print address, "\n"
Here is a regular expression looking for the "src" parts in HTML image tags.
# regular expression looking for the "src" parts in HTML image tags # The 'true' argument makes the pattern case insensitive r = Regexp.compile('(?:input|img).*src=(\'|")(.*)\1', true) s = "<input type='image' src='images/some.gif'>" m = r.match(s) assertEquals("images/some.gif", m[2]) # same in perl style s =~ /(?:input|img).*src=(\'|")(.*)\1/ assertEquals("images/some.gif", m[2])
The true argument of the compile method makes the pattern case insensitive.