module HALPresenter::Policy::DSL

Attributes

current_user[R]
options[R]
resource[R]

Public Class Methods

included(mod) click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 43
def self.included(mod)
  mod.extend(ClassMethods)
end
new(current_user, resource, options = {}) click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 47
def initialize(current_user, resource, options = {})
  @current_user = current_user
  @resource = resource
  @options = options
end

Public Instance Methods

attribute?(name) click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 53
def attribute?(name)
  __check __rules.attribute_rule_for(name)
end
embed?(name) click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 62
def embed?(name)
  __check __rules.embed_rule_for(name)
end

Private Instance Methods

__check(block) click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 95
def __check(block)
  !!instance_eval(&block)
end
__rules() click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 91
def __rules
  self.class.rules
end
delegate_attribute(policy_class, attr, **opts) click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 70
def delegate_attribute(policy_class, attr, **opts)
  delegate_to(policy_class, :attribute?, args: attr, **opts)
end
delegate_embed(policy_class, rel, **opts) click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 78
def delegate_embed(policy_class, rel, **opts)
  delegate_to(policy_class, :embed?, args: rel, **opts)
end
delegate_to(policy_class, method, resource: nil, args: nil, **opts) click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 82
def delegate_to(policy_class, method, resource: nil, args: nil, **opts)
  resource ||= send(:resource)
  opts = options.merge(opts)
  policy = policy_class.new(current_user, resource, opts)
  args = Array(args)
  args.unshift(method)
  policy.send(*args)
end