slimcop 0.2.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +18 -0
- data/CHANGELOG.md +44 -0
- data/Gemfile +3 -5
- data/Gemfile.lock +8 -5
- data/README.md +11 -0
- data/default.yml +9 -0
- data/lib/slimcop/cli.rb +43 -29
- data/lib/slimcop/offense.rb +5 -6
- data/lib/slimcop/path_finder.rb +20 -0
- data/lib/slimcop/rubo_cop_config_generator.rb +51 -0
- data/lib/slimcop/ruby_extractor.rb +4 -2
- data/lib/slimcop/ruby_offense_collector.rb +3 -2
- data/lib/slimcop/slim_corrector.rb +1 -1
- data/lib/slimcop/slim_offense_collector.rb +5 -1
- data/lib/slimcop/version.rb +1 -1
- data/lib/slimcop.rb +2 -1
- data/slimcop.gemspec +1 -1
- metadata +6 -5
- data/lib/slimcop/configuration.rb +0 -16
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 8f5970bfa12ccffdb04b26f3b827b8102e035cb95ddd7f6d2ad70f1ff53d240f
         | 
| 4 | 
            +
              data.tar.gz: d293f0d5c72e0e96c21f515ed16c6f0dbe9bf0aae745e42cec20186e654922a0
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: b2423cffaf849c867d335df2d3fec06645f5578aecc9597a9d218d5cc99989a86be664609b364c6092695ad391825ce9ff244387d3dd6d77710d5c820d02d5f1
         | 
| 7 | 
            +
              data.tar.gz: 294f4adb1bc4e8198a2d0b6fb79b810561a57a90fb01ebcfdfe0d3d057278e67ca3c8f77c5063b1bbadb55c36e84b7363db4b39d3004de2d7884f1afcb5f6cca
         | 
    
        data/.rubocop.yml
    CHANGED
    
    | @@ -1,3 +1,6 @@ | |
| 1 | 
            +
            require:
         | 
| 2 | 
            +
              - rubocop-rspec
         | 
| 3 | 
            +
             | 
| 1 4 | 
             
            AllCops:
         | 
| 2 5 | 
             
              NewCops: enable
         | 
| 3 6 | 
             
              SuggestExtensions: false
         | 
| @@ -9,5 +12,20 @@ Layout/LineLength: | |
| 9 12 | 
             
            Metrics:
         | 
| 10 13 | 
             
              Enabled: false
         | 
| 11 14 |  | 
| 15 | 
            +
            RSpec/AnyInstance:
         | 
| 16 | 
            +
              Enabled: false
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            RSpec/ExampleLength:
         | 
| 19 | 
            +
              Enabled: false
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            RSpec/ImplicitSubject:
         | 
| 22 | 
            +
              Enabled: false
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            RSpec/MultipleExpectations:
         | 
| 25 | 
            +
              Enabled: false
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            RSpec/NamedSubject:
         | 
| 28 | 
            +
              Enabled: false
         | 
| 29 | 
            +
             | 
| 12 30 | 
             
            Style/Documentation:
         | 
| 13 31 | 
             
              Enabled: false
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -2,6 +2,50 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            ## Unreleased
         | 
| 4 4 |  | 
| 5 | 
            +
            ## 0.6.0 - 2021-12-28
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ### Added
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            - Add -c, --config CLI option to customize RuboCop config.
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            ### Changed
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            - Not investigate all files then auto-correct them, but do it for each file.
         | 
| 14 | 
            +
            - Sort processed files in alphabetical order.
         | 
| 15 | 
            +
            - Disable Lint/UselessAssignment by default.
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            ## 0.5.0 - 2021-12-27
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            ### Changed
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            - Disable Lint/EmptyFile by default.
         | 
| 22 | 
            +
            - Disable Style/RescueModifier by default.
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            ### Fixed
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            - Fix NoMethodError on some RuboCop offenses.
         | 
| 27 | 
            +
            - Fix bug when uncorrectable RuboCop offense exists.
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            ## 0.4.0 - 2021-12-26
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            ### Added
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            - Support glob pattern on arguments of executable.
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            ### Fixed
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            - Fix bug on parsing invalid syntax Ruby code.
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            ## 0.3.0 - 2021-12-25
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            ### Added
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            - Show Slim file path on Slim syntax error.
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            ### Changed
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            - Require slimi >= 0.4 for :file option handling.
         | 
| 48 | 
            +
             | 
| 5 49 | 
             
            ## 0.2.0 - 2021-12-21
         | 
