Class: BrainDamage::Resource
- Inherits:
-
Object
- Object
- BrainDamage::Resource
show all
- Defined in:
- lib/generators/brain_damage/lib/resource.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(initializers, options = {}) ⇒ Resource
Returns a new instance of Resource.
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
146
147
148
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 146
def method_missing(method, *args, &block)
@generator.send method, *args, &block
end
|
Instance Attribute Details
#columns ⇒ Object
Returns the value of attribute columns.
9
10
11
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 9
def columns
@columns
end
|
#controller ⇒ Object
Returns the value of attribute controller.
10
11
12
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 10
def controller
@controller
end
|
#fields ⇒ Object
Returns the value of attribute fields.
11
12
13
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 11
def fields
@fields
end
|
#migration ⇒ Object
Returns the value of attribute migration.
14
15
16
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 14
def migration
@migration
end
|
#model ⇒ Object
Returns the value of attribute model.
12
13
14
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 12
def model
@model
end
|
#name ⇒ Object
Returns the value of attribute name.
6
7
8
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 6
def name
@name
end
|
#parametizer ⇒ Object
Returns the value of attribute parametizer.
15
16
17
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 15
def parametizer
@parametizer
end
|
#root ⇒ Object
Returns the value of attribute root.
8
9
10
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 8
def root
@root
end
|
#views ⇒ Object
Returns the value of attribute views.
13
14
15
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 13
def views
@views
end
|
Instance Method Details
#column_relation_type(column_name) ⇒ Object
41
42
43
44
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 41
def column_relation_type(column_name)
return @columns[column_name][:type] if @columns[column_name] and Relation.is_valid_relation? @columns[column_name][:type]
nil
end
|
#describe(name) {|_self| ... } ⇒ Object
56
57
58
59
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 56
def describe(name)
self.name = name
yield self if block_given?
end
|
#describe_controller {|@controller| ... } ⇒ Object
76
77
78
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 76
def describe_controller
yield @controller if block_given?
end
|
#describe_field(name) {|| ... } ⇒ Object
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 61
def describe_field(name)
if @closed_for_field_description
puts "ERROR: Trying to describe field #{name} after field description has been closed.
Are you trying to describe a field after describing the views?"
return
end
@fields[name] = Field.new(name: name, resource: self) unless @fields[name]
yield @fields[name] if block_given?
unless @fields[name].relation
@fields[name].relation = {}
end
end
|
#describe_model {|@model| ... } ⇒ Object
80
81
82
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 80
def describe_model
yield @model if block_given?
end
|
#describe_views {|@views| ... } ⇒ Object
84
85
86
87
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 84
def describe_views
ensure_every_column_is_described
yield @views if block_given?
end
|
117
118
119
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 117
def displayable_and_inputable_fields(identifier = :default)
inputable_fields(identifier) & displayable_fields(identifier)
end
|
#displayable_fields(identifier = :default) ⇒ Object
103
104
105
106
107
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 103
def displayable_fields(identifier = :default)
sort_fields(fields.values.select{ |field|
field.displayable? identifier
})
end
|
#ensure_every_column_has_its_generated_attribute_object ⇒ Object
140
141
142
143
144
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 140
def ensure_every_column_has_its_generated_attribute_object
attributes.each do |attribute|
@fields[attribute.name.to_sym].generated_attribute = attribute
end
end
|
#ensure_every_column_is_described ⇒ Object
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 121
def ensure_every_column_is_described
(@columns.keys - @fields.keys).each do |column_name|
describe_field column_name do |field|
field.display = :default
field.input = :default
end
end
uninputable_fields.each do |field|
field.input = :default unless field.input(:default) == false
end
undisplayable_fields.each do |field|
field.display = :default unless field.display(:default) == false
end
@closed_for_field_description = true
end
|
89
90
91
92
93
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 89
def inputable_fields(identifier = :default)
sort_fields(fields.values.select{ |field|
field.inputable? identifier
})
end
|
#setup(generator) ⇒ Object
36
37
38
39
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 36
def setup(generator)
@generator = generator
ensure_every_column_has_its_generated_attribute_object
end
|
#sort_fields(fields) ⇒ Object
109
110
111
112
113
114
115
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 109
def sort_fields(fields)
names = @columns.keys
fields.sort { |field_a, field_b|
(names.index(field_a.name) || 999) <=>
(names.index(field_b.name) || 999)
}
end
|
#undisplayable_fields ⇒ Object
99
100
101
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 99
def undisplayable_fields
fields.values.reject(&:displayable?)
end
|
95
96
97
|
# File 'lib/generators/brain_damage/lib/resource.rb', line 95
def uninputable_fields
fields.values.reject(&:inputable?)
end
|