Sha256: c0468ab7079450b026f518711bec71d143348a725241b7a8631bb238c33e9654

Contents?: true

Size: 688 Bytes

Versions: 10

Compression:

Stored size: 688 Bytes

Contents

# frozen_string_literal: true

require 'chutney/linter'

module Chutney
  # service class to lint for invalid file names
  class InvalidFileName < Linter
    def lint
      feature do |f|
        base = File.basename(filename, '.*')
        if base != base.downcase || base =~ /[ -]/
          add_issue(I18n.t('linters.invalid_file_name', recommended_name: recommend(filename)), f)
        end
      end
    end

    def recommend(filename)
      File.basename(filename, '.*').gsub(/::/, '/')
          .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
          .gsub(/([a-z\d])([A-Z])/, '\1_\2')
          .tr('-', '_')
          .tr(' ', '_')
          .downcase << '.feature'
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
chutney-3.7.0 lib/chutney/linter/invalid_file_name.rb
chutney-3.6.0 lib/chutney/linter/invalid_file_name.rb
chutney-3.5.0 lib/chutney/linter/invalid_file_name.rb
chutney-3.3.0 lib/chutney/linter/invalid_file_name.rb
chutney-3.2.1 lib/chutney/linter/invalid_file_name.rb
chutney-3.2.0 lib/chutney/linter/invalid_file_name.rb
chutney-3.1.1 lib/chutney/linter/invalid_file_name.rb
chutney-3.1.0 lib/chutney/linter/invalid_file_name.rb
chutney-3.0.1 lib/chutney/linter/invalid_file_name.rb
chutney-3.0.0 lib/chutney/linter/invalid_file_name.rb