mj 0.4.1 → 0.4.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ff905fc5978244944098033bf6ecfb671f1130c336e2f77c19beefab3c927dfe
4
- data.tar.gz: 0560a8a156cb45bc2e8c459b021e721118e304abf55e92d25039cd9c9277ee24
3
+ metadata.gz: 79b064c1e86b2c881657f35989e852b5000e4677a1abf4636b2473974a5e115f
4
+ data.tar.gz: 165f134cfe2c427d6d96314f0bda0c73dfce38d93fd777cdd60740c65314438f
5
5
  SHA512:
6
- metadata.gz: b20134878fb83b50a0d9dda518dfc81500af893f522616605835e1ee2f6d78bbe824a9302d07131926d799bf308ee463efbfa9a0b4d37dce793fd2ab614c91d8
7
- data.tar.gz: 30f12048aa54fa5070895859a99f0ffdd66bf35962d82e98952fc889b8a23afd9f4b650a89bea6645f28434210b173d90460196ab20a72f93fe68368cc50d87d
6
+ metadata.gz: e8337127e6a696efca4c24b673e3e1f5fea79886a9946ef37173683315701c7bb2c6644a1ae77d3cd55efc7717eb36efb80a1312c5db274fdfe8abe66aba289e
7
+ data.tar.gz: 538a81a2d58fe8bdfa85ec60409868526479cb6b6016b965f264a105b467ec9120d87c58efdf0260e1de9f6ae3ac3102c01eb432e0c098cc8ef7ee9bdf2982ff
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mj (0.4.1)
4
+ mj (0.4.2)
5
5
  thor (~> 1.2.1)
6
6
 
7
7
  GEM
@@ -41,6 +41,10 @@ module Mj
41
41
  next_file(@items.reverse, reference_file)
42
42
  end
43
43
 
44
+ def sorted_by_path
45
+ new(@items.sort_by(&:path))
46
+ end
47
+
44
48
  private
45
49
 
46
50
  def new(*args)
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mj
4
+ module AlternativeFile
5
+ module Commands
6
+ class ListCommand
7
+ attr_reader :file
8
+
9
+ def initialize(file, options)
10
+ @file = CurrentFile.new(file.to_s)
11
+ @options = options
12
+ end
13
+
14
+ def exists?
15
+ @options[:exists]
16
+ end
17
+
18
+ def types
19
+ @options[:types].to_s.split(",")
20
+ end
21
+
22
+ def debug?
23
+ @options[:debug]
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mj
4
+ module AlternativeFile
5
+ module Commands
6
+ class ListCommandHandler
7
+ def initialize(resolvers:)
8
+ @resolvers = resolvers
9
+ end
10
+
11
+ # rubocop:disable Metrics/MethodLength
12
+ def handle(command)
13
+ candidates = @resolvers.resolve(command.file)
14
+
15
+ if command.types.any?
16
+ candidates = candidates.of_types(command.types)
17
+ end
18
+
19
+ if command.exists?
20
+ candidates = candidates.existing
21
+ end
22
+
23
+ unless command.debug?
24
+ candidates = candidates.unique
25
+ end
26
+
27
+ candidates.sorted_by_path
28
+ end
29
+ # rubocop:enable Metrics/MethodLength
30
+ end
31
+ end
32
+ end
33
+ end
@@ -10,6 +10,8 @@ require_relative "resolvers/ruby/rails_resolver"
10
10
  require_relative "resolvers/ruby/rails_controller_resolver"
11
11
  require_relative "resolvers/ruby/view_component_resolver"
12
12
  require_relative "resolvers/ruby/ruby_file"
13
+ require_relative "commands/list_command_handler"
14
+ require_relative "commands/list_command"
13
15
 
14
16
  module Mj
15
17
  module AlternativeFile
@@ -19,8 +21,10 @@ module Mj
19
21
  option :exists, type: :boolean, banner: "files that exist", aliases: :e
20
22
  option :debug, type: :boolean, banner: "print debug information", aliases: :d
21
23
  def list(reference_file)
22
- file = CurrentFile.new(reference_file)
23
- print_candidates(resolve(file))
24
+ handler = Commands::ListCommandHandler.new(resolvers: self.class.resolvers)
25
+ command = Commands::ListCommand.new(reference_file, options)
26
+ candidates = handler.handle(command)
27
+ print_candidates(candidates)
24
28
  end
25
29
 
26
30
  desc "next <reference-file>", "Next alternative file"
@@ -28,8 +32,10 @@ module Mj
28
32
  option :exists, type: :boolean, banner: "files that exist", aliases: :e
29
33
  option :debug, type: :boolean, banner: "print debug information", aliases: :d
30
34
  def next(reference_file)
31
- file = CurrentFile.new(reference_file)
32
- candidate = resolve(file).after(file)
35
+ handler = Commands::ListCommandHandler.new(resolvers: self.class.resolvers)
36
+ command = Commands::ListCommand.new(reference_file, options)
37
+ candidates = handler.handle(command)
38
+ candidate = candidates.after(command.file)
33
39
  print_candidates([candidate].compact)
34
40
  end
35
41
 
@@ -38,8 +44,10 @@ module Mj
38
44
  option :exists, type: :boolean, banner: "files that exist", aliases: :e
39
45
  option :debug, type: :boolean, banner: "print debug information", aliases: :d
40
46
  def prev(reference_file)
41
- file = CurrentFile.new(reference_file)
42
- candidate = resolve(file).before(file)
47
+ handler = Commands::ListCommandHandler.new(resolvers: self.class.resolvers)
48
+ command = Commands::ListCommand.new(reference_file, options)
49
+ candidates = handler.handle(command)
50
+ candidate = candidates.before(command.file)
43
51
  print_candidates([candidate].compact)
44
52
  end
45
53
 
@@ -56,26 +64,6 @@ module Mj
56
64
  def print_candidates(candidates)
57
65
  $stdout.puts candidates.map { |i| i.to_s(debug: options[:debug]) }.join(" ")
58
66
  end
59
-
60
- # rubocop:disable Metrics/MethodLength
61
- def resolve(file)
62
- candidates = self.class.resolvers.resolve(file)
63
-
64
- if options[:types]
65
- candidates = candidates.of_types(options[:types].to_s.split(","))
66
- end
67
-
68
- if options[:exists]
69
- candidates = candidates.existing
70
- end
71
-
72
- unless options[:debug]
73
- candidates = candidates.unique
74
- end
75
-
76
- candidates
77
- end
78
- # rubocop:enable Metrics/MethodLength
79
67
  end
80
68
  end
81
69
  end
data/lib/mj/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mj
4
- VERSION = "0.4.1"
4
+ VERSION = "0.4.2"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mj
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcelo Jacobus
@@ -47,6 +47,8 @@ files:
47
47
  - lib/mj.rb
48
48
  - lib/mj/alternative_file/candidate.rb
49
49
  - lib/mj/alternative_file/candidates.rb
50
+ - lib/mj/alternative_file/commands/list_command.rb
51
+ - lib/mj/alternative_file/commands/list_command_handler.rb
50
52
  - lib/mj/alternative_file/current_file.rb
51
53
  - lib/mj/alternative_file/resolver.rb
52
54
  - lib/mj/alternative_file/resolvers/base.rb