Module: ModelView
- Defined in:
- lib/model_view.rb,
lib/model_view/updater.rb,
lib/model_view/version.rb,
lib/model_view/resolver.rb
Defined Under Namespace
Classes: Resolver, Updater
Constant Summary
collapse
- ROOT =
:__root__
- VERSION =
"0.6.2"
Instance Method Summary
collapse
Instance Method Details
#after_update(&block) ⇒ Object
42
43
44
45
|
# File 'lib/model_view.rb', line 42
def after_update(&block)
scope_name = @current_scope || ROOT
add_after_update scope_name, block
end
|
#as_hash(object, opts = {}) ⇒ Object
51
52
53
54
55
|
# File 'lib/model_view.rb', line 51
def as_hash(object, opts={})
scope = opts[:scope] || ROOT
context = opts[:context] || {}
ModelView::Resolver.resolve(object, @scopes, scope , context)
end
|
#extend_scope(*scope) ⇒ Object
37
38
39
40
|
# File 'lib/model_view.rb', line 37
def extend_scope(*scope)
raise Exception.new("Root scope can not extend another scope") if @current_scope.nil? || @current_scope == ROOT
scope.flatten.each { |s| @scopes[@current_scope][:extends] << s }
end
|
#field(field_name, arg = {}, &block) ⇒ Object
9
10
11
12
|
# File 'lib/model_view.rb', line 9
def field(field_name, arg={}, &block)
scope_name = @current_scope || ROOT
add_field scope_name, field_name, arg, block
end
|
#fields(*fields) ⇒ Object
14
15
16
|
# File 'lib/model_view.rb', line 14
def fields(*fields)
fields.flatten.each { |f| field f }
end
|
#include_scope(*scope) ⇒ Object
32
33
34
35
|
# File 'lib/model_view.rb', line 32
def include_scope(*scope)
raise Exception.new("Root scope can not include another scope") if @current_scope.nil? || @current_scope == ROOT
scope.flatten.each { |s| @scopes[@current_scope][:includes] << s }
end
|
#model(model_class) ⇒ Object
62
63
64
65
66
67
68
69
|
# File 'lib/model_view.rb', line 62
def model(model_class)
model_view_class = self
model_class.class_eval do
define_method(:as_hash) do |opts|
model_view_class.as_hash(self, opts)
end
end
end
|
#scope(scope_name, &block) ⇒ Object
18
19
20
21
22
23
24
25
|
# File 'lib/model_view.rb', line 18
def scope(scope_name, &block)
sym_scope_name = scope_name.to_sym
add_scope(sym_scope_name)
@current_scope = sym_scope_name
instance_eval &block
@current_scope = nil
end
|
#scopes ⇒ Object
47
48
49
|
# File 'lib/model_view.rb', line 47
def scopes
@scopes
end
|
#setter(field_name, arg = {}, &block) ⇒ Object
27
28
29
30
|
# File 'lib/model_view.rb', line 27
def setter(field_name, arg={}, &block)
scope_name = @current_scope || ROOT
add_setter scope_name, field_name, arg, block
end
|
#update(object, data, opts = {}) ⇒ Object
57
58
59
60
|
# File 'lib/model_view.rb', line 57
def update(object, data, opts={})
scope = opts[:scope] || ROOT
ModelView::Updater.update(object, @scopes, data , scope)
end
|