Class: InJson::Definition
- Inherits:
-
Object
- Object
- InJson::Definition
- Defined in:
- lib/in_json.rb
Overview
A Definition is a proxy class primarily for evaluating InJson blocks into a Hash definition.
class Post
in_json do
name
email
end # => {:email=>nil, :name=>nil}
in_json(:with_posts_and_comments_named) do
posts do
title
comments :only_approved
end
end # => {:posts=>{:title=>nil, :comments=>:only_approved}}
end
Instance Method Summary collapse
-
#initialize ⇒ Definition
constructor
A new instance of Definition.
-
#method_missing(method, *args, &block) ⇒ Hash
Stores any method calls as Hash keys.
Constructor Details
#initialize ⇒ Definition
Returns a new instance of Definition.
35 36 37 |
# File 'lib/in_json.rb', line 35 def initialize @hash = {} end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Hash
Stores any method calls as Hash keys
41 42 43 44 45 46 |
# File 'lib/in_json.rb', line 41 def method_missing(method, *args, &block) method_s = method.to_s method = method_s.sub(/^_/, '').to_sym if method_s =~ /^_.*/ @hash[method] = block_given? ? Definition.new.instance_eval(&block) : args.first @hash end |