Sha256: 5f0789d16a98d83f8d8551bc2215db1095aaddee346007bca4d6adb11ad8ee66

Contents?: true

Size: 806 Bytes

Versions: 6

Compression:

Stored size: 806 Bytes

Contents

module Trestle
  class Scopes
    class Block
      attr_reader :block, :admin

      def initialize(admin=nil, &block)
        @admin = admin
        @block = block
      end

      def scopes(context)
        context = Evaluator.new(@admin, context)
        context.instance_exec(@admin, &block)
        context.scopes
      end

      class Evaluator
        include EvaluationContext

        attr_reader :scopes

        def initialize(admin, context=nil)
          @admin, @context = admin, context
          @scopes = []
        end

        def scope(name, scope=nil, options={}, &block)
          if scope.is_a?(Hash)
            options = scope
            scope = nil
          end

          scopes << Scope.new(@admin, name, options, &(scope || block))
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
trestle-0.9.3 lib/trestle/scopes/block.rb
trestle-0.9.2 lib/trestle/scopes/block.rb
trestle-0.9.1 lib/trestle/scopes/block.rb
trestle-0.9.0 lib/trestle/scopes/block.rb
trestle-0.8.13 lib/trestle/scopes/block.rb
trestle-0.8.12 lib/trestle/scopes/block.rb