Sha256: 2c8c507663254b85e764872757931fe865ea71f35476f72d46cc1dd6b1fdc3ee

Contents?: true

Size: 1.06 KB

Versions: 6

Compression:

Stored size: 1.06 KB

Contents

module Nyara
  class RouteEntry
    REQUIRED_ATTRS = [:http_method, :scope, :prefix, :suffix, :controller, :id, :conv]
    attr_accessor *REQUIRED_ATTRS

    # optional
    attr_accessor :accept_exts, :accept_mimes

    # tmp
    attr_accessor :path, :blk

    def initialize &p
      instance_eval &p if p
    end

    def set_accept_exts a
      @accept_exts = {}
      @accept_mimes = []
      if a
        a.each do |e|
          e = e.to_s.dup.freeze
          @accept_exts[e] = true
          if MIME_TYPES[e]
            v1, v2 = MIME_TYPES[e].split('/')
            raise "bad mime type: #{MIME_TYPES[e].inspect}" if v1.nil? or v2.nil?
            @accept_mimes << [v1, v2, e]
          end
        end
      end
      @accept_mimes = nil if @accept_mimes.empty?
      @accept_exts = nil if @accept_exts.empty?
    end

    def validate
      REQUIRED_ATTRS.each do |attr|
        unless instance_variable_get("@#{attr}")
          raise ArgumentError, "missing #{attr}"
        end
      end
      raise ArgumentError, "id must be symbol" unless id.is_a?(Symbol)
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
nyara-0.0.1.pre.5 lib/nyara/route_entry.rb
nyara-0.0.1.pre.4 lib/nyara/route_entry.rb
nyara-0.0.1.pre.3 lib/nyara/route_entry.rb
nyara-0.0.1.pre.2 lib/nyara/route_entry.rb
nyara-0.0.1.pre.1 lib/nyara/route_entry.rb
nyara-0.0.1.pre lib/nyara/route_entry.rb