convenient_service 0.3.1 → 0.5.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.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.dev/.tmuxinator.yml +17 -0
  3. data/CHANGELOG.md +22 -0
  4. data/README.md +8 -8
  5. data/Taskfile.yml +30 -0
  6. data/convenient_service.gemspec +1 -1
  7. data/lib/convenient_service/aliases.rb +5 -0
  8. data/lib/convenient_service/rspec/matchers/custom/results/base.rb +245 -0
  9. data/lib/convenient_service/rspec/matchers/custom/results/be_error.rb +3 -139
  10. data/lib/convenient_service/rspec/matchers/custom/results/be_failure.rb +3 -106
  11. data/lib/convenient_service/rspec/matchers/custom/results/be_not_error.rb +20 -0
  12. data/lib/convenient_service/rspec/matchers/custom/results/be_not_failure.rb +20 -0
  13. data/lib/convenient_service/rspec/matchers/custom/results/be_not_success.rb +20 -0
  14. data/lib/convenient_service/rspec/matchers/custom/results/be_success.rb +3 -112
  15. data/lib/convenient_service/rspec/matchers/custom/results.rb +6 -0
  16. data/lib/convenient_service/rspec/matchers/results/be_not_error.rb +15 -0
  17. data/lib/convenient_service/rspec/matchers/results/be_not_failure.rb +15 -0
  18. data/lib/convenient_service/rspec/matchers/results/be_not_success.rb +15 -0
  19. data/lib/convenient_service/rspec/matchers/results.rb +8 -0
  20. data/lib/convenient_service/service/plugins/has_result/constants.rb +1 -4
  21. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_jsend_status_and_attributes/entities/data.rb +8 -0
  22. data/lib/convenient_service/service/plugins/has_result/entities/result/plugins/has_jsend_status_and_attributes/entities/status.rb +4 -0
  23. data/lib/convenient_service/service/plugins/has_result_method_steps/middleware.rb +1 -4
  24. data/lib/convenient_service/service/plugins/has_result_steps/concern.rb +8 -2
  25. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/commands/cast_method_caller.rb +1 -1
  26. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/commands/cast_method_key.rb +1 -1
  27. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/commands/cast_method_name.rb +1 -1
  28. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/commands/define_method_in_container.rb +15 -8
  29. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/entities.rb +0 -1
  30. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/errors.rb +15 -1
  31. data/lib/convenient_service/service/plugins/has_result_steps/entities/step/concern/instance_methods.rb +10 -0
  32. data/lib/convenient_service/support/dependency_container/commands/create_methods_module.rb +27 -0
  33. data/lib/convenient_service/support/dependency_container/commands/import_method.rb +111 -0
  34. data/lib/convenient_service/support/dependency_container/commands.rb +4 -0
  35. data/lib/convenient_service/support/dependency_container/constants.rb +15 -0
  36. data/lib/convenient_service/support/dependency_container/entities/method.rb +121 -0
  37. data/lib/convenient_service/support/dependency_container/entities/method_collection.rb +98 -0
  38. data/lib/convenient_service/support/dependency_container/entities/namespace.rb +69 -0
  39. data/lib/convenient_service/support/dependency_container/entities/namespace_collection.rb +103 -0
  40. data/lib/convenient_service/support/dependency_container/entities.rb +6 -0
  41. data/lib/convenient_service/support/dependency_container/errors.rb +49 -0
  42. data/lib/convenient_service/support/dependency_container/export.rb +30 -0
  43. data/lib/convenient_service/support/dependency_container/import.rb +30 -0
  44. data/lib/convenient_service/support/dependency_container.rb +9 -0
  45. data/lib/convenient_service/support/gems/rspec.rb +9 -2
  46. data/lib/convenient_service/support/not_passed.rb +7 -0
  47. data/lib/convenient_service/support/raw_value.rb +52 -0
  48. data/lib/convenient_service/support.rb +3 -0
  49. data/lib/convenient_service/utils/module/fetch_own_const.rb +88 -0
  50. data/lib/convenient_service/utils/module/include_module.rb +38 -0
  51. data/lib/convenient_service/utils/module.rb +10 -0
  52. data/lib/convenient_service/utils/proc/conjunct.rb +1 -1
  53. data/lib/convenient_service/utils/string/split.rb +41 -0
  54. data/lib/convenient_service/utils/string.rb +5 -0
  55. data/lib/convenient_service/version.rb +1 -1
  56. data/lib/convenient_service.rb +6 -0
  57. metadata +33 -8
  58. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/entities/values/raw.rb +0 -48
  59. data/lib/convenient_service/service/plugins/has_result_steps/entities/method/entities/values.rb +0 -3
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+
3
+ ##
4
+ # @example Two args form (works as GetOwnConst).
5
+ # module Test
6
+ # end
7
+ #
8
+ # ConvenientService::Utils::Module::FetchOwnConst.call(Test, :File)
9
+ # # => nil, not File from Ruby Core.
10
+ #
11
+ # module Test
12
+ # class File
13
+ # end
14
+ # end
15
+ #
16
+ # ConvenientService::Utils::Module::FetchOwnConst.call(Test, :File)
17
+ # # => Test::File
18
+ #
19
+ # @example Two args + block form.
20
+ # module Test
21
+ # end
22
+ #
23
+ # ConvenientService::Utils::Module::FetchOwnConst.call(Test, :File) { Class.new }
24
+ # # => Test::File, just created.
25
+ #
26
+ # module Test
27
+ # class File
28
+ # end
29
+ # end
30
+ #
31
+ # ConvenientService::Utils::Module::FetchOwnConst.call(Test, :File)
32
+ # # => Test::File, already existing.
33
+ #
34
+ module ConvenientService
35
+ module Utils
36
+ module Module
37
+ class FetchOwnConst < Support::Command
38
+ ##
39
+ # @!attribute [r] mod
40
+ # @return [Class, Module]
41
+ #
42
+ attr_reader :mod
43
+
44
+ ##
45
+ # @!attribute [r] const_name
46
+ # @return [Symbol]
47
+ #
48
+ attr_reader :const_name
49
+
50
+ ##
51
+ # @!attribute [r] fallback_block
52
+ # @return [Proc, nil]
53
+ #
54
+ attr_reader :fallback_block
55
+
56
+ ##
57
+ # @param mod [Class, Module]
58
+ # @param const_name [Symbol]
59
+ # @param fallback_block [Proc]
60
+ # @return [void]
61
+ #
62
+ def initialize(mod, const_name, &fallback_block)
63
+ @mod = mod
64
+ @const_name = const_name
65
+ @fallback_block = fallback_block
66
+ end
67
+
68
+ ##
69
+ # @return [Object] Value of own const. Can be any type.
70
+ #
71
+ # @internal
72
+ # TODO: Wrap by mutex?
73
+ #
74
+ def call
75
+ ##
76
+ # NOTE: > If `inherit` is `false`, the lookup only checks the constants in the receiver:
77
+ # https://ruby-doc.org/core-3.0.0/Module.html#method-i-const_defined-3F
78
+ #
79
+ return mod.const_get(const_name, false) if mod.const_defined?(const_name, false)
80
+
81
+ return mod.const_set(const_name, fallback_block.call) if fallback_block
82
+
83
+ nil
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ConvenientService
4
+ module Utils
5
+ module Module
6
+ class IncludeModule < Support::Command
7
+ ##
8
+ # @!attribute [r] mod
9
+ # @return [Module]
10
+ #
11
+ attr_reader :mod
12
+
13
+ ##
14
+ # @!attribute [r] other_mod
15
+ # @return [Module]
16
+ #
17
+ attr_reader :other_mod
18
+
19
+ ##
20
+ # @param mod [Module]
21
+ # @param other_mod [Module]
22
+ # @return [void]
23
+ #
24
+ def initialize(mod, other_mod)
25
+ @mod = mod
26
+ @other_mod = other_mod
27
+ end
28
+
29
+ ##
30
+ # @return [Boolean]
31
+ #
32
+ def call
33
+ mod.included_modules.include?(other_mod)
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "module/class_method_defined"
4
+ require_relative "module/fetch_own_const"
4
5
  require_relative "module/get_own_instance_method"
