class Formtastic::FormGenerator

Constants

IGNORED_COLUMNS

Public Instance Methods

create_or_show() click to toggle source
# File lib/generators/formtastic/form/form_generator.rb, line 21
def create_or_show
  @attributes = self.columns if @attributes.empty?

  if options[:partial]
    empty_directory "app/views/#{controller_path}"
    template "_form.html.#{template_type}", "app/views/#{controller_path}/_form.html.#{template_type}"
  else
    template = File.read("#{self.class.source_root}/_form.html.#{template_type}")
    erb = ERB.new(template, nil, '-')
    generated_code = erb.result(binding).strip rescue nil

    puts "# ---------------------------------------------------------"
    puts "#  GENERATED FORMTASTIC CODE"
    puts "# ---------------------------------------------------------"
    puts
    puts generated_code || "Nothing could be generated - model exists?"
    puts
    puts "# ---------------------------------------------------------"
    puts "Copied to clipboard - just paste it!" if save_to_clipboard(generated_code)
  end
end

Protected Instance Methods

columns() click to toggle source
# File lib/generators/formtastic/form/form_generator.rb, line 59
def columns
  @columns ||= self.name.camelize.constantize.content_columns.reject { |column| IGNORED_COLUMNS.include?(column.name.to_sym) }
end
controller_path() click to toggle source
# File lib/generators/formtastic/form/form_generator.rb, line 51
def controller_path
  @controller_path ||= if options[:controller]
    options[:controller].underscore
  else
    name.underscore.pluralize
  end
end
save_to_clipboard(data) click to toggle source
# File lib/generators/formtastic/form/form_generator.rb, line 63
def save_to_clipboard(data)
  return unless data

  begin
    case RUBY_PLATFORM
    when /win32/
      require 'win32/clipboard'
      ::Win32::Clipboard.data = data
    when /darwin/ # mac
      %xecho "#{data}" | pbcopy`
    else # linux/unix
      %xecho "#{data}" | xsel --clipboard` || %xecho "#{data}" | xclip`
    end
  rescue LoadError
    false
  else
    true
  end
end
template_type() click to toggle source
# File lib/generators/formtastic/form/form_generator.rb, line 47
def template_type
  @template_type ||= options[:haml] ? :haml : :erb
end