stannum 0.2.0 → 0.4.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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +49 -0
  3. data/README.md +130 -1200
  4. data/config/locales/en.rb +4 -0
  5. data/lib/stannum/association.rb +293 -0
  6. data/lib/stannum/associations/many.rb +250 -0
  7. data/lib/stannum/associations/one.rb +106 -0
  8. data/lib/stannum/associations.rb +11 -0
  9. data/lib/stannum/attribute.rb +86 -8
  10. data/lib/stannum/constraints/base.rb +3 -5
  11. data/lib/stannum/constraints/enum.rb +1 -1
  12. data/lib/stannum/constraints/equality.rb +1 -1
  13. data/lib/stannum/constraints/format.rb +72 -0
  14. data/lib/stannum/constraints/hashes/extra_keys.rb +13 -13
  15. data/lib/stannum/constraints/hashes/indifferent_extra_keys.rb +47 -0
  16. data/lib/stannum/constraints/hashes.rb +6 -2
  17. data/lib/stannum/constraints/identity.rb +1 -1
  18. data/lib/stannum/constraints/properties/base.rb +124 -0
  19. data/lib/stannum/constraints/properties/do_not_match_property.rb +117 -0
  20. data/lib/stannum/constraints/properties/match_property.rb +117 -0
  21. data/lib/stannum/constraints/properties/matching.rb +112 -0
  22. data/lib/stannum/constraints/properties.rb +17 -0
  23. data/lib/stannum/constraints/signature.rb +2 -2
  24. data/lib/stannum/constraints/tuples/extra_items.rb +6 -6
  25. data/lib/stannum/constraints/type.rb +4 -4
  26. data/lib/stannum/constraints/types/array_type.rb +2 -2
  27. data/lib/stannum/constraints/types/hash_type.rb +4 -4
  28. data/lib/stannum/constraints/union.rb +1 -1
  29. data/lib/stannum/constraints/uuid.rb +30 -0
  30. data/lib/stannum/constraints.rb +3 -0
  31. data/lib/stannum/contract.rb +7 -7
  32. data/lib/stannum/contracts/array_contract.rb +2 -7
  33. data/lib/stannum/contracts/base.rb +15 -15
  34. data/lib/stannum/contracts/builder.rb +15 -4
  35. data/lib/stannum/contracts/hash_contract.rb +3 -9
  36. data/lib/stannum/contracts/indifferent_hash_contract.rb +15 -2
  37. data/lib/stannum/contracts/map_contract.rb +6 -10
  38. data/lib/stannum/contracts/parameters/arguments_contract.rb +1 -1
  39. data/lib/stannum/contracts/parameters/keywords_contract.rb +1 -1
  40. data/lib/stannum/contracts/parameters/signature_contract.rb +1 -1
  41. data/lib/stannum/contracts/parameters_contract.rb +4 -4
  42. data/lib/stannum/contracts/tuple_contract.rb +6 -6
  43. data/lib/stannum/entities/associations.rb +451 -0
  44. data/lib/stannum/entities/attributes.rb +316 -0
  45. data/lib/stannum/entities/constraints.rb +178 -0
  46. data/lib/stannum/entities/primary_key.rb +148 -0
  47. data/lib/stannum/entities/properties.rb +208 -0
  48. data/lib/stannum/entities.rb +16 -0
  49. data/lib/stannum/entity.rb +87 -0
  50. data/lib/stannum/errors.rb +12 -16
  51. data/lib/stannum/messages/default_strategy.rb +2 -2
  52. data/lib/stannum/parameter_validation.rb +10 -10
  53. data/lib/stannum/rspec/match_errors_matcher.rb +7 -7
  54. data/lib/stannum/rspec/validate_parameter.rb +2 -2
  55. data/lib/stannum/rspec/validate_parameter_matcher.rb +22 -20
  56. data/lib/stannum/schema.rb +117 -76
  57. data/lib/stannum/struct.rb +12 -346
  58. data/lib/stannum/support/optional.rb +1 -1
  59. data/lib/stannum/version.rb +4 -4
  60. data/lib/stannum.rb +6 -0
  61. metadata +26 -85
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stannum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob "Merlin" Smith
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2021-10-19 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: sleeping_king_studios-tools
@@ -16,90 +15,14 @@ dependencies:
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: '1.0'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 1.0.2
18
+ version: '1.1'
23
19
  type: :runtime
24
20
  prerelease: false
25
21
  version_requirements: !ruby/object:Gem::Requirement
26
22
  requirements:
27
23
  - - "~>"
28
24
  - !ruby/object:Gem::Version
