module Dsl::Scopes

Public Class Methods

new(params, resource = nil, options = {}) click to toggle source
Calls superclass method
# File lib/dsl/scopes.rb, line 23
def self.new(params, resource = nil, options = {})
  if options[:scope].present?
    class_to_call = "::#{name}Scope#{options[:scope].capitalize}".constantize rescue raise(ActiveFormObjects::DslError, "[#{name}] No scope named #{options[:scope]} found")
    return class_to_call.new(params, resource)
  end

  super(params, resource)
end
scope(*params, &block) click to toggle source
# File lib/dsl/scopes.rb, line 14
def self.scope(*params, &block)
  raise(ActiveFormObjects::DslError, "[#{name}] scope must be a bloc") if block.nil? || !block.respond_to?(:call)

  params.each do |param|
    block_content = Ruby2Ruby.new.process(RubyParser.new.process(block.source).to_a.last)
    eval("class ::#{name}Scope#{param.capitalize} < #{name} ; #{block_content}; end")
  end
end