Sha256: cac9c32bf1c8bc89e9add98fa471419e5b52853852cc48026a42b25bfc383fc6

Contents?: true

Size: 828 Bytes

Versions: 9

Compression:

Stored size: 828 Bytes

Contents

require 'betterdocs/dsl/naming'

class Betterdocs::Dsl::JsonParams::Param < Betterdocs::Dsl::Representer
  extend Tins::DSLAccessor
  include Betterdocs::Dsl::Common
  include Betterdocs::Dsl::Naming

  dsl_accessor :description, 'TODO'

  dsl_accessor :value, 'TODO'

  dsl_accessor :types do [] end

  dsl_accessor :required, true

  def initialize(representer, name, options, &block)
    super
    types Betterdocs::Dsl::JsonTypeMapper.map_types(types)
  end

  def assign(result, object)
    assign?(object) or return
    result[name] = compute_value(object)
  end

  def compute_value(object)
    value = object.__send__(name)
    if ActiveSupport::TimeWithZone === value
      value.extend Betterdocs::JsonTimeWithZone
    end
    value
  end

  def add_to_collector(collector)
    collector.params[name] = self
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
betterdocs-0.6.7 lib/betterdocs/dsl/json_params/param.rb
betterdocs-0.6.6 lib/betterdocs/dsl/json_params/param.rb
betterdocs-0.6.5 lib/betterdocs/dsl/json_params/param.rb
betterdocs-0.6.4 lib/betterdocs/dsl/json_params/param.rb
betterdocs-0.6.3 lib/betterdocs/dsl/json_params/param.rb
betterdocs-0.6.2 lib/betterdocs/dsl/json_params/param.rb
betterdocs-0.6.1 lib/betterdocs/dsl/json_params/param.rb
betterdocs-0.6.0 lib/betterdocs/dsl/json_params/param.rb
betterdocs-0.5.0 lib/betterdocs/dsl/json_params/param.rb