hal_decorator 0.3.1 → 0.3.2

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
  SHA1:
3
- metadata.gz: 8343a995eb8b48575002dae6dd95cb7537403209
4
- data.tar.gz: c1547111bfdec4083e4fdd4048eba42b32a79e8d
3
+ metadata.gz: 20cc5f03079a6989647e7953904a8ccfb5ee8ade
4
+ data.tar.gz: 95a3fb328632d1d9bbaf46942f4591377374dc6b
5
5
  SHA512:
6
- metadata.gz: d168ffdf32bdb764797f3eb82b5145459976efeff5b8121a7485ea8eeea594b01439f9fc8270948d280e491c48361491f7da8a09e3a4f4e627a885fec59a2dc4
7
- data.tar.gz: 7f5217f70e6ef567590d423987c1b07e94ae23cee953f629c0084ba2c02bbab1147139998bff8d538959e120c6bca63eaea9526b731adeb7189011eddb458824
6
+ metadata.gz: e609c39dc84798b33a664ef4788b0ab46a8525516dc7fa635991139a08cb0fa2a0846407ec489e61b58dadbc5bbcd4cda4ca39a884cccfa15417b5ef60d01878
7
+ data.tar.gz: 1e783b6d2b101189972a4b2743824f9a94a90387cb05872019da8762ee1e91f0953d15e8e16dccda6400994bca6ceee57bfa285d39f50fa38aedfe303dc57ac8
checksums.yaml.gz.sig CHANGED
Binary file
@@ -2,26 +2,79 @@ module HALDecorator
2
2
  module Policy
3
3
  module DSL
4
4
 
5
+ class Rules
6
+
7
+ def attributes
8
+ @attributes ||= Hash.new(Proc.new { false })
9
+ end
10
+
11
+ def links
12
+ @links ||= Hash.new(Proc.new { false })
13
+ end
14
+
15
+ def embedded
16
+ @embedded ||= Hash.new(Proc.new { false })
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
+ links[rel]
37
+ end
38
+
39
+ def add_link(rel, block)
40
+ links[rel] = block
41
+ end
42
+
43
+ def embed_rule_for(name)
44
+ embedded[name]
45
+ end
46
+
47
+ def add_embed(name, block)
48
+ embedded[name] = block
49
+ end
50
+
51
+ end
52
+
5
53
  module ClassMethods
6
- attr_reader :rules
7
54
 
8
- def attribute(name, &block)
9
- @rules ||= {}
10
- @rules[:attributes] ||= {}
11
- @rules[:attributes][name] = block
55
+ def allow_by_default(*types)
56
+ rules.defaults(*types, value: true)
57
+ end
58
+
59
+ def attribute(name)
60
+ b = block_given? ? Proc.new : Proc.new { true }
61
+ rules.add_attribute(name, b)
12
62
  end
13
63
 
14
- def link(rel, &block)
15
- @rules ||= {}
16
- @rules[:links] ||= {}
17
- @rules[:links][rel] = block
64
+ def link(rel)
65
+ b = block_given? ? Proc.new : Proc.new { true }
66
+ rules.add_link(rel, b)
18
67
  end
19
68
 
20
- def embed(name, &block)
21
- @rules ||= {}
22
- @rules[:embeds] ||= {}
23
- @rules[:embeds][name] = block
69
+ def embed(name)
70
+ b = block_given? ? Proc.new : Proc.new { true }
71
+ rules.add_embed(name, b)
24
72
  end
73
+
74
+ def rules
75
+ @rules ||= Rules.new
76
+ end
77
+
25
78
  end
26
79
 
27
80
  def self.included(mod)
@@ -34,15 +87,15 @@ module HALDecorator
34
87
  end
35
88
 
36
89
  def attribute?(name)
37
- run self.class.rules&.dig(:attributes, name)
90
+ run self.class.rules.attribute_rule_for(name)
38
91
  end
39
92
 
40
93
  def link?(rel)
41
- run self.class.rules&.dig(:links, rel)
94
+ run self.class.rules.link_rule_for(rel)
42
95
  end
43
96
 
44
97
  def embed?(name)
45
- run self.class.rules&.dig(:embeds, name)
98
+ run self.class.rules.embed_rule_for(name)
46
99
  end
47
100
 
48
101
  private
@@ -50,7 +103,6 @@ module HALDecorator
50
103
  attr_reader :current_user, :resource
51
104
 
52
105
  def run(block)
53
- return false unless block && block.respond_to?(:call)
54
106
  instance_eval(&block) && true || false
55
107
  end
56
108
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hal_decorator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sammy Henningsson
metadata.gz.sig CHANGED
@@ -1,3 +1,3 @@
1
- ��`�\*��('>�#�s}��XL�:�BGԎ���ڠ���=ˈtùb�#�4�Zv$h%Q��{�!'�C�3V���T3�P��;�rf27�����ȼ����H<�
2
- �bc�“��������� 7a��Ȼu�atwYT���`Vfʍ>�G����#Ȁ�>�o9EPb�ne�������[�a
3
- ��3 7 FQUSEeR�����j��d����Kþ��,�?\��y LXxm�c���2�c;���
1
+ q�߁��[� ���9v%���Iϙi��`$ _�YZ�F�NE����;�Q�>�}�Py_�4�J��xq��4&��t 6%=ƣ�=C��"����x�]��̓�,8mqm
2
+ �=������ޑ� <�V��Ch��� mjK�=�+�_����8���1.��'����dr)
3
+ ܦ,`��1�����"Z��IDt��!!�E����ٳj�}~1����wr�x��,�m��%��MG\Ksa�|;NhnE6