Sha256: 572abc61a885f5a7c3cdb632ed229ce018dfaf336a9ddd0cefe82535fc7aa1be

Contents?: true

Size: 866 Bytes

Versions: 2

Compression:

Stored size: 866 Bytes

Contents

require "whitelist_scope/version"

module WhitelistScope
  attr_reader :whitelist

  def whitelist_scope(name, body)
    @whitelist ||= []
    name = name.to_sym

    if self.respond_to?(name)
      raise ArgumentError, "Could not create scope, There is an existing method with this name."
    end

    scope name, body
    @whitelist << name
  end

  def call_whitelisted_scope(*scope_names)
    scope_results = nil

    scope_names.flatten.each do |scope_name|
      scope_name = scope_name.to_sym unless scope_name == nil

      if @whitelist.include? scope_name
        if scope_results
          scope_results = scope_results.send(scope_name)
        else
          scope_results = self.send(scope_name)
        end
      else
        raise NoMethodError, "The scope you provided, '#{scope_name}', does not exist."
      end
    end
    scope_results
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
whitelist_scope-0.1.2 lib/whitelist_scope.rb
whitelist_scope-0.1.1 lib/whitelist_scope.rb