class Hashie::Clash
A Clash
is a “Chainable Lazy Hash”. Inspired by libraries such as Arel, a Clash
allows you to chain together method arguments to build a hash, something that's especially useful if you're doing something like constructing a complex options hash. Here's a basic example:
c = Hashie::Clash.new.conditions(:foo => 'bar').order(:created_at) c # => {:conditions => {:foo => 'bar'}, :order => :created_at}
Clash
provides another way to create sub-hashes by using bang notation. You can dive into a sub-hash by providing a key with a bang and dive back out again with the _end! method. Example:
c = Hashie::Clash.new.conditions!.foo('bar').baz(123)._end!.order(:created_at) c # => {:conditions => {:foo => 'bar', :baz => 123}, :order => :created_at}
Because the primary functionality of Clash
is to build options objects, all keys are converted to symbols since many libraries expect symbols explicitly for keys.
Attributes
Public Class Methods
Public Instance Methods
Jump back up a level if you are using bang method chaining. For example:
c = Hashie::Clash.new
.foo('bar') c.baz!.foo(123) # => c c.baz!._end! # => c
# File lib/hashie/clash.rb, line 45 def _end! self._parent end