Sha256: 213f04691c0dec149288e5c34221b72deb278358422f4a39cd87a01f05de810f

Contents?: true

Size: 918 Bytes

Versions: 1

Compression:

Stored size: 918 Bytes

Contents

class Formation::Printer
  
  attr_reader :form
  
  def initialize(form)
    @form = form
  end
  
  def print
    html = ''
    html << print_errors(form.errors)
    form.elements.each do |element|
      if element.field?
        html << print_field(element)
      else
        html << print_fieldset(element)
      end
    end
    html
  end
  
  def print_error(error)
    <<-HTML
      <p style="color: red">#{error}</p>
    HTML
  end
  
  def print_errors(errors)
    errors.map { |error| print_error error }.join("\n")
  end
  
  def print_field(field)
    <<-HTML
      <li>
        <label>#{field.label}</label>
        #{field.type.to_html}
      </li>
    HTML
  end
  
  def print_fieldset(fieldset)
    <<-HTML
      <fieldset>
        <legend>#{fieldset.legend}</legend>
        <ol>
          #{fieldset.fields.map { |f| print_field f }.join("\n")}
        </ol>
      </fieldset>
    HTML
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
formation-0.0.1 lib/formation/printer.rb