Yesterday I wrote about Ruby hashes. Use it and you can write nice looking code.

edit({"security" => "low"})

def edit(properties)
  prepare_for_edit
  edit_title(properties["title"]) if properties["title"]
  # ...
  edit_security(properties["security"]) if properties["security"]
  check_after_edit
end

Instead of ugly code.

edit(nil, nil, nil, nil, nil, nil, security)

def edit(title = nil, url = nil, mail = nil, description = nil, membership = nil, status = nil, security = nil)
  prepare_for_edit
  edit_title(title) if title
  # ...
  edit_security(security) if security
  check_after_edit
  end

I got interested when I saw this at wtr-general

ie.div(:name => 'foo', :index => 2).click

This will find the second div with the name foo.

I tried to do something like that, but this was the best I could think of.

div(:name => 'foo', :index => 2)

def div(first, second)
  hash = {first, second}
  puts hash[:name]
  puts hash[:index]
end

And, of course, it did not work.

ArgumentError: wrong number of arguments (1 for 2)

I posted my problem to wtr-general and Charley Baker was kind enough to help me. A link to Collecting Hash Arguments from Programming Ruby said it all.

div(:name => 'foo', :index => 2)

def div(properties)
  puts properties[:name]
  puts properties[:index]
end