hal_presenter 1.5.1 → 1.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 403e79978e056d4f350ac5ec339bb1db0c3b080ff5a1cc53767c807ecddea490
4
- data.tar.gz: c1910ed9afb1976f13f988a0732ce785343bd1b12ccc3ca3ea164402a09420c5
3
+ metadata.gz: af641721e6b137d280c31c60efc6b76e7e1a22dd441a9b65aee3b929954290ec
4
+ data.tar.gz: 784293b830aeed98f2f1ac1157b0526a8febe8ccbbe40a54dcee85acb8111294
5
5
  SHA512:
6
- metadata.gz: 0da13bd2e8c5c6809ddd5e61f0774473ff556ef9b8ab58890d5609d808717ef458b01e85a93af1f964789800496d0e6aab119c8b355a262c32ad2485f691f34a
7
- data.tar.gz: af582f322a79eb338153e2ddf914b22f33304aea63e93cc53d603f6da0e2391acaeb1ab71708f1c77e7dc5ca9f3703787f054b55a8c5c46a3a3545c4424c768f
6
+ metadata.gz: 829846a3e6a6d86e537817585ccfdc929efc758cf9a748b73c4a9c5d54d0760f8735301a7606a90d6279c2dba9efd1b3b9998a646c336a1656628f42ba779c56
7
+ data.tar.gz: fd10fbc76409d2b1738b2e5abdd75ba68e6a34592ae6b7ed56f2fcac0f83079eba33b524704de4c29ff168040147e89d82fc0466746049c84b4f1df87bafaaeb
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1,61 +1,13 @@
1
+ require 'hal_presenter/policy/rules'
2
+
1
3
  module HALPresenter
2
4
  module Policy
3
5
  module DSL
4
- class Rules
5
- DEFAULT_PROC = Proc.new { false }
6
-
7
- def attributes
8
- @attributes ||= Hash.new(DEFAULT_PROC)
9
- end
10
-
11
- def links
12
- @links ||= Hash.new(DEFAULT_PROC)
13
- end
14
-
15
- def embedded
16
- @embedded ||= Hash.new(DEFAULT_PROC)
17
- end
18
-
19
- private :attributes, :links, :embedded
20
-
21
- def defaults(*types, value: false)
22
- types.each do |t|
23
- send(t).default= Proc.new { value }
24
- end
25
- end
26
-
27
- def attribute_rule_for(name)
28
- attributes[name]
29
- end
30
-
31
- def add_attribute(name, block)
32
- attributes[name] = block
33
- end
34
-
35
- def link_rule_for(rel)
36
- return links[rel] if links.key? rel
37
- links[strip_curie(rel)]
38
- end
39
-
40
- def add_link(rel, block)
41
- links[rel] = block
42
- end
43
-
44
- def embed_rule_for(name)
45
- return embedded[name] if embedded.key? name
46
- embedded[strip_curie(name)]
47
- end
48
-
49
- def add_embed(name, block)
50
- embedded[name] = block
6
+ module ClassMethods
7
+ def inherited(child)
8
+ child.instance_variable_set(:@rules, rules.dup)
51
9
  end
52
10
 
53
- def strip_curie(rel)
54
- rel.to_s.split(':', 2)[1]&.to_sym
55
- end
56
- end
57
-
58
- module ClassMethods
59
11
  def allow_by_default(*types)
60
12
  rules.defaults(*types, value: true)
61
13
  end
@@ -78,6 +30,14 @@ module HALPresenter
78
30
  def rules
79
31
  @rules ||= Rules.new
80
32
  end
33
+
34
+ def no_transform_rels
35
+ rules.transform_rels = false
36
+ end
37
+
38
+ def transform_rels(value = true)
39
+ rules.transform_rels = !!value
40
+ end
81
41
  end
82
42
 
83
43
  def self.included(mod)
@@ -135,7 +95,6 @@ module HALPresenter
135
95
  def __check(block)
136
96
  !!instance_eval(&block)
137
97
  end
138
-
139
98
  end
140
99
  end
141
100
  end