5
6
  require_relative "module/get_own_const"
6
7
  require_relative "module/has_own_instance_method"
8
+ require_relative "module/include_module"
7
9
  require_relative "module/instance_method_defined"
8
10
 
9
11
  module ConvenientService
@@ -19,6 +21,10 @@ module ConvenientService
19
21
  ClassMethodDefined.call(...)
20
22
  end
21
23
 
24
+ def fetch_own_const(...)
25
+ FetchOwnConst.call(...)
26
+ end
27
+
22
28
  def get_own_instance_method(...)
23
29
  GetOwnInstanceMethod.call(...)
24
30
  end
@@ -31,6 +37,10 @@ module ConvenientService
31
37
  HasOwnInstanceMethod.call(...)
32
38
  end
33
39
 
40
+ def include_module?(...)
41
+ IncludeModule.call(...)
42
+ end
43
+
34
44
  def instance_method_defined?(...)
35
45
  InstanceMethodDefined.call(...)
36
46
  end
@@ -29,7 +29,7 @@ module ConvenientService
29
29
  # - https://en.wikipedia.org/wiki/Logical_conjunction
30
30
  #
31
31
  def call
32
- return ->(item) { true } if procs.none?
32
+ return ->(item) {} if procs.none?
33
33
 
34
34
  return procs.first if procs.one?
