Sha256: 5a93b08a89557e588c3a474390b3d2e201bdc892473ca04698494178a54b503f

Contents?: true

Size: 790 Bytes

Versions: 1

Compression:

Stored size: 790 Bytes

Contents

module DiviningRod
  class Profile

    attr_reader :match

    def initialize(request)
      @request = request.clone #Lets not mess with the real one
      @match = DiviningRod::Mappings.evaluate(request)
    end

    def format
      if @match && @match.format
        @match.format
      else
        @request.format
      end
    end

    def recognized?
      @match != DiviningRod::Mappings.root_definition
    end

    def method_missing(meth)
      if meth.to_s.match(/(.+)\?$/)
        tag = $1
        if @match
          @match.tags.include?(tag.to_s) ||  @match.tags.include?(tag.to_sym) || @match.tags == tag
        else
          false
        end
      elsif @match.opts.include?(meth.to_sym)
        @match.opts[meth]
      else
        super
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
divining_rod-0.4.0 lib/divining_rod/profile.rb