lib/rubocop/cop/rails/migration_class_name.rb in rubocop-rails-2.14.1 vs lib/rubocop/cop/rails/migration_class_name.rb in rubocop-rails-2.14.2
- old
+ new
@@ -20,51 +20,43 @@
#
class MigrationClassName < Base
extend AutoCorrector
include MigrationsHelper
- MSG = 'Replace with `%<corrected_class_name>s` that matches the file name.'
+ MSG = 'Replace with `%<camelized_basename>s` that matches the file name.'
def on_class(node)
- return if in_migration?(node)
+ return unless migration_class?(node)
- snake_class_name = to_snakecase(node.identifier.source)
+ basename = basename_without_timestamp_and_suffix(processed_source.file_path)
- basename = basename_without_timestamp_and_suffix
- return if snake_class_name == basename
+ class_identifier = node.identifier
+ camelized_basename = camelize(basename)
+ return if class_identifier.source.casecmp(camelized_basename).zero?
- corrected_class_name = to_camelcase(basename)
- message = format(MSG, corrected_class_name: corrected_class_name)
+ message = format(MSG, camelized_basename: camelized_basename)
- add_offense(node.identifier, message: message) do |corrector|
- corrector.replace(node.identifier, corrected_class_name)
+ add_offense(class_identifier, message: message) do |corrector|
+ corrector.replace(class_identifier, camelized_basename)
end
end
private
- def basename_without_timestamp_and_suffix
- filepath = processed_source.file_path
+ def basename_without_timestamp_and_suffix(filepath)
basename = File.basename(filepath, '.rb')
basename = remove_gem_suffix(basename)
+
basename.sub(/\A\d+_/, '')
end
# e.g.: from `add_blobs.active_storage` to `add_blobs`.
def remove_gem_suffix(file_name)
file_name.sub(/\..+\z/, '')
end
- def to_camelcase(word)
+ def camelize(word)
word.split('_').map(&:capitalize).join
- end
-
- def to_snakecase(word)
- word
- .gsub(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
- .gsub(/([a-z\d])([A-Z])/, '\1_\2')
- .tr('-', '_')
- .downcase
end
end
end
end
end