| Class | Hash |
| In: |
lib/merb-core/core_ext/hash.rb
|
| Parent: | Object |
Converts valid XML into a Ruby Hash structure.
| xml<String>: | A string representation of valid XML. |
Typecasting is performed on elements that have a type attribute: integer::
| boolean: | Anything other than "true" evaluates to false. |
| datetime: | Returns a Time object. See Time documentation for valid Time strings. |
| date: | Returns a Date object. See Date documentation for valid Date strings. |
Keys are automatically converted to snake_case
<user gender='m'>
<age type='integer'>35</age>
<name>Home Simpson</name>
<dob type='date'>1988-01-01</dob>
<joined-at type='datetime'>2000-04-28 23:01</joined-at>
<is-cool type='boolean'>true</is-cool>
</user>
evaluates to
{ "user" => {
"gender" => "m",
"age" => 35,
"name" => "Home Simpson",
"dob" => DateObject( 1998-01-01 ),
"joined_at" => TimeObject( 2000-04-28 23:01),
"is_cool" => true
}
}
<story>
A Quick <em>brown</em> Fox
</story>
evaluates to
{ "story" => "A Quick <em>brown</em> Fox" }
<story is-good='false'>
A Quick <em>brown</em> Fox
</story>
evaluates to
{ "story" => "A Quick <em>brown</em> Fox" }
<bicep unit='inches' type='integer'>60</bicep>
evaluates with a typecast to an integer. But unit attribute is ignored.
{ "bicep" => 60 }
| html_class<~to_s>: | The HTML class to add to the :class key. The html_class will be concatenated to any existing classes. |
hash[:class] #=> nil
hash.add_html_class!(:selected)
hash[:class] #=> "selected"
hash.add_html_class!("class1 class2")
hash[:class] #=> "selected class1 class2"
Destructively and non-recursively convert each key to an uppercase string, deleting nil values along the way.
| Hash: | The newly environmentized hash. |
{ :name => "Bob", :contact => { :email => "bob@bob.com" } }.environmentize_keys!
#=> { "NAME" => "Bob", "CONTACT" => { :email => "bob@bob.com" } }
| *rejected: | The hash keys to exclude. |
| Hash: | A new hash without the selected keys. |
{ :one => 1, :two => 2, :three => 3 }.except(:one)
#=> { :two => 2, :three => 3 }
Converts all keys into string values. This is used during reloading to prevent problems when classes are no longer declared.
hash = { One => 1, Two => 2 }.proctect_keys!
hash # => { "One" => 1, "Two" => 2 }
| String: | This hash as a query string |
{ :name => "Bob",
:address => {
:street => '111 Ruby Ave.',
:city => 'Ruby Central',
:phones => ['111-111-1111', '222-222-2222']
}
}.to_params
#=> "name=Bob&address[city]=Ruby Central&address[phones]=111-111-1111222-222-2222&address[street]=111 Ruby Ave."
| String: | The hash as attributes for an XML tag. |
{ :one => 1, "two"=>"TWO" }.to_xml_attributes
#=> 'one="1" two="TWO"'
Attempts to convert all string keys into Class keys. We run this after reloading to convert protected hashes back into usable hashes.
# Provided that classes One and Two are declared in this scope:
hash = { "One" => 1, "Two" => 2 }.unproctect_keys!
hash # => { One => 1, Two => 2 }