params_ready 0.0.2 → 0.0.8

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/lib/params_ready/builder.rb +21 -0
  3. data/lib/params_ready/extensions/delegation.rb +1 -0
  4. data/lib/params_ready/extensions/freezer.rb +2 -0
  5. data/lib/params_ready/extensions/undefined.rb +8 -0
  6. data/lib/params_ready/format.rb +4 -2
  7. data/lib/params_ready/helpers/arel_builder.rb +96 -35
  8. data/lib/params_ready/helpers/callable.rb +14 -0
  9. data/lib/params_ready/helpers/interface_definer.rb +48 -0
  10. data/lib/params_ready/helpers/memo.rb +0 -1
  11. data/lib/params_ready/helpers/options.rb +77 -9
  12. data/lib/params_ready/helpers/parameter_storage_class_methods.rb +27 -0
  13. data/lib/params_ready/helpers/parameter_user_class_methods.rb +18 -14
  14. data/lib/params_ready/helpers/rule.rb +30 -11
  15. data/lib/params_ready/helpers/usage_rule.rb +21 -3
  16. data/lib/params_ready/marshaller/array_marshallers.rb +4 -3
  17. data/lib/params_ready/marshaller/{hash_set_marshallers.rb → enum_set_marshallers.rb} +5 -5
  18. data/lib/params_ready/marshaller/polymorph_marshallers.rb +2 -2
  19. data/lib/params_ready/marshaller/{hash_marshallers.rb → struct_marshallers.rb} +5 -5
  20. data/lib/params_ready/marshaller/tuple_marshallers.rb +2 -2
  21. data/lib/params_ready/ordering/column.rb +1 -1
  22. data/lib/params_ready/output_parameters.rb +13 -2
  23. data/lib/params_ready/pagination/keyset_pagination.rb +5 -5
  24. data/lib/params_ready/parameter/{abstract_hash_parameter.rb → abstract_struct_parameter.rb} +6 -6
  25. data/lib/params_ready/parameter/array_parameter.rb +2 -2
  26. data/lib/params_ready/parameter/definition.rb +48 -40
  27. data/lib/params_ready/parameter/{hash_set_parameter.rb → enum_set_parameter.rb} +11 -10
  28. data/lib/params_ready/parameter/parameter.rb +48 -29
  29. data/lib/params_ready/parameter/state.rb +4 -4
  30. data/lib/params_ready/parameter/{hash_parameter.rb → struct_parameter.rb} +11 -10
  31. data/lib/params_ready/parameter/tuple_parameter.rb +1 -1
  32. data/lib/params_ready/parameter/value_parameter.rb +14 -10
  33. data/lib/params_ready/parameter_user.rb +7 -15
  34. data/lib/params_ready/query/array_grouping.rb +4 -4
  35. data/lib/params_ready/query/exists_predicate.rb +3 -3
  36. data/lib/params_ready/query/grouping.rb +8 -2
  37. data/lib/params_ready/query/join_clause.rb +91 -28
  38. data/lib/params_ready/query/predicate.rb +3 -3
  39. data/lib/params_ready/query/relation.rb +29 -14
  40. data/lib/params_ready/query/structured_grouping.rb +4 -4
  41. data/lib/params_ready/query/variable_operator_predicate.rb +12 -12
  42. data/lib/params_ready/value/coder.rb +36 -8
  43. data/lib/params_ready/version.rb +7 -0
  44. data/lib/params_ready.rb +3 -11
  45. metadata +56 -10
@@ -18,9 +18,8 @@ module ParamsReady
18
18
  end
19
19
  end
20
20
 
21
- class Coder
21
+ class AbstractCoder
22
22
  extend Extensions::ClassReaderWriter
23
- extend Coercion
24
23
 
25
24
  def self.value_class_name
26
25
  last = self.name.split("::").last
@@ -31,10 +30,41 @@ module ParamsReady
31
30
  type_identifier :value
32
31
  end
33
32
 