@@ -0,0 +1,87 @@
1
+ module HALPresenter
2
+ module Policy
3
+ class Rules
4
+ DEFAULT_PROC = Proc.new { false }
5
+
6
+ attr_accessor :transform_rels
7
+
8
+ def initialize
9
+ @transform_rels = true
10
+ end
11
+
12
+ def dup
13
+ super.tap do |copy|
14
+ copy.instance_variable_set(:@attributes, attributes.dup)
15
+ copy.instance_variable_set(:@links, links.dup)
16
+ copy.instance_variable_set(:@embedded, embedded.dup)
17
+ end
18
+ end
19
+
20
+ def defaults(*types, value: false)
21
+ types.each do |t|
22
+ send(t).default= Proc.new { value }
23
+ end
24
+ end
25
+
26
+ def attribute_rule_for(name)
27
+ attributes[name]
28
+ end
29
+
30
+ def add_attribute(name, block)
31
+ attributes[name] = block
32
+ end
33
+
34
+ def link_rule_for(rel)
35
+ rel = transform(rel)
36
+ return links[rel] if links.key? rel
37
+
38
+ links[strip_curie(rel)]
39
+ end
40
+
41
+ def add_link(rel, block)
42
+ rel = transform(rel)
43
+ links[rel] = block
44
+ end
45
+
46
+ def embed_rule_for(name)
47
+ name = transform(name)
48
+ return embedded[name] if embedded.key? name
49
+
50
+ embedded[strip_curie(name)]
51
+ end
52
+
53
+ def add_embed(name, block)
54
+ name = transform(name)
55
+ embedded[name] = block
56
+ end
57
+
58
+ private
59
+
60
+ def attributes
61
+ @attributes ||= Hash.new(DEFAULT_PROC)
62
+ end
63
+
64
+ def links
65
+ @links ||= Hash.new(DEFAULT_PROC)
66
+ end
67
+
68
+ def embedded
69
+ @embedded ||= Hash.new(DEFAULT_PROC)
70
+ end
71
+
72
+ def strip_curie(rel)
73
+ rel.to_s.split(':', 2)[1]&.to_sym
74
+ end
75
+
76
+ def transform_rels?
77
+ @transform_rels
78
+ end
79
+
80
+ def transform(rel)
81
+ return rel unless transform_rels?
82
+
83
+ rel.to_s.tr('-', '_').to_sym
84
+ end
85
+ end
86
+ end
87
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hal_presenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sammy Henningsson
@@ -10,27 +10,26 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDXjCCAkagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFzYW1t
14
- eS5oZW5uaW5nc3Nvbi9EQz1nbWFpbC9EQz1jb20wHhcNMTgwNzE2MTYzNTMzWhcN
15
- MjAwNzE2MTYzNTMzWjAsMSowKAYDVQQDDCFzYW1teS5oZW5uaW5nc3Nvbi9EQz1n
16
- bWFpbC9EQz1jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvkgwt
17
- Zn8obnCelWttayB1BrHBLUK3b8gasRRtbNk4DzAL+EW6sHSVT2u5I7Wws7JQA5VB
18
- NaK7tgvq3CbDLVRl9NrpDCDx09To08stPxDKi6kst1nkSPAD8g0sQlW3voeQTH98
19
- 2Z2H3XUegHhu5Z9PU9T/7V/vZUzHPiPg1tX1JUIGOPAjVGsr7SUetbL171zK4S4Y
20
- tvUkIoNaph+maHttvyYB/ptiZLD53WORKd4Knw3OiJsLtrxr5hhKyQ+txQdF0P8G
21
- +FlR+Je7B0Ek3yg6fEiJgrdcajYCMo8Oe/GRtoHhi6J3LsYA620P1BSCddZQ2XeL
22
- y3rzIZyMU0iaT69nAgMBAAGjgYowgYcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
23
- HQYDVR0OBBYEFLpI49QndnmuiDhwy2XtMps7No1pMCYGA1UdEQQfMB2BG3NhbW15
24
- Lmhlbm5pbmdzc29uQGdtYWlsLmNvbTAmBgNVHRIEHzAdgRtzYW1teS5oZW5uaW5n
25
- c3NvbkBnbWFpbC5jb20wDQYJKoZIhvcNAQELBQADggEBAFJZqH6sgeiTLvMLpxaK
26
- K1GaYSCyZbMutf5C3tIAgkmU5UD6B8R0bw6gTM1deM5NJ60LjzqY7rlK3YKDIbTn
27
- iXMCe9vd4yE/jb5Zi8Wk//9n8CMG68dQpBvmcQ58/M4gTtgsx+lIgXuI5dPQMmRi
28
- bhWQqqWqxT9X6njjfXFk4xn3z6mfFQNPAYqRVeTHUpXBQZPt+bYXRwHPFZGWkx4l
29
- BnuuhYKt3CR7YIgvnsQWlTAcU1Ipdayj6UfYqUtlc6cF3CL96NOx7mgZXV8URFiX
30
- ZMhjYR7sRczGJx+GxGU2EaR0bjRsPVlC4ywtFxoOfRG3WaJcpWGEoAoMJX6Z0bRv
31
- M40=
13
+ MIIDVjCCAj6gAwIBAgIBATANBgkqhkiG9w0BAQsFADAqMSgwJgYDVQQDDB9zYW1t
14
+ eS5oZW5uaW5nc3Nvbi9EQz1oZXkvREM9Y29tMB4XDTIwMDgwNDE4MTAyOVoXDTIx
15
+ MDgwNDE4MTAyOVowKjEoMCYGA1UEAwwfc2FtbXkuaGVubmluZ3Nzb24vREM9aGV5
16
+ L0RDPWNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK+SDC1mfyhu
17
+ cJ6Va21rIHUGscEtQrdvyBqxFG1s2TgPMAv4RbqwdJVPa7kjtbCzslADlUE1oru2
18
+ C+rcJsMtVGX02ukMIPHT1OjTyy0/EMqLqSy3WeRI8APyDSxCVbe+h5BMf3zZnYfd
19
+ dR6AeG7ln09T1P/tX+9lTMc+I+DW1fUlQgY48CNUayvtJR61svXvXMrhLhi29SQi
20
+ g1qmH6Zoe22/JgH+m2JksPndY5Ep3gqfDc6Imwu2vGvmGErJD63FB0XQ/wb4WVH4
21
+ l7sHQSTfKDp8SImCt1xqNgIyjw578ZG2geGLoncuxgDrbQ/UFIJ11lDZd4vLevMh
22
+ nIxTSJpPr2cCAwEAAaOBhjCBgzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNV
23
+ HQ4EFgQUukjj1Cd2ea6IOHDLZe0ymzs2jWkwJAYDVR0RBB0wG4EZc2FtbXkuaGVu
24
+ bmluZ3Nzb25AaGV5LmNvbTAkBgNVHRIEHTAbgRlzYW1teS5oZW5uaW5nc3NvbkBo
25
+ ZXkuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQAEtv48barHOksR+CEF+Nu5ZjzXksi0
26
+ rI2JMmuDTlQBw0/m79+Om1cPzBKKR7ODGytjQ7NAj9VWQcw8Oc/K4z63JbD13G3Y
27
+ 45/GTTCCae5YyO/g8BpkFeFwZTvJBwD1HQvMBjBi8WMk+Yr00EUoiLExuL0VSjJ9
28
+ grmwk+vA+68PWAkYOAkNOonQ6nT3UgmbK9XGoINSxHwn1Njxyw0dXsuZeaznJzhy
29
+ D4OCgJwXzne+Jeqc60ISM5a6/eFZGVyfI15X2fnxXXVrGu3EMnrgKuHxTNUfjaBL
30
+ Xs+28o/7SxG1CNyMq1HAmDvUPP3bMyzXTtVr61Kd2uyS1StS5s9XFedR
32
31
  -----END CERTIFICATE-----
33
- date: 2020-03-01 00:00:00.000000000 Z
32
+ date: 2020-08-04 00:00:00.000000000 Z
34
33
  dependencies:
35
34
  - !ruby/object:Gem::Dependency
36
35
  name: rake
@@ -155,7 +154,7 @@ dependencies:
155
154
  description: |
156
155
  A DSL for serializing resources according to
157
156
  HypertextApplicationLanguage.
158
- email: sammy.henningsson@gmail.com
157
+ email: sammy.henningsson@hey.com
159
158
  executables: []
160
159
  extensions: []
161
160
  extra_rdoc_files: []
@@ -174,6 +173,7 @@ files:
174
173
  - lib/hal_presenter/pagination.rb
175
174
  - lib/hal_presenter/policy.rb
176
175
  - lib/hal_presenter/policy/dsl.rb
176
+ - lib/hal_presenter/policy/rules.rb
177
177
  - lib/hal_presenter/profile.rb
178
178
  - lib/hal_presenter/property.rb
179
179
  - lib/hal_presenter/serialize_hooks.rb
metadata.gz.sig CHANGED
Binary file