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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/hal_decorator/policy/dsl.rb +69 -17
- data.tar.gz.sig +0 -0
- metadata +1 -1
- metadata.gz.sig +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 20cc5f03079a6989647e7953904a8ccfb5ee8ade
|
4
|
+
data.tar.gz: 95a3fb328632d1d9bbaf46942f4591377374dc6b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
9
|
-
|
10
|
-
|
11
|
-
|
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
|
15
|
-
|
16
|
-
|
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
|
21
|
-
|
22
|
-
|
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
|
90
|
+
run self.class.rules.attribute_rule_for(name)
|
38
91
|
end
|
39
92
|
|
40
93
|
def link?(rel)
|
41
|
-
run self.class.rules
|
94
|
+
run self.class.rules.link_rule_for(rel)
|
42
95
|
end
|
43
96
|
|
44
97
|
def embed?(name)
|
45
|
-
run self.class.rules
|
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
metadata.gz.sig
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
��
|
1
|
+
q�߁��[����9v%���Iϙi��`$ _�YZ�F�NE����;�Q�>�}�Py�_�4�J��x�q��4&��t 6%=ƣ�=C��"����x�]��̓�,8mqm
|
2
|
+
�=������ޑ� <�V��Ch��� mjK�=�+�_����8���1.��'����d�r)
|
3
|
+
ܦ,`��1�����"Z��I�Dt��!!�E����ٳj�}~1����w�r�x��,�m��%��MG\Ksa�|;NhnE6
|