class Mi::Generators::MiGenerator

Public Instance Methods

doing() click to toggle source
# File lib/generators/mi/mi_generator.rb, line 9
def doing
  migration_template('migration.rb.erb', "db/migrate/#{destination}.rb")
end

Private Instance Methods

destination() click to toggle source
# File lib/generators/mi/mi_generator.rb, line 47
def destination
  table, columns = *arg_groups.first
  c = {
    '+' => 'to',
    '-' => 'from',
    '%' => 'of',
  }[parse_column(columns.last)[:method]]
  [
    columns.map{|c| to_dest(c)}.inject{|sum, x| sum.concat(['and', x].flatten)},
    c,
    table.tableize,
  ].flatten.join('_')
end
to_dest(col) click to toggle source
# File lib/generators/mi/mi_generator.rb, line 33
def to_dest(col)
  parsed = parse_column(col)
  verb =
    case parsed[:method]
    when '+'
      'add'
    when '-'
      'remove'
    when '%'
      'change'
    end
  [verb, parsed[:name]]
end
to_method(table, col) click to toggle source

@param [String] col +COL_NAME:TYPE:{OPTIONS}

# File lib/generators/mi/mi_generator.rb, line 20
def to_method(table, col)
  info = parse_column(col)
  res = "#{Methods[info[:method]]} :#{table}, :#{info[:name]}"

  return res unless info[:type]
  res << ", :#{info[:type]}"

  return res unless info[:options]
  res << ", #{info[:options][1..-2].gsub(':', ': ').gsub(',', ', ')}"

  res
end