Sha256: 7c3b8a81499f7d200ea0094cfcca8b2d747ea7a19b3b665d4f3d8f643cedb16d

Contents?: true

Size: 730 Bytes

Versions: 8

Compression:

Stored size: 730 Bytes

Contents

# TODO: allow default: -> for hashes, etc.
module Disposable::Twin::Default
  def setup_value_for(dfn, options)
    value = super
    return value unless value.nil?
    default_for(dfn, options)
  end

  def default_for(dfn, options)
    # TODO: introduce Null object in Declarative::Definition#[].
    # dfn[:default].(self) # dfn#[] should return a Null object here if empty.
    return unless dfn[:default]
    dfn[:default].(self)
  end

  module ClassMethods
  private
    def build_definition(name, options={}, &block)
      options = options.merge(default: Uber::Options::Value.new(options[:default])) if options[:default]
      super
    end
  end

  def self.included(includer)
    includer.extend ClassMethods
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
disposable-0.4.0 lib/disposable/twin/default.rb
disposable-0.3.2 lib/disposable/twin/default.rb
disposable-0.3.1 lib/disposable/twin/default.rb
disposable-0.3.0 lib/disposable/twin/default.rb
disposable-0.2.6 lib/disposable/twin/default.rb
disposable-0.2.5 lib/disposable/twin/default.rb
disposable-0.2.4 lib/disposable/twin/default.rb
disposable-0.2.3 lib/disposable/twin/default.rb