Sha256: be1dfa50f8be3bcad9529d1fa943dd8db61a86e5fc6183a1eca80bdb1c9f36be

Contents?: true

Size: 1008 Bytes

Versions: 18

Compression:

Stored size: 1008 Bytes

Contents

# -*- encoding : utf-8 -*-
module Dao
  class Params < ::Map
  # mixins
  #
    include Validations

  # class methods
  #
    class << Params
    end

  # instance methods
  #
    attr_accessor :path
    attr_accessor :route
    attr_accessor :form

    def initialize(*args, &block)
      options = Dao.options_for!(args)

      @path = args.shift || options[:path] || Path.default
      @route = options[:route] || Route.default
      @form = options[:form] || Form.for(self)

      update(options[:params]) if options[:params]

      super
    end

    def attributes
      self
    end

    fattr(:name){ path }

  # look good for inspect
  #
    def inspect
      Dao.json_for(self)
    end

  # support updates with dao-ish objects
  #
    add_conversion_method!(:to_dao)
    add_conversion_method!(:as_dao)

    def update(*args, &block)
      if args.size==1 and args.first.respond_to?(:to_dao)
        to_dao = args.first.to_dao
        return super(to_dao)
      end
      super
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
dao-8.0.1 lib/dao/params.rb
dao-8.0.0 lib/dao/params.rb
dao-7.0.0 lib/dao/params.rb
dao-5.6.1 lib/dao/params.rb
dao-5.5.2 lib/dao/params.rb
dao-5.5.1 lib/dao/params.rb
dao-5.5.0 lib/dao/params.rb
dao-5.4.0 lib/dao/params.rb
dao-5.3.3 lib/dao/params.rb
dao-5.3.2 lib/dao/params.rb
dao-5.3.0 lib/dao/params.rb
dao-5.2.1 lib/dao/params.rb
dao-5.1.2 lib/dao/params.rb
dao-5.1.1 lib/dao/params.rb
dao-5.0.0 lib/dao/params.rb
dao-4.6.4 lib/dao/params.rb
dao-4.4.4 lib/dao/params.rb
dao-4.4.2 lib/dao/params.rb