Sha256: 0ea2b5a3cce1fc340546b0175e5cc429aed98ba773fdbb107fe5adb00a2391e3

Contents?: true

Size: 1.07 KB

Versions: 4

Compression:

Stored size: 1.07 KB

Contents

module Relax
  class Context
    attr_reader :parameters

    def initialize(parameters=[]) # :nodoc:
      @parameters = parameters
    end

    def evaluate(&block) # :nodoc:
      instance_eval(&block)
    end

    def parameter(name, options={})
      unless @parameters.find { |parameter| parameter.named?(name) }
        @parameters << Parameter.new(name, options)
      else
        raise ArgumentError.new("Duplicate parameter '#{name}'.")
      end
    end

    def set(name, value)
      if parameter = @parameters.find { |parameter| parameter.named?(name) }
        parameter.value = value
      end
    end

    def parser(root, options={}, &block) # :nodoc:
      @parser ||= begin
        if root.kind_of?(Class)
          root.new(options, &block)
        else
          Relief::Parser.new(root, options, &block)
        end
      end
    end

    def parse(response) # :nodoc:
      @parser.parse(response)
    end

    def clone # :nodoc:
      cloned_parameters = @parameters.collect { |parameter| parameter.clone }
      self.class.new(cloned_parameters)
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
tylerhunt-relax-0.1.2 lib/relax/context.rb
tylerhunt-relax-0.1.3 lib/relax/context.rb
relax-0.1.3 lib/relax/context.rb
relax-0.1.2 lib/relax/context.rb