heckler 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 605da338e5d75dfc3615fd7255390559228de9223cea8c4696a7781f64b7d33f
4
- data.tar.gz: 067dfae307730437b0d5bae6a90e06f9033ab0f479469234d11da2dde64bff92
3
+ metadata.gz: 9733f79bc2c0954718b84cef40e963eea19e61093d1afc6f3bb9fae077d7a342
4
+ data.tar.gz: 4c383a199322fca8fcc1efb8a1420bb3b6900b998557c839b534d1b7c609009e
5
5
  SHA512:
6
- metadata.gz: 0e84e49df096985d552c49bd91d9bae548904174d743c5ca6288884e9494ce4be5e5a4601f900b967334500b376e113c719888fbaa91ace5a02ef405b955d8bc
7
- data.tar.gz: 3b1f705402cb5e522ee4f47d8652947ac1cb56b6e1d2ff539e2fd9d616b15e55a497f173295acbc917d58464fa79e9ab37e35fb03426b8871fad9cb4facfa12e
6
+ metadata.gz: edf2983e808bdbc69173410794727734284fb1bead0a607a06dcd809ca848270fea42d4f211f6f50a668fdca67603f2afcc6328514c9faac4fa1946bc188a806
7
+ data.tar.gz: 8fe464cd042f1ec1b2809515ba3b81ff9ea0afe638017db7d092da1fcf962a96ae8810edc3ddb4cda516233308cfdef10339a1fc13bb4a84072df1ecf17f7003
data/CHANGELOG.md CHANGED
@@ -1,5 +1,5 @@
1
1
  ## [Unreleased]
2
-
3
- ## [0.1.0] - 2025-01-16
4
-
2
+ ## [0.0.2] - 2025-01-19
3
+ - CLI working as expected: shows end result to users and code is in bin/heckler file.
4
+ ## [0.0.1] - 2025-01-16
5
5
  - Initial release
data/bin/heckler ADDED
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/heckler'
4
+
5
+ $stdout.sync = true
6
+ require 'optparse'
7
+
8
+ command = ARGV.shift
9
+
10
+ case command
11
+ when 'init'
12
+ Config.init
13
+ when nil
14
+ config = Heckler::Config.instance
15
+ aspell = Heckler::Aspell.new(config)
16
+ directory = Dir.pwd
17
+ @checkers = [Heckler::Checker::FileSystem.new(config, aspell)]
18
+ issues = []
19
+
20
+ @checkers.each do |checker|
21
+ issues.concat(checker.check(directory))
22
+ end
23
+
24
+ puts issues.inspect
25
+ else
26
+ puts "Unknown command: #{command}"
27
+ puts 'Available commands: init, or no command for default behavior'
28
+ end
@@ -1,5 +1,5 @@
1
- require "open3"
2
- require_relative "config"
1
+ require 'open3'
2
+ require_relative 'config'
3
3
 
4
4
  Misspelling = Data.define(:word, :suggestions)
5
5
 
@@ -19,8 +19,7 @@ module Heckler
19
19
  private
20
20
 
21
21
  def get_misspellings(text)
22
- misspellings = run(text)
23
- misspellings
22
+ run(text)
24
23
  end
25
24
 
26
25
  def take_suggestions(suggestions)
@@ -29,17 +28,18 @@ module Heckler
29
28
  end
30
29
 
31
30
  def run(text)
32
- stdin, stdout, stderr, wait_thr = Open3.popen3("aspell", "--encoding", "utf-8", "-a", "--ignore-case", "--lang=en_US", "--sug-mode=ultra")
31
+ stdin, stdout, stderr, _wait_thr = Open3.popen3('aspell', '--encoding', 'utf-8', '-a', '--ignore-case',
32
+ '--lang=en_US', '--sug-mode=ultra')
33
33
  stdin.puts text
34
34
  stdin.close
35
35
  output = stdout.read
36
36
  stdout.close
37
37
  stderr.close
38
38
 
39
- output.lines.select { |line| line.start_with?("&") }.map do |line|
40
- word_metadata, suggestions = line.strip.split(":")
41
- word = word_metadata.split(" ")[1]
42
- suggestions = suggestions.strip.split(", ")
39
+ output.lines.select { |line| line.start_with?('&') }.map do |line|
40
+ word_metadata, suggestions = line.strip.split(':')
41
+ word = word_metadata.split(' ')[1]
42
+ suggestions = suggestions.strip.split(', ')
43
43
  Misspelling.new(word, take_suggestions(suggestions))
44
44
  end
45
45
  end
@@ -1,6 +1,6 @@
1
- require_relative "../aspell"
1
+ require_relative '../aspell'
2
2
 
3
- require "find"
3
+ require 'find'
4
4
 
5
5
  # The Checker::FileSystem class provides functionality to check spelling in file and directory names within a given directory structure.
6
6
  #
@@ -30,21 +30,18 @@ module Heckler
30
30
  def check(directory)
31
31
  files_or_directories = []