29
- version: '1.0'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 1.0.2
33
- - !ruby/object:Gem::Dependency
34
- name: rspec
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '3.10'
40
- type: :development
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '3.10'
47
- - !ruby/object:Gem::Dependency
48
- name: rspec-sleeping_king_studios
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '2.6'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '2.6'
61
- - !ruby/object:Gem::Dependency
62
- name: rubocop
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '1.18'
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '1.18'
75
- - !ruby/object:Gem::Dependency
76
- name: rubocop-rspec
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '2.4'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '2.4'
89
- - !ruby/object:Gem::Dependency
90
- name: simplecov
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '0.21'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '0.21'
25
+ version: '1.1'
103
26
  description: |-
104
27
  A focused library for specifying and validating data structures. Stannum
105
28
  provides tools to define data schemas for domain objects, method arguments,
@@ -118,6 +41,10 @@ files:
118
41
  - README.md
119
42
  - config/locales/en.rb
120
43
  - lib/stannum.rb
44
+ - lib/stannum/association.rb
45
+ - lib/stannum/associations.rb
46
+ - lib/stannum/associations/many.rb
47
+ - lib/stannum/associations/one.rb
121
48
  - lib/stannum/attribute.rb
122
49
  - lib/stannum/constraint.rb
123
50
  - lib/stannum/constraints.rb
@@ -128,8 +55,10 @@ files:
128
55
  - lib/stannum/constraints/delegator.rb
129
56
  - lib/stannum/constraints/enum.rb
130
57
  - lib/stannum/constraints/equality.rb
58
+ - lib/stannum/constraints/format.rb
131
59
  - lib/stannum/constraints/hashes.rb
132
60
  - lib/stannum/constraints/hashes/extra_keys.rb
61
+ - lib/stannum/constraints/hashes/indifferent_extra_keys.rb
133
62
  - lib/stannum/constraints/hashes/indifferent_key.rb
134
63
  - lib/stannum/constraints/identity.rb
135
64
  - lib/stannum/constraints/nothing.rb
@@ -137,6 +66,11 @@ files:
137
66
  - lib/stannum/constraints/parameters/extra_arguments.rb
138
67
  - lib/stannum/constraints/parameters/extra_keywords.rb
139
68
  - lib/stannum/constraints/presence.rb
69
+ - lib/stannum/constraints/properties.rb
70
+ - lib/stannum/constraints/properties/base.rb
71
+ - lib/stannum/constraints/properties/do_not_match_property.rb
72
+ - lib/stannum/constraints/properties/match_property.rb
73
+ - lib/stannum/constraints/properties/matching.rb
140
74
  - lib/stannum/constraints/signature.rb
141
75
  - lib/stannum/constraints/signatures.rb
142
76
  - lib/stannum/constraints/signatures/map.rb
@@ -161,6 +95,7 @@ files:
161
95
  - lib/stannum/constraints/types/symbol_type.rb
162
96
  - lib/stannum/constraints/types/time_type.rb
163
97
  - lib/stannum/constraints/union.rb
98
+ - lib/stannum/constraints/uuid.rb
164
99
  - lib/stannum/contract.rb
165
100
  - lib/stannum/contracts.rb
166
101
  - lib/stannum/contracts/array_contract.rb
@@ -176,6 +111,13 @@ files:
176
111
  - lib/stannum/contracts/parameters/signature_contract.rb
177
112
  - lib/stannum/contracts/parameters_contract.rb
178
113
  - lib/stannum/contracts/tuple_contract.rb
114
+ - lib/stannum/entities.rb
115
+ - lib/stannum/entities/associations.rb
116
+ - lib/stannum/entities/attributes.rb
117
+ - lib/stannum/entities/constraints.rb
118
+ - lib/stannum/entities/primary_key.rb
119
+ - lib/stannum/entities/properties.rb
120
+ - lib/stannum/entity.rb
179
121
  - lib/stannum/errors.rb
180
122
  - lib/stannum/messages.rb
181
123
  - lib/stannum/messages/default_loader.rb
@@ -198,7 +140,7 @@ licenses:
198
140
  metadata:
199
141
  bug_tracker_uri: https://github.com/sleepingkingstudios/stannum/issues
200
142
  source_code_uri: https://github.com/sleepingkingstudios/stannum
201
- post_install_message:
143
+ rubygems_mfa_required: 'true'
202
144
  rdoc_options: []
203
145
  require_paths:
204
146
  - lib
@@ -206,15 +148,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
206
148
  requirements:
207
149
  - - ">="
208
150
  - !ruby/object:Gem::Version
209
- version: '2.6'
151
+ version: '3.1'
210
152
  required_rubygems_version: !ruby/object:Gem::Requirement
211
153
  requirements:
212
154
  - - ">="
213
155
  - !ruby/object:Gem::Version
214
156
  version: '0'
215
157
  requirements: []
216
- rubygems_version: 3.1.4
217
- signing_key:
158
+ rubygems_version: 3.6.9
218
159
  specification_version: 4
219
160
  summary: A library for specifying and validating data structures.
220
161
  test_files: []