module SmartKv::Core
Public Instance Methods
callable_as(klass)
click to toggle source
# File lib/smart_kv/core.rb, line 69 def callable_as(klass) @callable_as = superclass == SmartKv ? klass : superclass.callable_class end
callable_class()
click to toggle source
# File lib/smart_kv/core.rb, line 73 def callable_class @callable_as end
check(kv={})
click to toggle source
# File lib/smart_kv/core.rb, line 45 def check(kv={}) prevent_direct_usage object_class = callable_class || kv.class kv = kv.dup unless SmartKv::Helper.production? hash = kv.to_h missing_keys = required_keys - hash.keys unless missing_keys.empty? raise SmartKv::KeyError, "missing required key(s): #{missing_keys.map{|k| k.to_sym.inspect }.join(', ')} in #{self.class}" end unrecognized_keys = hash.keys - keys.to_a unless unrecognized_keys.empty? key = unrecognized_keys.first raise SmartKv::KeyError.new("unrecognized key: #{key.inspect} in #{self}.", key: key, receiver: (keys - hash.keys).map {|k| [k, nil] }.to_h) end end return to_callable_object(object_class, kv) end
Also aliased as: new
init_optional()
click to toggle source
# File lib/smart_kv/core.rb, line 36 def init_optional @optional ||= superclass == SmartKv ? ::Set.new : superclass.optional.dup end
init_required()
click to toggle source
# File lib/smart_kv/core.rb, line 20 def init_required @required ||= superclass == SmartKv ? ::Set.new : superclass.required.dup end
keys()
click to toggle source
# File lib/smart_kv/core.rb, line 40 def keys init_required; init_optional @required + @optional end
optional(*args)
click to toggle source
# File lib/smart_kv/core.rb, line 24 def optional(*args) init_optional @optional += args @required -= @optional if @required @optional end
optional_keys()
click to toggle source
# File lib/smart_kv/core.rb, line 31 def optional_keys init_optional @optional.to_a end
required(*args)
click to toggle source
# File lib/smart_kv/core.rb, line 8 def required(*args) init_required @required += args @optional -= @required if @optional @required end
required_keys()
click to toggle source
# File lib/smart_kv/core.rb, line 15 def required_keys init_required @required.to_a end
Private Instance Methods
prevent_direct_usage()
click to toggle source
# File lib/smart_kv/core.rb, line 79 def prevent_direct_usage if self == SmartKv raise SmartKv::DirectUsageError, "only subclass of SmartKv is meant to be used".freeze end end