summaryrefslogtreecommitdiff
path: root/lib/declarative_policy/delegate_dsl.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/declarative_policy/delegate_dsl.rb')
-rw-r--r--lib/declarative_policy/delegate_dsl.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/declarative_policy/delegate_dsl.rb b/lib/declarative_policy/delegate_dsl.rb
new file mode 100644
index 00000000000..f544dffe888
--- /dev/null
+++ b/lib/declarative_policy/delegate_dsl.rb
@@ -0,0 +1,16 @@
+module DeclarativePolicy
+ # Used when the name of a delegate is mentioned in
+ # the rule DSL.
+ class DelegateDsl
+ def initialize(rule_dsl, delegate_name)
+ @rule_dsl = rule_dsl
+ @delegate_name = delegate_name
+ end
+
+ def method_missing(m, *a, &b)
+ return super unless a.empty? && !block_given?
+
+ @rule_dsl.delegate(@delegate_name, m)
+ end
+ end
+end