32
32
  Find.find(directory) do |path|
33
- next if File.basename(path).start_with?(".")
34
- next if File.fnmatch("*/.git/*", path)
33
+ next if File.basename(path).start_with?('.')
34
+ next if File.fnmatch('*/.*/*', path)
35
35
 
36
36
  files_or_directories << path
37
37
  end
38
38
 
39
-
40
39
  files_or_directories.sort_by! { |path| File.realpath(path) }
41
40
 
42
- puts files_or_directories
43
-
44
41
  issues = []
45
42
 
46
43
  files_or_directories.each do |file_or_directory|
47
- name = SpellcheckFormatter.format(File.basename(file_or_directory, ".*"))
44
+ name = SpellcheckFormatter.format(File.basename(file_or_directory, '.*'))
48
45
  new_issues = @spellchecker.check(name).map do |misspelling|
49
46
  Issue.new(misspelling, File.realpath(file_or_directory), 0)
50
47
  end
@@ -60,10 +57,10 @@ module Heckler
60
57
  class SpellcheckFormatter
61
58
  def self.format(input)
62
59
  # Remove leading underscores
63
- input = input.gsub(/^_+/, "")
60
+ input = input.gsub(/^_+/, '')
64
61
 
65
62
  # Replace underscores and dashes with spaces
66
- input = input.tr("_-", " ")
63
+ input = input.tr('_-', ' ')
67
64
 
68
65
  # Insert spaces between lowercase and uppercase letters (camelCase or PascalCase)
69
66
  input = input.gsub(/([a-z])([A-Z])/, '\1 \2')
@@ -72,7 +69,7 @@ module Heckler
72
69
  input = input.gsub(/([A-Z]+)([A-Z][a-z])/, '\1 \2')
73
70
 
74
71
  # Replace multiple spaces with a single space
75
- input = input.gsub(/\s+/, " ")
72
+ input = input.gsub(/\s+/, ' ')
76
73
 
77
74
  # Convert the final result to lowercase
78
75
  input.downcase
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Heckler
4
- VERSION = "0.0.1"
4
+ VERSION = "0.0.2"
5
5
  end
data/lib/heckler.rb CHANGED
@@ -3,8 +3,11 @@
3
3
  # @see https://github.com/peckphp/peck
4
4
  ##
5
5
 
6
- require_relative "heckler/version"
7
- require_relative "heckler/cli"
6
+ require_relative 'heckler/config'
7
+ require_relative 'heckler/aspell'
8
+ require_relative 'heckler/preset'
9
+ require_relative 'heckler/checker/file_system'
10
+ require_relative 'heckler/version'
8
11
 
9
12
  module Heckler
10
13
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heckler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stanislav (Stas) Katkov
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-16 00:00:00.000000000 Z
11
+ date: 2025-01-19 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: "**Heckler** is a tool to identify wording or spelling mistakes in ruby
14
14
  codebase: filenames, class names, method names, property names and more. Spelling
@@ -25,14 +25,12 @@ files:
25
25
  - LICENSE.txt
26
26
  - README.md
27
27
  - Rakefile
28
- - exe/heckler
28
+ - bin/heckler
29
29
  - heckler.json
30
30
  - lib/heckler.rb
31
31
  - lib/heckler/aspell.rb
32
32
  - lib/heckler/checker/file_system.rb
33
- - lib/heckler/cli.rb
34
33
  - lib/heckler/config.rb
35
- - lib/heckler/personn.rb
36
34
  - lib/heckler/preset.rb
37
35
  - lib/heckler/presets/base.stub
38
36
  - lib/heckler/version.rb
data/exe/heckler DELETED
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "heckler"
4
-
5
- puts "test"
6
- Heckler::CLI.start(ARGV)
data/lib/heckler/cli.rb DELETED
@@ -1,50 +0,0 @@
1
- require 'optparse'
2
-
3
- require_relative "config"
4
- require_relative "aspell"
5
- require_relative "preset"
6
- require_relative "checker/file_system"
7
-
8
-
9
- module Heckler
10
- class Runner
11
- attr_reader :checkers
12
-
13
- def initialize(checkers)
14
- @checkers = checkers
15
- end
16
-
17
- def run(directory)
18
- issues = []
19
-
20
- puts directory
21
-
22
- @checkers.each do |checker|
23
- issues.concat(checker.check(directory))
24
- end
25
-
26
- issues
27
- end
28
- end
29
-
30
- class CLI
31
- def self.start(args)
32
- command = args.shift
33
-
34
- case command
35
- when 'init'
36
- Config.init
37
- when nil
38
- config = Config.instance
39
- aspell = Aspell.new(config)
40
-
41
- Runner.new([
42
- Heckler::Checker::FileSystem.new(config, aspell)
43
- ]).run(Dir.pwd)
44
- else
45
- puts "Unknown command: #{command}"
46
- puts "Available commands: init, or no command for default behavior"
47
- end
48
- end
49
- end
50
- end
File without changes