hal_decorator 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
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