class BrainDamage::Resource
Attributes
columns[R]
controller[R]
fields[R]
migration[R]
model[R]
name[RW]
parametizer[R]
root[R]
views[R]
Public Class Methods
new(initializers, options = {})
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 16 def initialize(initializers, options = {}) @columns = {} @fields = {} @root = options[:root] @parametizer = BrainDamage::Parametizer.new self @migration = BrainDamage::Migration.new self @controller = BrainDamage::ControllerGenerator.new self @model = BrainDamage::ModelGenerator.new self @views = BrainDamage::ViewsGenerator.new self @closed_for_field_description = false initializers.each do |initializer| instance_eval initializer.read, initializer.path if initializer.is_a? File end ensure_every_column_is_described end
Public Instance Methods
column_relation_type(column_name)
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 40 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
columns=(column_hash)
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 45 def columns=(column_hash) column_hash.each do |name, options| if options.is_a? Symbol @columns[name] = { type: options } else @columns[name] = options end end end
describe(name) { |self| ... }
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 55 def describe(name) self.name = name yield self if block_given? end
describe_controller() { |controller| ... }
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 75 def describe_controller yield @controller if block_given? end
describe_field(name) { |fields| ... }
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 60 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| ... }
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 79 def describe_model yield @model if block_given? end
describe_views() { |views| ... }
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 83 def describe_views ensure_every_column_is_described yield @views if block_given? end
displayable_and_inputable_fields(identifier = :default)
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 116 def displayable_and_inputable_fields(identifier = :default) inputable_fields(identifier) & displayable_fields(identifier) end
displayable_fields(identifier = :default)
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 102 def displayable_fields(identifier = :default) sort_fields(fields.values.select{ |field| field.displayable? identifier }) end
ensure_every_column_has_its_generated_attribute_object()
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 139 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()
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 120 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
inputable_fields(identifier = :default)
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 88 def inputable_fields(identifier = :default) sort_fields(fields.values.select{ |field| field.inputable? identifier }) end
method_missing(method, *args, &block)
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 145 def method_missing(method, *args, &block) @generator.send method, *args, &block end
setup(generator)
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 35 def setup(generator) @generator = generator ensure_every_column_has_its_generated_attribute_object end
sort_fields(fields)
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 108 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()
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 98 def undisplayable_fields fields.values.reject(&:displayable?) end
uninputable_fields()
click to toggle source
# File lib/generators/brain_damage/lib/resource.rb, line 94 def uninputable_fields fields.values.reject(&:inputable?) end