35
35
 
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ConvenientService
4
+ module Utils
5
+ module String
6
+ class Split < Support::Command
7
+ ##
8
+ # @!attribute [r] string
9
+ # @return [#to_s]
10
+ #
11
+ attr_reader :string
12
+
13
+ ##
14
+ # @!attribute [r] delimiters
15
+ # @return [Array<String>]
16
+ #
17
+ attr_reader :delimiters
18
+
19
+ ##
20
+ # @param string [Symbol, String]
21
+ # @param delimiters [Array<String>]
22
+ # @return [void]
23
+ #
24
+ def initialize(string, *delimiters)
25
+ @string = string
26
+ @delimiters = delimiters
27
+ end
28
+
29
+ ##
30
+ # @return [String]
31
+ #
32
+ # @internal
33
+ # https://stackoverflow.com/a/51380514/12201472
34
+ #
35
+ def call
36
+ string.to_s.split(::Regexp.union(delimiters))
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "string/camelize"
4
+ require_relative "string/split"
4
5
 
5
6
  module ConvenientService
6
7
  module Utils
@@ -9,6 +10,10 @@ module ConvenientService
9
10
  def camelize(...)
10
11
  Camelize.call(...)
11
12
  end
13
+
14
+ def split(...)
15
+ Split.call(...)
16
+ end
12
17
  end
13
18
  end
14
19
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ConvenientService
4
- VERSION = "0.3.1"
4
+ VERSION = "0.5.0"
5
5
  end
@@ -29,3 +29,9 @@ require_relative "convenient_service/core"
29
29
  require_relative "convenient_service/common"
30
30
  require_relative "convenient_service/service"
31
31
  require_relative "convenient_service/configs"
32
+
33
+ ##
34
+ # @internal
35
+ # Convenient Service Aliases.
36
+ #
37
+ require_relative "convenient_service/aliases"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: convenient_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marian Kostyk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-19 00:00:00.000000000 Z
11
+ date: 2023-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: appraisal
@@ -182,16 +182,16 @@ dependencies:
182
182
  name: rubocop
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - ">="
185
+ - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: '0'
187
+ version: 1.40.0
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - ">="
192
+ - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: '0'
194
+ version: 1.40.0
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: rubocop-rspec
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -301,6 +301,7 @@ executables: []
301
301
  extensions: []
302
302
  extra_rdoc_files: []
303
303
  files:
304
+ - ".dev/.tmuxinator.yml"
304
305
  - ".dockerignore"
305
306
  - ".gem_release.yml"
306
307
  - ".github/issue_template.md"
@@ -330,6 +331,7 @@ files:
330
331
  - docker/3.1/Dockerfile
331
332
  - env.rb
332
333
  - lib/convenient_service.rb
334
+ - lib/convenient_service/aliases.rb
333
335
  - lib/convenient_service/common.rb
334
336
  - lib/convenient_service/common/plugins.rb
335
337
  - lib/convenient_service/common/plugins/aliases.rb
@@ -529,8 +531,12 @@ files:
529
531
  - lib/convenient_service/rspec/matchers/custom/include_module.rb
530
532
  - lib/convenient_service/rspec/matchers/custom/prepend_module.rb
531
533
  - lib/convenient_service/rspec/matchers/custom/results.rb
534
+ - lib/convenient_service/rspec/matchers/custom/results/base.rb
532
535
  - lib/convenient_service/rspec/matchers/custom/results/be_error.rb
533
536
  - lib/convenient_service/rspec/matchers/custom/results/be_failure.rb
537
+ - lib/convenient_service/rspec/matchers/custom/results/be_not_error.rb
538
+ - lib/convenient_service/rspec/matchers/custom/results/be_not_failure.rb
539
+ - lib/convenient_service/rspec/matchers/custom/results/be_not_success.rb
534
540
  - lib/convenient_service/rspec/matchers/custom/results/be_success.rb
535
541
  - lib/convenient_service/rspec/matchers/delegate_to.rb
536
542
  - lib/convenient_service/rspec/matchers/extend_module.rb
@@ -544,6 +550,9 @@ files:
544
550
  - lib/convenient_service/rspec/matchers/results.rb
545
551
  - lib/convenient_service/rspec/matchers/results/be_error.rb
546
552
  - lib/convenient_service/rspec/matchers/results/be_failure.rb
553
+ - lib/convenient_service/rspec/matchers/results/be_not_error.rb
554
+ - lib/convenient_service/rspec/matchers/results/be_not_failure.rb
555
+ - lib/convenient_service/rspec/matchers/results/be_not_success.rb
547
556
  - lib/convenient_service/rspec/matchers/results/be_success.rb
548
557
  - lib/convenient_service/service.rb
549
558
  - lib/convenient_service/service/plugins.rb