| 6 50 |  | 
| 7 51 | 
             
            ### Added
         | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,10 +1,10 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                slimcop (0. | 
| 4 | 
            +
                slimcop (0.6.0)
         | 
| 5 5 | 
             
                  rainbow
         | 
| 6 6 | 
             
                  rubocop (>= 0.87)
         | 
| 7 | 
            -
                  slimi (>= 0. | 
| 7 | 
            +
                  slimi (>= 0.4)
         | 
| 8 8 |  | 
| 9 9 | 
             
            GEM
         | 
| 10 10 | 
             
              remote: https://rubygems.org/
         | 
| @@ -42,8 +42,10 @@ GEM | |
| 42 42 | 
             
                  unicode-display_width (>= 1.4.0, < 3.0)
         | 
| 43 43 | 
             
                rubocop-ast (1.15.0)
         | 
| 44 44 | 
             
                  parser (>= 3.0.1.1)
         | 
| 45 | 
            +
                rubocop-rspec (2.6.0)
         | 
| 46 | 
            +
                  rubocop (~> 1.19)
         | 
| 45 47 | 
             
                ruby-progressbar (1.11.0)
         | 
| 46 | 
            -
                slimi (0. | 
| 48 | 
            +
                slimi (0.4.2)
         | 
| 47 49 | 
             
                  temple
         | 
| 48 50 | 
             
                temple (0.8.2)
         | 
| 49 51 | 
             
                unicode-display_width (2.1.0)
         | 
| @@ -53,8 +55,9 @@ PLATFORMS | |
| 53 55 |  | 
| 54 56 | 
             
            DEPENDENCIES
         | 
| 55 57 | 
             
              rake (~> 13.0)
         | 
| 56 | 
            -
              rspec | 
| 57 | 
            -
              rubocop | 
| 58 | 
            +
              rspec
         | 
| 59 | 
            +
              rubocop
         | 
| 60 | 
            +
              rubocop-rspec
         | 
| 58 61 | 
             
              slimcop!
         | 
| 59 62 |  | 
| 60 63 | 
             
            BUNDLED WITH
         | 
    
        data/README.md
    CHANGED
    
    | @@ -35,3 +35,14 @@ Usage: slimcop [options] [file1, file2, ...] | |
| 35 35 | 
             
                -a, --auto-correct               Auto-correct offenses.
         | 
| 36 36 | 
             
                    --[no-]color                 Force color output on or off.
         | 
| 37 37 | 
             
            ```
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            ### Example
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            ```console
         | 
| 42 | 
            +
            $ slimcop spec/**/*.slim
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            Offenses:
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            spec/fixtures/dummy.slim:1:3 C: [Correctable] Style/StringLiterals: Prefer single-quoted strings when you don't need string interpolation or special symbols.
         | 
| 47 | 
            +
            spec/fixtures/dummy.slim:3:5 C: [Correctable] Style/StringLiterals: Prefer single-quoted strings when you don't need string interpolation or special symbols.
         | 
| 48 | 
            +
            ```
         | 
    
        data/default.yml
    CHANGED
    
    | @@ -10,6 +10,9 @@ Layout/BlockAlignment: | |
| 10 10 | 
             
            Layout/ClosingParenthesisIndentation:
         | 
| 11 11 | 
             
              Enabled: false
         | 
| 12 12 |  | 
| 13 | 
            +
            Lint/EmptyFile:
         | 
| 14 | 
            +
              Enabled: false
         | 
| 15 | 
            +
             | 
| 13 16 | 
             
            Layout/EmptyLineAfterGuardClause:
         | 
| 14 17 | 
             
              Enabled: false
         | 
| 15 18 |  | 
| @@ -76,6 +79,9 @@ Layout/TrailingEmptyLines: | |
| 76 79 | 
             
            Layout/TrailingWhitespace:
         | 
| 77 80 | 
             
              Enabled: false
         | 
| 78 81 |  | 
| 82 | 
            +
            Lint/UselessAssignment:
         | 
| 83 | 
            +
              Enabled: false
         | 
| 84 | 
            +
             | 
| 79 85 | 
             
            Lint/Void:
         | 
| 80 86 | 
             
              Enabled: false
         | 
| 81 87 |  | 
| @@ -100,6 +106,9 @@ Style/IfUnlessModifier: | |
| 100 106 | 
             
            Style/Next:
         | 
| 101 107 | 
             
              Enabled: false
         | 
| 102 108 |  | 
| 109 | 
            +
            Style/RescueModifier:
         | 
| 110 | 
            +
              Enabled: false
         | 
| 111 | 
            +
             | 
| 103 112 | 
             
            Style/WhileUntilDo:
         | 
| 104 113 | 
             
              Enabled: false
         | 
| 105 114 |  | 
    
        data/lib/slimcop/cli.rb
    CHANGED
    
    | @@ -6,51 +6,62 @@ module Slimcop | |
| 6 6 | 
             
              class Cli
         | 
| 7 7 | 
             
                def initialize(argv)
         | 
| 8 8 | 
             
                  @argv = argv.dup
         | 
| 9 | 
            -
                  @configuration = Configuration.new
         | 
| 10 9 | 
             
                  @formatter = Formatter.new
         | 
| 11 10 | 
             
                end
         | 
| 12 11 |  | 
| 13 12 | 
             
                def call
         | 
| 14 13 | 
             
                  options = parse!
         | 
| 15 | 
            -
                  slim_file_paths = @argv
         | 
| 16 | 
            -
             | 
| 17 14 | 
             
                  Rainbow.enabled = options[:color] if options.key?(:color)
         | 
| 15 | 
            +
                  rubocop_config = RuboCopConfigGenerator.new(additional_config_file_path: options[:additional_config_file_path]).call
         | 
| 16 | 
            +
                  file_paths = PathFinder.new(patterns: @argv).call
         | 
| 18 17 |  | 
| 19 | 
            -
                   | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 18 | 
            +
                  offenses = file_paths.flat_map do |file_path|
         | 
| 19 | 
            +
                    source = ::File.read(file_path)
         | 
| 20 | 
            +
                    offenses_ = investigate(
         | 
| 21 | 
            +
                      auto_correct: options[:auto_correct],
         | 
| 22 | 
            +
                      file_path: file_path,
         | 
| 23 | 
            +
                      rubocop_config: rubocop_config,
         | 
| 24 | 
            +
                      source: source
         | 
| 25 | 
            +
                    )
         | 
| 26 | 
            +
                    if options[:auto_correct]
         | 
| 27 | 
            +
                      correct(
         | 
| 28 | 
            +
                        file_path: file_path,
         | 
| 29 | 
            +
                        offenses: offenses_,
         | 
| 30 | 
            +
                        source: source
         | 
| 31 | 
            +
                      )
         | 
| 32 | 
            +
                    end
         | 
| 33 | 
            +
                    offenses_
         | 
| 34 | 
            +
                  end
         | 
| 22 35 | 
             
                  report(offenses)
         | 
| 23 36 | 
             
                  exit(offenses.empty? ? 0 : 1)
         | 
| 24 37 | 
             
                end
         | 
| 25 38 |  | 
| 26 39 | 
             
                private
         | 
| 27 40 |  | 
| 28 | 
            -
                # @param [ | 
| 29 | 
            -
                 | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
                     | 
| 36 | 
            -
             | 
| 37 | 
            -
                   | 
| 41 | 
            +
                # @param [String] file_path
         | 
| 42 | 
            +
                # @param [Array<Slimcop::Offense>] offenses
         | 
| 43 | 
            +
                # @param [String] source
         | 
| 44 | 
            +
                def correct(file_path:, offenses:, source:)
         | 
| 45 | 
            +
                  rewritten_source = SlimCorrector.new(
         | 
| 46 | 
            +
                    file_path: file_path,
         | 
| 47 | 
            +
                    offenses: offenses,
         | 
| 48 | 
            +
                    source: source
         | 
| 49 | 
            +
                  ).call
         | 
| 50 | 
            +
                  ::File.write(file_path, rewritten_source)
         | 
| 38 51 | 
             
                end
         | 
| 39 52 |  | 
| 40 53 | 
             
                # @param [Boolean] auto_correct
         | 
| 41 | 
            -
                # @param [ | 
| 42 | 
            -
                # @ | 
| 43 | 
            -
                 | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
                    [file_path, source, offenses]
         | 
| 53 | 
            -
                  end
         | 
| 54 | 
            +
                # @param [String] file_path
         | 
| 55 | 
            +
                # @param [String] rubocop_config
         | 
| 56 | 
            +
                # @param [String] source
         | 
| 57 | 
            +
                # @return [Array<Slimcop::Offense>]
         | 
| 58 | 
            +
                def investigate(auto_correct:, file_path:, rubocop_config:, source:)
         | 
| 59 | 
            +
                  SlimOffenseCollector.new(
         | 
| 60 | 
            +
                    auto_correct: auto_correct,
         | 
| 61 | 
            +
                    file_path: file_path,
         | 
| 62 | 
            +
                    rubocop_config: rubocop_config,
         | 
| 63 | 
            +
                    source: source
         | 
| 64 | 
            +
                  ).call
         | 
| 54 65 | 
             
                end
         | 
| 55 66 |  | 
| 56 67 | 
             
                # @param [Array<Slimcop::Offense>] offenses
         | 
| @@ -74,6 +85,9 @@ module Slimcop | |
| 74 85 | 
             
                  parser.on('-a', '--auto-correct', 'Auto-correct offenses.') do
         | 
| 75 86 | 
             
                    options[:auto_correct] = true
         | 
| 76 87 | 
             
                  end
         | 
| 88 | 
            +
                  parser.on('-c', '--config=', 'Specify configuration file.') do |file_path|
         | 
| 89 | 
            +
                    options[:additional_config_file_path] = file_path
         | 
| 90 | 
            +
                  end
         | 
| 77 91 | 
             
                  parser.on('--[no-]color', 'Force color output on or off.') do |value|
         | 
| 78 92 | 
             
                    options[:color] = value
         | 
| 79 93 | 
             
                  end
         | 
    
        data/lib/slimcop/offense.rb
    CHANGED
    
    | @@ -4,6 +4,9 @@ require 'parser' | |
| 4 4 |  | 
| 5 5 | 
             
            module Slimcop
         | 
| 6 6 | 
             
              class Offense
         | 
| 7 | 
            +
                # @return [String]
         | 
| 8 | 
            +
                attr_reader :file_path
         | 
| 9 | 
            +
             | 
| 7 10 | 
             
                # @return [Integer]
         | 
| 8 11 | 
             
                attr_reader :offset
         | 
| 9 12 |  | 
| @@ -13,7 +16,8 @@ module Slimcop | |
| 13 16 | 
             
                # @param [Integer] offset
         | 
| 14 17 | 
             
                # @param [RuboCop::Cop::Offense] rubocop_offense
         | 
| 15 18 | 
             
                # @param [String] source Slim code.
         | 
| 16 | 
            -
                def initialize(offset:, rubocop_offense:, source:)
         | 
| 19 | 
            +
                def initialize(file_path:, offset:, rubocop_offense:, source:)
         | 
| 20 | 
            +
                  @file_path = file_path
         | 
| 17 21 | 
             
                  @offset = offset
         | 
| 18 22 | 
             
                  @rubocop_offense = rubocop_offense
         | 
| 19 23 | 
             
                  @source = source
         | 
| @@ -24,11 +28,6 @@ module Slimcop | |
| 24 28 | 
             
                  @rubocop_offense.corrector
         | 
| 25 29 | 
             
                end
         | 
| 26 30 |  | 
| 27 | 
            -
                # @return [String]
         | 
| 28 | 
            -
                def file_path
         | 
| 29 | 
            -
                  @rubocop_offense.location.source_buffer.name
         | 
| 30 | 
            -
                end
         | 
| 31 | 
            -
             | 
| 32 31 | 
             
                # @return [Integer]
         | 
| 33 32 | 
             
                def line
         | 
| 34 33 | 
             
                  range.line
         | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'pathname'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Slimcop
         | 
| 6 | 
            +
              # Collect file paths from given path patterns.
         | 
| 7 | 
            +
              class PathFinder
         | 
| 8 | 
            +
                # @param [Array<String>] patterns Patterns normally given as CLI arguments (e.g. `["app/views/**/*.html.slim"]`).
         | 
| 9 | 
            +
                def initialize(patterns:)
         | 
| 10 | 
            +
                  @patterns = patterns
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                # @return [Array<String>]
         | 
| 14 | 
            +
                def call
         | 
| 15 | 
            +
                  @patterns.flat_map do |pattern|
         | 
| 16 | 
            +
                    ::Pathname.glob(pattern).select(&:file?).map(&:to_s)
         | 
| 17 | 
            +
                  end.sort
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
            end
         | 
| @@ -0,0 +1,51 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'rubocop'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Slimcop
         | 
| 6 | 
            +
              class RuboCopConfigGenerator
         | 
| 7 | 
            +
                # @param [String] additional_config_file_path
         | 
| 8 | 
            +
                def initialize(additional_config_file_path: nil)
         | 
| 9 | 
            +
                  @additional_config_file_path = additional_config_file_path
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                # @return [RuboCop::Config]
         | 
| 13 | 
            +
                def call
         | 
| 14 | 
            +
                  ::RuboCop::ConfigLoader.merge_with_default(merged_config, loaded_path)
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                private
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                # @return [String]
         | 
| 20 | 
            +
                def loaded_path
         | 
| 21 | 
            +
                  @additional_config_file_path || slimcop_default_config_file_path
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                # @return [RuboCop::Config]
         | 
| 25 | 
            +
                def merged_config
         | 
| 26 | 
            +
                  ::RuboCop::Config.create(merged_config_hash, loaded_path)
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                # @return [Hash]
         | 
| 30 | 
            +
                def merged_config_hash
         | 
| 31 | 
            +
                  result = slimcop_default_config
         | 
| 32 | 
            +
                  result = ::RuboCop::ConfigLoader.merge(result, additional_config) if @additional_config_file_path
         | 
| 33 | 
            +
                  result
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                # @return [RuboCop::Config, nil]
         | 
| 37 | 
            +
                def additional_config
         | 
| 38 | 
            +
                  ::RuboCop::ConfigLoader.load_file(@additional_config_file_path) if @additional_config_file_path
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                # @return [RuboCop::Config]
         | 
| 42 | 
            +
                def slimcop_default_config
         | 
| 43 | 
            +
                  ::RuboCop::ConfigLoader.load_file(slimcop_default_config_file_path)
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                # @return [String]
         | 
| 47 | 
            +
                def slimcop_default_config_file_path
         | 
| 48 | 
            +
                  @slimcop_default_config_file_path ||= ::File.expand_path('../../default.yml', __dir__)
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
              end
         | 
| 51 | 
            +
            end
         | 
| @@ -5,8 +5,10 @@ require 'slimi' | |
| 5 5 | 
             
            module Slimcop
         | 
| 6 6 | 
             
              # Extract codes from Slim source.
         | 
| 7 7 | 
             
              class RubyExtractor
         | 
| 8 | 
            +
                # @param [String, nil] file_path
         | 
| 8 9 | 
             
                # @param [String] source
         | 
| 9 | 
            -
                def initialize(source:)
         | 
| 10 | 
            +
                def initialize(file_path:, source:)
         | 
| 11 | 
            +
                  @file_path = file_path
         | 
| 10 12 | 
             
                  @source = source
         | 
| 11 13 | 
             
                end
         | 
| 12 14 |  | 
| @@ -26,7 +28,7 @@ module Slimcop | |
| 26 28 | 
             
                # @return [Array] Slim AST, represented in S-expression.
         | 
| 27 29 | 
             
                def ast
         | 
| 28 30 | 
             
                  ::Slimi::Filters::Interpolation.new.call(
         | 
| 29 | 
            -
                    ::Slimi::Parser.new.call(@source)
         | 
| 31 | 
            +
                    ::Slimi::Parser.new(file: @file_path).call(@source)
         | 
| 30 32 | 
             
                  )
         | 
| 31 33 | 
             
                end
         | 
| 32 34 |  | 
| @@ -16,9 +16,10 @@ module Slimcop | |
| 16 16 | 
             
                  @source = source
         | 
| 17 17 | 
             
                end
         | 
| 18 18 |  | 
| 19 | 
            -
                # @return [Array<RuboCop::Cop::Offense | 
| 19 | 
            +
                # @return [Array<RuboCop::Cop::Offense>]
         | 
| 20 20 | 
             
                def call
         | 
| 21 | 
            -
                   | 
| 21 | 
            +
                  # Skip if invalid syntax Ruby code is given. (e.g. "- if a?")
         | 
| 22 | 
            +
                  return [] unless rubocop_processed_source.valid_syntax?
         | 
| 22 23 |  | 
| 23 24 | 
             
                  rubocop_team.investigate(rubocop_processed_source).offenses
         | 
| 24 25 | 
             
                end
         | 
| @@ -24,6 +24,7 @@ module Slimcop | |
| 24 24 | 
             
                      source: snippet[:code]
         | 
| 25 25 | 
             
                    ).call.map do |rubocop_offense|
         | 
| 26 26 | 
             
                      Offense.new(
         | 
| 27 | 
            +
                        file_path: @file_path,
         | 
| 27 28 | 
             
                        offset: snippet[:begin_],
         | 
| 28 29 | 
             
                        rubocop_offense: rubocop_offense,
         | 
| 29 30 | 
             
                        source: @source
         | 
| @@ -36,7 +37,10 @@ module Slimcop | |
| 36 37 |  | 
| 37 38 | 
             
                # @return [Array<Hash>]
         | 
| 38 39 | 
             
                def snippets
         | 
| 39 | 
            -
                  RubyExtractor.new( | 
| 40 | 
            +
                  RubyExtractor.new(
         | 
| 41 | 
            +
                    file_path: @file_path,
         | 
| 42 | 
            +
                    source: @source
         | 
| 43 | 
            +
                  ).call
         | 
| 40 44 | 
             
                end
         | 
| 41 45 | 
             
              end
         | 
| 42 46 | 
             
            end
         | 
    
        data/lib/slimcop/version.rb
    CHANGED
    
    
    
        data/lib/slimcop.rb
    CHANGED
    
    | @@ -4,9 +4,10 @@ require_relative 'slimcop/version' | |
| 4 4 |  | 
| 5 5 | 
             
            module Slimcop
         | 
| 6 6 | 
             
              autoload :Cli, 'slimcop/cli'
         | 
| 7 | 
            -
              autoload :Configuration, 'slimcop/configuration'
         | 
| 8 7 | 
             
              autoload :Formatter, 'slimcop/formatter'
         | 
| 9 8 | 
             
              autoload :Offense, 'slimcop/offense'
         | 
| 9 | 
            +
              autoload :PathFinder, 'slimcop/path_finder'
         | 
| 10 | 
            +
              autoload :RuboCopConfigGenerator, 'slimcop/rubo_cop_config_generator'
         | 
| 10 11 | 
             
              autoload :RubyExtractor, 'slimcop/ruby_extractor'
         | 
| 11 12 | 
             
              autoload :RubyOffenseCollector, 'slimcop/ruby_offense_collector'
         | 
| 12 13 | 
             
              autoload :SlimCorrector, 'slimcop/slim_corrector'
         | 
    
        data/slimcop.gemspec
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: slimcop
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.6.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ryo Nakamura
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2021-12- | 
| 11 | 
            +
            date: 2021-12-27 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rainbow
         | 
| @@ -44,14 +44,14 @@ dependencies: | |
| 44 44 | 
             
                requirements:
         | 
| 45 45 | 
             
                - - ">="
         | 
| 46 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: 0. | 
| 47 | 
            +
                    version: '0.4'
         | 
| 48 48 | 
             
              type: :runtime
         | 
| 49 49 | 
             
              prerelease: false
         | 
| 50 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 52 | 
             
                - - ">="
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: 0. | 
| 54 | 
            +
                    version: '0.4'
         | 
| 55 55 | 
             
            description: 
         | 
| 56 56 | 
             
            email:
         | 
| 57 57 | 
             
            - r7kamura@gmail.com
         | 
| @@ -75,9 +75,10 @@ files: | |
| 75 75 | 
             
            - exe/slimcop
         | 
| 76 76 | 
             
            - lib/slimcop.rb
         | 
| 77 77 | 
             
            - lib/slimcop/cli.rb
         | 
| 78 | 
            -
            - lib/slimcop/configuration.rb
         | 
| 79 78 | 
             
            - lib/slimcop/formatter.rb
         | 
| 80 79 | 
             
            - lib/slimcop/offense.rb
         | 
| 80 | 
            +
            - lib/slimcop/path_finder.rb
         | 
| 81 | 
            +
            - lib/slimcop/rubo_cop_config_generator.rb
         | 
| 81 82 | 
             
            - lib/slimcop/ruby_extractor.rb
         | 
| 82 83 | 
             
            - lib/slimcop/ruby_offense_collector.rb
         | 
| 83 84 | 
             
            - lib/slimcop/slim_corrector.rb
         | 
| @@ -1,16 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'rubocop'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module Slimcop
         | 
| 6 | 
            -
              class Configuration
         | 
| 7 | 
            -
                # @return [RuboCop::Config]
         | 
| 8 | 
            -
                def rubocop_config
         | 
| 9 | 
            -
                  @rubocop_config ||= begin
         | 
| 10 | 
            -
                    config_path = ::File.expand_path('../../default.yml', __dir__)
         | 
| 11 | 
            -
                    config = ::RuboCop::ConfigLoader.load_file(config_path)
         | 
| 12 | 
            -
                    ::RuboCop::ConfigLoader.merge_with_default(config, config_path)
         | 
| 13 | 
            -
                  end
         | 
| 14 | 
            -
                end
         | 
| 15 | 
            -
              end
         | 
| 16 | 
            -
            end
         |