33
+ class Coder < AbstractCoder
34
+ extend Coercion
35
+
36
+ def self.instance(**opts)
37
+ raise ParamsReadyError, "No options expected, got: #{opts}" unless opts.empty?
38
+
39
+ self
40
+ end
41
+
42
+ class Instantiable < AbstractCoder
43
+ include Coercion
44
+
45
+ def self.instance(**opts)
46
+ new **opts
47
+ end
48
+
49
+ def type_identifier
50
+ self.class.type_identifier
51
+ end
52
+
53
+ def strict_default?
54
+ self.class.strict_default?
55
+ end
56
+
57
+ def value_class_name
58
+ self.class.value_class_name
59
+ end
60
+ end
61
+ end
62
+
34
63
  class GenericCoder
35
64
  extend Extensions::LateInit
36
65
  extend Extensions::Finalizer
37
66
  include Extensions::Finalizer::InstanceMethods
67
+ include Coercion
38
68
 
39
69
  def initialize(name)
40
70
  @name = name
@@ -43,8 +73,6 @@ module ParamsReady
43
73
  @type_identifier = nil
44
74
  end
45
75
 
46
- def strict_default?; true; end
47
-
48
76
  late_init(:coerce, getter: false)
49
77
  late_init(:format, getter: false)
50
78
  late_init(:type_identifier, obligatory: false)
@@ -53,10 +81,8 @@ module ParamsReady
53
81
  @name
54
82
  end
55
83
 
56
- def try_coerce(input, context)
84
+ def coerce(input, context)
57
85
  @coerce[input, context]
58
- rescue => _error
59
- raise CoercionError.new(input, @name)
60
86
  end
61
87
 
62
88
  def format(value, format)
@@ -74,7 +100,9 @@ module ParamsReady
74
100
 
75
101
  def self.coerce(input, _)
76
102
  return nil if input.nil? || input == ''
77
- Integer(input)
103
+
104
+ base = 10 if input.is_a? String
105
+ Integer(input, base)
78
106
  end
79
107
 
80
108
  def self.format(value, format)
@@ -0,0 +1,7 @@
1
+ module ParamsReady
2
+ VERSION = '0.0.8'.freeze
3
+
4
+ def self.gem_version
5
+ ::Gem::Version.new(VERSION)
6
+ end
7
+ end
data/lib/params_ready.rb CHANGED
@@ -2,8 +2,8 @@ require 'ruby2_keywords'
2
2
  require 'arel'
3
3
 
4
4
  require_relative 'params_ready/parameter/array_parameter'
5
- require_relative 'params_ready/parameter/hash_parameter'
6
- require_relative 'params_ready/parameter/hash_set_parameter'
5
+ require_relative 'params_ready/parameter/struct_parameter'
6
+ require_relative 'params_ready/parameter/enum_set_parameter'
7
7
  require_relative 'params_ready/parameter/polymorph_parameter'
8
8
  require_relative 'params_ready/parameter/tuple_parameter'
9
9
  require_relative 'params_ready/parameter/value_parameter'
@@ -25,12 +25,4 @@ require_relative 'params_ready/query/nullness_predicate'
25
25
  require_relative 'params_ready/query/polymorph_predicate'
26
26
  require_relative 'params_ready/query/relation'
27
27
  require_relative 'params_ready/query/variable_operator_predicate'
28
-
29
-
30
- module ParamsReady
31
- VERSION = '0.0.2'.freeze
32
-
33
- def self.gem_version
34
- ::Gem::Version.new(VERSION)
35
- end
36
- end
28
+ require_relative 'params_ready/version'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: params_ready
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas Milsimer
@@ -31,7 +31,7 @@ dependencies:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '6'
34
- type: :development
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
@@ -66,9 +66,52 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.9'
69
- description: "Create well defined controller interfaces. Preprocess, coerce and constrain
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest-rg
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '5'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '5'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.20'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.20'
97
+ - !ruby/object:Gem::Dependency
98
+ name: sqlite3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1'
111
+ description: "Create well defined controller interfaces. Sanitize, coerce and constrain
70
112
  \nincoming parameters to safely populate data models, hold session state in URI
