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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 74ab0240c5b4e242ba1f5dd6deb9724bb32ee6f310fbda553a2e0962fdfa7259
4
- data.tar.gz: e2eac42708bd5b00dbd9a633ab8a9ecd13d4198a34754cd3149349a2d34c267d
3
+ metadata.gz: ae5716e2981afb94500df0ae1fdd297e6bb6fec528a1b68160e265bdb942fb1e
4
+ data.tar.gz: 1938e21fd43868841f731fff93662f8dab44785de96fdf936e5e5eda159465e2
5
5
  SHA512:
6
- metadata.gz: f2fd1eada7dd26a9fa0f62a93b59c781c89d0aa638efe27869f45d1421fdf2e83a50bcd2c75ed86e4e3350907c00c86f499c4663a93082c599e38147a8ea39a7
7
- data.tar.gz: 33060d922ae97025d104e372f1d42e6616bc30f03156eff19c904e407c9b4db56475d6acad7ff322edba6949616a163c3817c60cc7a539ef4d631a4a389bc99a
6
+ metadata.gz: 48d41130e4610c0860c86cfdcec98bd69e178df6f9d5975d4e7df6c528222c35e55d543d6f066529cbda2689fe54ab2ce7c0cf0e67682e377b10c417a44837f0
7
+ data.tar.gz: 7188256e955ad7c16bee2b690ce1d8324690b1fad7b1fcf8442d0b6250d8216cd06ea967b1a7e96a4e3082ef900c2ac35952ed6c3319bc5f3f981ed9189403aa
data/CHANGELOG.md CHANGED
@@ -1,9 +1,58 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.0
4
+
5
+ Published YARD documentation.
6
+
7
+ ### Constraints
8
+
9
+ - Implemented `Stannum::Constraints::Format`
10
+ - Implemented `Stannum::Constraints::Uuid`
11
+
12
+ ### Entities
13
+
14
+ - Added support for default blocks to `Stannum::Entities::Attributes`.
15
+ - Refactored `Stannum::Schema`. **Note:** This change is not backwards-compatible.
16
+
17
+ #### Associations
18
+
19
+ - Added support for one-to-one and one-to-many associations.
20
+ - Added support for association foreign keys.
21
+ - Added support for inverse associations.
22
+
23
+ #### Primary Keys
24
+
25
+ - Implemented `Stannum::Entities::PrimaryKey`.
26
+
27
+ ## 0.3.0
28
+
29
+ ### Constraints
30
+
31
+ - Implemented `Stannum::Constraints::Properties::MatchProperty`
32
+ - Implemented `Stannum::Constraints::Properties::DoNotMatchProperty`
33
+
34
+ ### Contracts
35
+
36
+ - Added `#concat` to `Stannum::Contracts::Builder`.
37
+
38
+ ### Entities
39
+
40
+ Implemented `Stannum::Entity`, a replacement for the existing `Stannum::Struct`.
41
+
42
+ Entities are largely identical to structs, except for the constructor signature - entities require properties to be passed as keyword parameters, rather than as an attributes hash. Entities (and now Structs) are defined using composable modules.
43
+
44
+ - Implemented `Stannum::Entities::Attributes`.
45
+ - Implemented `Stannum::Entities::Constraints`.
46
+ - Implemented `Stannum::Entities::Properties`.
47
+
48
+ `Stannum::Struct` is now deprecated, and will be removed in a future release.
49
+
3
50
  ## 0.2.0
4
51
 
5
52
  ### Constraints
6
53
 
54
+ #### Parameter Constraints
55
+
7
56
  - Implemented `Stannum::Constraints::Parameters::ExtraArguments`
8
57
  - Implemented `Stannum::Constraints::Parameters::ExtraKeywords`
9
58