Method: Tml::Tokens::Data#token_value_from_hash_param
- Defined in:
- lib/tml/tokens/data.rb
#token_value_from_hash_param(hash, language, options) ⇒ Object
Hashes are often used with JSON structures. We can be smart about how to pull default values.
examples:
tr(“Hello user”, => {:name => “Michael”, :gender => :male}}
tr(“Hello user”, => {:object => {:gender => :male, :value => “Michael”}}} tr(“Hello user”, => {:object => {:name => “Michael”, :gender => :male, :property => :name}}} tr(“Hello user”, => {:object => {:name => “Michael”, :gender => :male, :attribute => :name}}}
tr(“Hello user”, => {:object => user, :value => “Michael”}} tr(“Hello user”, => {:object => user, :property => :name}} tr(“Hello user”, => {:object => user, :attribute => :name}}
322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 |
# File 'lib/tml/tokens/data.rb', line 322 def token_value_from_hash_param(hash, language, ) value = Tml::Utils.hash_value(hash, :value) [:name, :first_name, :display_name, :full_name, :username].each do |attr| value ||= Tml::Utils.hash_value(hash, attr) end attr = Tml::Utils.hash_value(hash, :attribute) || Tml::Utils.hash_value(hash, :property) value ||= Tml::Utils.hash_value(hash, attr) object = Tml::Utils.hash_value(hash, :object) unless value.nil? return sanitize(value, object || hash, language, .merge(:safe => true)) end if object.nil? return error("Missing value for hash token #{full_name} in #{label}") end if object.is_a?(Hash) unless attr.nil? return sanitize(Tml::Utils.hash_value(object, attr), object, language, .merge(:safe => false)) end return error("Missing value for hash token #{full_name} in #{label}") end sanitize(object.send(attr), object, language, .merge(:safe => false)) end |