class VariationsGenerator

Generates different versions of the model name and pairs them with the ones the should switch into, for example [ ['activity_log_iteration', 'deal_stage'], [activityLogIteration, dealStage], … ]

Public Class Methods

new(old_name, new_name) click to toggle source
# File lib/model_renamer/variations_generator.rb, line 7
def initialize old_name, new_name
  @old_plural = split_into_words old_name.pluralize
  @new_plural = split_into_words new_name.pluralize
  @old_singular = split_into_words old_name
  @new_singular = split_into_words new_name
end

Public Instance Methods

pairs_to_convert() click to toggle source
# File lib/model_renamer/variations_generator.rb, line 14
def pairs_to_convert
  # Important: plurals have to be applied first in case we are working with irregular pluralizations
  (variations(@old_plural) + variations(@old_singular)).zip (variations(@new_plural) + variations(@new_singular))
end
underscore_variations() click to toggle source
# File lib/model_renamer/variations_generator.rb, line 19
def underscore_variations
  {
    old_name_plural: @old_plural.join('_'),
    new_name_plural: @new_plural.join('_'),
    old_name_singular: @old_singular.join('_'),
    new_name_singular: @new_singular.join('_')
  }
end

Private Instance Methods

split_into_words(str) click to toggle source
# File lib/model_renamer/variations_generator.rb, line 30
def split_into_words str
  str.split(/(?=[A-Z])/).map(&:downcase)
end
variations(words) click to toggle source
# File lib/model_renamer/variations_generator.rb, line 34
def variations words

  variations_array = []

  # underscore separated (Ruby methods)
  variations_array << words.join('_')

  # dash separated (CSS)
  variations_array << words.join('-')

  # capitalized (ActiveRecord model)
  variations_array << words.map(&:capitalize).join

  # camelCase (JavaScript)
  variations_array << words[1, words.count].map(&:capitalize).unshift(words[0]).join

  # space separated (comments)
  variations_array << words.join(' ')

  # space separated, every word capitalized (comments)
  variations_array << words.map(&:capitalize).join(' ')

  # space separated, first word capitalized (comments)
  variations_array << words[1, words.count].unshift(words[0].capitalize).join(' ')

  # all uppercase, underscore separated (constant)
  variations_array << words.map(&:upcase).join('_')

  variations_array

end