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 +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
|