Sha256: d21b3642afad7f2b82030d8309ae230af8187c00ad65196c19a736556ecc74ed

Contents?: true

Size: 925 Bytes

Versions: 4

Compression:

Stored size: 925 Bytes

Contents

require 'deas/url'
require 'deas/view_handler'

module Deas

  class RedirectProxy

    attr_reader :handler_class_name, :handler_class

    def initialize(path = nil, &block)
      @handler_class = Class.new do
        include Deas::ViewHandler

        def self.redirect_path; @redirect_path; end
        def self.redirect_path=(value)
          @redirect_path = value
        end

        def self.name; 'Deas::RedirectHandler'; end

        attr_reader :redirect_path

        def init!
          @redirect_path = self.instance_eval(&self.class.redirect_path)
        end

        def run!
          redirect @redirect_path
        end

      end

      @handler_class.redirect_path = if path.nil?
        block
      elsif path.kind_of?(Deas::Url)
        proc{ path.path_for(params) }
      else
        proc{ path }
      end
      @handler_class_name = @handler_class.name
    end

    def validate!; end

  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
deas-0.31.0 lib/deas/redirect_proxy.rb
deas-0.30.0 lib/deas/redirect_proxy.rb
deas-0.29.0 lib/deas/redirect_proxy.rb
deas-0.28.0 lib/deas/redirect_proxy.rb