@@ -660,8 +669,6 @@ files:
660
669
  - lib/convenient_service/service/plugins/has_result_steps/entities/method/entities/directions/output.rb
661
670
  - lib/convenient_service/service/plugins/has_result_steps/entities/method/entities/key.rb
662
671
  - lib/convenient_service/service/plugins/has_result_steps/entities/method/entities/name.rb
663
- - lib/convenient_service/service/plugins/has_result_steps/entities/method/entities/values.rb
664
- - lib/convenient_service/service/plugins/has_result_steps/entities/method/entities/values/raw.rb
665
672
  - lib/convenient_service/service/plugins/has_result_steps/entities/method/errors.rb
666
673
  - lib/convenient_service/service/plugins/has_result_steps/entities/service.rb
667
674
  - lib/convenient_service/service/plugins/has_result_steps/entities/service/class_methods.rb
@@ -696,12 +703,27 @@ files:
696
703
  - lib/convenient_service/support/concern.rb
697
704
  - lib/convenient_service/support/copyable.rb
698
705
  - lib/convenient_service/support/delegate.rb
706
+ - lib/convenient_service/support/dependency_container.rb
707
+ - lib/convenient_service/support/dependency_container/commands.rb
708
+ - lib/convenient_service/support/dependency_container/commands/create_methods_module.rb
709
+ - lib/convenient_service/support/dependency_container/commands/import_method.rb
710
+ - lib/convenient_service/support/dependency_container/constants.rb
711
+ - lib/convenient_service/support/dependency_container/entities.rb
712
+ - lib/convenient_service/support/dependency_container/entities/method.rb
713
+ - lib/convenient_service/support/dependency_container/entities/method_collection.rb
714
+ - lib/convenient_service/support/dependency_container/entities/namespace.rb
715
+ - lib/convenient_service/support/dependency_container/entities/namespace_collection.rb
716
+ - lib/convenient_service/support/dependency_container/errors.rb
717
+ - lib/convenient_service/support/dependency_container/export.rb
718
+ - lib/convenient_service/support/dependency_container/import.rb
699
719
  - lib/convenient_service/support/finite_loop.rb
700
720
  - lib/convenient_service/support/gems.rb
701
721
  - lib/convenient_service/support/gems/active_model.rb
702
722
  - lib/convenient_service/support/gems/rspec.rb
703
723
  - lib/convenient_service/support/middleware.rb
704
724
  - lib/convenient_service/support/middleware/stack_builder.rb
725
+ - lib/convenient_service/support/not_passed.rb
726
+ - lib/convenient_service/support/raw_value.rb
705
727
  - lib/convenient_service/support/ruby.rb
706
728
  - lib/convenient_service/support/version.rb
707
729
  - lib/convenient_service/support/version/null_version.rb
@@ -724,9 +746,11 @@ files:
724
746
  - lib/convenient_service/utils/method/defined.rb
725
747
  - lib/convenient_service/utils/module.rb
726
748
  - lib/convenient_service/utils/module/class_method_defined.rb
749
+ - lib/convenient_service/utils/module/fetch_own_const.rb
727
750
  - lib/convenient_service/utils/module/get_own_const.rb
728
751
  - lib/convenient_service/utils/module/get_own_instance_method.rb
729
752
  - lib/convenient_service/utils/module/has_own_instance_method.rb
753
+ - lib/convenient_service/utils/module/include_module.rb
730
754
  - lib/convenient_service/utils/module/instance_method_defined.rb
731
755
  - lib/convenient_service/utils/object.rb
732
756
  - lib/convenient_service/utils/object/instance_variable_fetch.rb
@@ -736,6 +760,7 @@ files:
736
760
  - lib/convenient_service/utils/proc/exec_config.rb
737
761
  - lib/convenient_service/utils/string.rb
738
762
  - lib/convenient_service/utils/string/camelize.rb
763
+ - lib/convenient_service/utils/string/split.rb
739
764
  - lib/convenient_service/version.rb
740
765
  - logo.png
741
766
  homepage: https://github.com/marian13/convenient_service
@@ -1,48 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ConvenientService
4
- module Service
5
- module Plugins
6
- module HasResultSteps
7
- module Entities
8
- class Method
9
- module Entities
10
- module Values
11
- ##
12
- # TODO: Specs.
13
- #
14
- class Raw
15
- def initialize(object)
16
- @object = object
17
- end
18
-
19
- class << self
20
- def wrap(object)
21
- new(object)
22
- end
23
-
24
- private :new
25
- end
26
-
27
- def unwrap
28
- object
29
- end
30
-
31
- def ==(other)
32
- return unless other.instance_of?(self.class)
33
-
34
- object == other.object
35
- end
36
-
37
- protected
38
-
39
- attr_reader :object
40
- end
41
- end
42
- end
43
- end
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,3 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "values/raw"