71
- variables \nacross different locations, build SQL queries.\n"
113
+ variables \nacross different locations, build SQL queries, apply ordering and offset/keyset
114
+ pagination.\n"
72
115
  email: tomas.milsimer@protonmail.com
73
116
  executables: []
74
117
  extensions: []
@@ -89,8 +132,10 @@ files:
89
132
  - lib/params_ready/extensions/undefined.rb
90
133
  - lib/params_ready/format.rb
91
134
  - lib/params_ready/helpers/arel_builder.rb
135
+ - lib/params_ready/helpers/callable.rb
92
136
  - lib/params_ready/helpers/conditional_block.rb
93
137
  - lib/params_ready/helpers/find_in_hash.rb
138
+ - lib/params_ready/helpers/interface_definer.rb
94
139
  - lib/params_ready/helpers/key_map.rb
95
140
  - lib/params_ready/helpers/memo.rb
96
141
  - lib/params_ready/helpers/options.rb
@@ -107,10 +152,10 @@ files:
107
152
  - lib/params_ready/marshaller/builder_module.rb
108
153
  - lib/params_ready/marshaller/collection.rb
109
154
  - lib/params_ready/marshaller/definition_module.rb
110
- - lib/params_ready/marshaller/hash_marshallers.rb
111
- - lib/params_ready/marshaller/hash_set_marshallers.rb
155
+ - lib/params_ready/marshaller/enum_set_marshallers.rb
112
156
  - lib/params_ready/marshaller/parameter_module.rb
113
157
  - lib/params_ready/marshaller/polymorph_marshallers.rb
158
+ - lib/params_ready/marshaller/struct_marshallers.rb
114
159
  - lib/params_ready/marshaller/tuple_marshallers.rb
115
160
  - lib/params_ready/ordering/column.rb
116
161
  - lib/params_ready/ordering/ordering.rb
@@ -123,14 +168,14 @@ files:
123
168
  - lib/params_ready/pagination/nulls.rb
124
169
  - lib/params_ready/pagination/offset_pagination.rb
125
170
  - lib/params_ready/pagination/tendency.rb
126
- - lib/params_ready/parameter/abstract_hash_parameter.rb
171
+ - lib/params_ready/parameter/abstract_struct_parameter.rb
127
172
  - lib/params_ready/parameter/array_parameter.rb
128
173
  - lib/params_ready/parameter/definition.rb
129
- - lib/params_ready/parameter/hash_parameter.rb
130
- - lib/params_ready/parameter/hash_set_parameter.rb
174
+ - lib/params_ready/parameter/enum_set_parameter.rb
131
175
  - lib/params_ready/parameter/parameter.rb
132
176
  - lib/params_ready/parameter/polymorph_parameter.rb
133
177
  - lib/params_ready/parameter/state.rb
178
+ - lib/params_ready/parameter/struct_parameter.rb
134
179
  - lib/params_ready/parameter/tuple_parameter.rb
135
180
  - lib/params_ready/parameter/value_parameter.rb
136
181
  - lib/params_ready/parameter_definer.rb
@@ -155,6 +200,7 @@ files:
155
200
  - lib/params_ready/value/constraint.rb
156
201
  - lib/params_ready/value/custom.rb
157
202
  - lib/params_ready/value/validator.rb
203
+ - lib/params_ready/version.rb
158
204
  homepage: https://github.com/lame-impala/params_ready
159
205
  licenses:
160
206
  - MIT
@@ -174,7 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
174
220
  - !ruby/object:Gem::Version
175
221
  version: '0'
176
222
  requirements: []
177
- rubygems_version: 3.1.2
223
+ rubygems_version: 3.1.4
178
224
  signing_key:
179
225
  specification_version: 4
180
226
  summary: Define controller interfaces in Rails