Sha256: 7e88dbf0df25aa4a6616ea5ac66467872e5c2b30c3c4271414562d543eb31f6b

Contents?: true

Size: 733 Bytes

Versions: 2

Compression:

Stored size: 733 Bytes

Contents

module SmartKv::Register
  def required(*args)
    @required ||= superclass == SmartKv ? Set.new : superclass.required_keys.dup
    @required += args
    @optional -= @required if @optional
    @required
  end

  def required_keys
    @required.to_a
  end

  def optional(*args)
    @optional ||= superclass == SmartKv ? Set.new : superclass.optional_keys.dup
    @optional += args
    @required -= @optional if @required
    @optional
  end

  def optional_keys
    @optional.to_a
  end

  def new(*args)
    super(@required.to_a, @optional.to_a, @callable_as, *args)
  end

  def callable_as(klass)
    @callable_as = superclass == SmartKv ? klass : superclass.callable_class
  end

  def callable_class
    @callable_as
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
smart_kv-0.2.3 lib/smart_kv/register.rb
smart_kv-0.1.4 lib/smart_kv/register.rb