module BrainDamage::ResourceHelpers

Attributes

default_indentation[RW]

Public Instance Methods

display_field_names(field_names, options = {}) click to toggle source
# File lib/generators/brain_damage/resource/helpers.rb, line 5
def display_field_names(field_names, options = {})
  options = {
    indentation: default_indentation,
    join: "\n"
  }.merge options

  field_names.map { |field_name|
    display_for(field_name, options[:indentation])
  }.join options[:join]
end
display_for(field_name, options = {}) click to toggle source
# File lib/generators/brain_damage/resource/helpers.rb, line 16
def display_for(field_name, options = {})
  indentation = options[:indentation] || default_indentation
  options = options.except :indentation

  options[:identifier] ||= :default

  display = @resource.fields[field_name].display(options[:identifier])

  if display
    html = display.render
  else
    html = ''
    puts "ERROR: Unable to find a suitable display for #{field_name} (@ #{options[:identifier]})"
  end

  indent_or_die html, indentation
end
display_with_label_for(field_name, options = {}) click to toggle source
# File lib/generators/brain_damage/resource/helpers.rb, line 47
def display_with_label_for(field_name, options = {})
  indentation = options[:indentation] || default_indentation
  options[:indentation] = 0

  inner_html = [label_for(field_name, options), display_for(field_name, options)].join "\n"
  indent_or_die inner_html, indentation
end
encapsulate_block_in_view_context(&block) click to toggle source
# File lib/generators/brain_damage/resource/helpers.rb, line 107
def encapsulate_block_in_view_context(&block)
  Proc.new do |*args|
    self.send(:capture, *args, &block)
  end
end
indent_or_die(html, indentation = default_indentation) click to toggle source
# File lib/generators/brain_damage/resource/helpers.rb, line 102
def indent_or_die(html, indentation = default_indentation)
  return html.indent indentation if html
  false
end
input_for(field_name, options = {}) click to toggle source
# File lib/generators/brain_damage/resource/helpers.rb, line 55
def input_for(field_name, options = {})
  indentation = options[:indentation] || default_indentation
  options = options.except :indentation

  options[:identifier] ||= :default

  # if block_given?
  #   args[:encapsulated_block] = encapsulate_block_in_view_context(&block)
  # end

  unless @resource.fields[field_name]
    puts "ERROR: can't find field #{field_name}"
    return ''
  end

  input = @resource.fields[field_name].input(options[:identifier])

  if input
    html = input.render
  else
    html = ''
    puts "ERROR: Unable to find a suitable input for #{field_name} (@ #{options[:identifier]})"
  end

  indent_or_die html, indentation
end
input_with_label_for(field_name, options = {}) click to toggle source
# File lib/generators/brain_damage/resource/helpers.rb, line 82
def input_with_label_for(field_name, options = {})
  indentation = options[:indentation] || default_indentation
  options[:indentation] = 0

  inner_html = [label_for(field_name, options), input_for(field_name, options)].join "\n"
  indent_or_die inner_html, indentation
end
label_for(field_name, options = {}) click to toggle source
# File lib/generators/brain_damage/resource/helpers.rb, line 34
def label_for(field_name, options = {})
  indentation = options[:indentation] || default_indentation
  options = options.except :indentation

  options[:identifier] ||= :default

  begin
    indent_or_die @resource.fields[field_name].label(options[:identifier]).render, indentation
  rescue
    puts "ERROR on #{field_name}"
  end
end
label_text_for(field_name, options = {}) click to toggle source
# File lib/generators/brain_damage/resource/helpers.rb, line 90
def label_text_for(field_name, options = {})
  options[:context] ||= :default

  label = @resource.fields[field_name].label(options[:context])
  if label
    label.rendered_text
  else
    puts "ERROR: Unable to find a suitable label for #{field_name} (@ #{options[:identifier]})"
    ''
  end
end
template_hook(arg) click to toggle source
# File lib/generators/brain_damage/resource/helpers.rb, line 113
def template_hook(arg)
  ''
end