class ActionBlocks::Store

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/action_blocks/store.rb, line 6
def initialize
  super
  @block_store = {};
  @validation_store = [];
end

Public Instance Methods

add_to_validator(builder) click to toggle source
# File lib/action_blocks/store.rb, line 115
def add_to_validator(builder)
  @validation_store << builder
end
after_load() click to toggle source
# File lib/action_blocks/store.rb, line 144
def after_load
  @validation_store.each do |v|
    v.after_load
  end
end
authorization(*p, &block) click to toggle source
# File lib/action_blocks/store.rb, line 33
def authorization(*p, &block)
  rs = ActionBlocks::AuthorizationBuilder.new()
  rs.active_model = p.first
  rs.id = rs.active_model.to_s.underscore
  rs.before_build(nil, *p)
  store(rs)
  add_to_validator(rs)
  rs.evaluate(&block) if block
  rs.after_build(nil, *p)
end
errors() click to toggle source

def errors

results = []
@validation_store.each do |b|
  results << b.errors if b.invalid?
end
results

end

# File lib/action_blocks/store.rb, line 70
def errors
  results = []
  @validation_store.each do |b|
    results << {
      builder: b.class.to_s.sub("ActionBlocks::",""),
      key: b.key,
      fields: b.errors.keys,
      messages: b.errors.map {|k,v| [k,v]}
    } if b.invalid?
  end
  results
end
find(block_key) click to toggle source
# File lib/action_blocks/store.rb, line 119
def find(block_key)
  @block_store[block_key]
end
form(*p, &block) click to toggle source
# File lib/action_blocks/store.rb, line 23
def form(*p, &block)
  rs = ActionBlocks::FormBuilder.new()
  rs.id = p.first
  rs.before_build(nil, *p)
  store(rs)
  add_to_validator(rs)
  rs.evaluate(&block) if block
  rs.after_build(nil, *p)
end
freeze_builders() click to toggle source
# File lib/action_blocks/store.rb, line 137
def freeze_builders
  @block_store.values.each do |v|
    v.freeze
    puts "#Freezing #{v.key}"
  end
end
get(params) click to toggle source
# File lib/action_blocks/store.rb, line 123
def get(params)
  @block_store[params[:block_key]].get(params)
end
has_error(substring) click to toggle source
# File lib/action_blocks/store.rb, line 95
def has_error(substring)
  all_errors = errors.map {|e| e.messages}.map {|h| h.values}.flatten.join("\n")
  all_errors[substring]
end
has_error_for(block_type, field_name) click to toggle source
# File lib/action_blocks/store.rb, line 83
def has_error_for(block_type, field_name)
  type_errors = errors.select { |e|
    e[:builder] == block_type &&
    e[:fields].include?(field_name)
  }
  if type_errors == []
    return false
  else
    return type_errors
  end
end
hashify(user) click to toggle source
# File lib/action_blocks/store.rb, line 127
def hashify(user)
  result = {}
  @block_store.each do |key, block|
    result[block.key] = block.hashify(user)
    result[block.key][:key] = block.key
  end
  result[:errors] = errors
  result
end
invalid?() click to toggle source
# File lib/action_blocks/store.rb, line 58
def invalid?
  !valid?
end
keys() click to toggle source
# File lib/action_blocks/store.rb, line 107
def keys()
  @block_store.keys
end
layout(*p, &block) click to toggle source

ActionBlocks.layout

# File lib/action_blocks/store.rb, line 13
def layout(*p, &block)
  l = ActionBlocks::LayoutBuilder.new()
  l.id = 'main'
  l.before_build(nil, *p)
  store(l)
  add_to_validator(l)
  l.evaluate(&block) if block
  l.after_build(nil, *p)
end
model(*p, &block) click to toggle source
# File lib/action_blocks/store.rb, line 44
def model(*p, &block)
  m = ActionBlocks::ModelBuilder.new()
  m.id = p.first
  m.before_build(nil, *p)
  store(m)
  add_to_validator(m)
  m.evaluate(&block) if block
  m.after_build(nil, *p)
end
store(block) click to toggle source
# File lib/action_blocks/store.rb, line 111
def store(block)
  @block_store[block.key] = block
end
unload!() click to toggle source
# File lib/action_blocks/store.rb, line 100
def unload!
  # If classes were dynamically created.
  # We would remove const here (JRH)
  @block_store = {};
  @validation_store = [];
end
valid?() click to toggle source
# File lib/action_blocks/store.rb, line 54
def valid?
  @validation_store.all? { |builder| builder.valid? }
end