Class: Ccp::Data::KVS
- Inherits:
-
Object
- Object
- Ccp::Data::KVS
- Defined in:
- lib/ccp/data.rb
Defined Under Namespace
Instance Method Summary collapse
-
#[](key) ⇒ Object
Accessor.
- #check(key, type) ⇒ Object
-
#default(key = nil, &block) ⇒ Object
Default values.
-
#exist?(key) ⇒ Boolean
Testing.
-
#initialize ⇒ KVS
constructor
A new instance of KVS.
- #inspect ⇒ Object
-
#path(key) ⇒ Object
Utils.
- #set?(key) ⇒ Boolean
Constructor Details
#initialize ⇒ KVS
31 32 33 34 |
# File 'lib/ccp/data.rb', line 31 def initialize @hash = {} @default = Default.new(self) end |
Instance Method Details
#[](key) ⇒ Object
Accessor
50 51 52 53 54 55 56 57 |
# File 'lib/ccp/data.rb', line 50 def [](key) if exist?(key) return load(key) else from = caller.is_a?(Array) ? caller.first : self.class raise NotDefined, "'#{key}' is not initialized\n#{from}" end end |
#check(key, type) ⇒ Object
70 71 72 73 74 75 76 |
# File 'lib/ccp/data.rb', line 70 def check(key, type) self[key].must.struct(type) { summary = self[key].inspect summary = summary[0,200] + "..." if summary.size > 200 raise TypeError, "'#{key}' expects '#{type.inspect}', but got #{summary}" } end |
#default(key = nil, &block) ⇒ Object
Default values
39 40 41 42 43 44 45 |
# File 'lib/ccp/data.rb', line 39 def default(key = nil, &block) if key @default.regsiter_lazy(key, block) else @default end end |
#exist?(key) ⇒ Boolean
Testing
62 63 64 |
# File 'lib/ccp/data.rb', line 62 def exist?(key) @hash.has_key?(key) end |
#inspect ⇒ Object
85 86 87 88 |
# File 'lib/ccp/data.rb', line 85 def inspect keys = @hash.keys.map(&:to_s).sort.join(',') "{#{keys}}" end |
#path(key) ⇒ Object
Utils
81 82 83 |
# File 'lib/ccp/data.rb', line 81 def path(key) self[key].must.coerced(Pathname, String=>proc{|i| Pathname(i)}) end |
#set?(key) ⇒ Boolean
66 67 68 |
# File 'lib/ccp/data.rb', line 66 def set?(key) !! (exist?(key) && self[key]) end |