Module: Representable::Hash
- Included in:
- Collection, YAML
- Defined in:
- lib/representable/hash.rb,
lib/representable/autoload.rb,
lib/representable/hash/binding.rb,
lib/representable/hash/collection.rb,
lib/representable/hash/allow_symbols.rb
Overview
The generic representer. Brings #to_hash and #from_hash to your object. If you plan to write your own representer for a new media type, try to use this module (e.g., check how JSON reuses Hash’s internal architecture).
Defined Under Namespace
Modules: AllowSymbols, ClassMethods, Collection Classes: Binding, Conversion
Class Method Summary collapse
Instance Method Summary collapse
-
#from_hash(data, options = {}, binding_builder = Binding) ⇒ Object
Note: ‘#from_hash` still does not stringify incoming hashes.
- #to_hash(options = {}, binding_builder = Binding) ⇒ Object
Class Method Details
.included(base) ⇒ Object
9 10 11 12 13 14 15 |
# File 'lib/representable/hash.rb', line 9 def self.included(base) base.class_eval do include Representable # either in Hero or HeroRepresentation. extend ClassMethods register_feature Representable::Hash end end |
Instance Method Details
#from_hash(data, options = {}, binding_builder = Binding) ⇒ Object
Note: ‘#from_hash` still does not stringify incoming hashes. This is per design: Representable is not made for hashes, only, but for any arbitrary data structure. A generic `key.to_s` with non-hash data would result in weird issues. I decided it’s more predictable to require the user to provide stringified keys.
28 29 30 31 32 |
# File 'lib/representable/hash.rb', line 28 def from_hash(data, ={}, binding_builder=Binding) data = filter_wrap(data, ) update_properties_from(data, , binding_builder) end |
#to_hash(options = {}, binding_builder = Binding) ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/representable/hash.rb', line 34 def to_hash(={}, binding_builder=Binding) hash = create_representation_with({}, , binding_builder) return hash unless wrap = [:wrap] || representation_wrap() {wrap => hash} end |