Class: Koi::Database
Constant Summary collapse
- EntityNotFound =
Class.new(RuntimeError)
Instance Method Summary collapse
- #<<(entry) ⇒ Object
- #delete(arg) ⇒ Object
- #each(&blk) ⇒ Object
- #find(key) ⇒ Object (also: #[])
- #first ⇒ Object
- #fresh ⇒ Object
- #index(*args, &blk) ⇒ Object
-
#initialize(path = nil) ⇒ Database
constructor
A new instance of Database.
- #insert(*args) ⇒ Object
- #last ⇒ Object
- #list ⇒ Object
- #load(path = ) ⇒ Object
-
#size ⇒ Object
Hash-like methods on @data.
- #to_yaml(*args, &blk) ⇒ Object
Constructor Details
#initialize(path = nil) ⇒ Database
Returns a new instance of Database.
236 237 238 239 240 241 242 |
# File 'lib/koi.rb', line 236 def initialize path = nil if @path = path self.load path else @data = [] end end |
Instance Method Details
#<<(entry) ⇒ Object
289 290 291 |
# File 'lib/koi.rb', line 289 def << entry @data << (entry.is_a?(Entity) ? entry : Entity.new(entry)) end |
#delete(arg) ⇒ Object
272 |
# File 'lib/koi.rb', line 272 def delete(arg) @data.delete arg end |
#each(&blk) ⇒ Object
285 286 287 |
# File 'lib/koi.rb', line 285 def each &blk @data.each &blk end |
#find(key) ⇒ Object Also known as: []
244 245 246 247 248 249 250 251 252 253 254 255 |
# File 'lib/koi.rb', line 244 def find key if key.is_a? String @data.find {|e| e[:title].include? key } elsif key.is_a? Fixnum entities = @data.select {|e| e[:status] == :created} (entities.select(&:sticky?) + entities.reject(&:sticky?))[key] else raise ArgumentError, "key must be a String or Fixnum, but is #{key.class}" end.tap do |result| raise EntityNotFound if result.nil? end end |
#first ⇒ Object
270 |
# File 'lib/koi.rb', line 270 def first; fresh.first end |
#fresh ⇒ Object
258 259 260 |
# File 'lib/koi.rb', line 258 def fresh @data.select {|e| e.new? } end |
#index(*args, &blk) ⇒ Object
274 |
# File 'lib/koi.rb', line 274 def index(*args, &blk) @data.index *args, &blk end |
#insert(*args) ⇒ Object
273 |
# File 'lib/koi.rb', line 273 def insert(*args) @data.insert *args end |
#last ⇒ Object
271 |
# File 'lib/koi.rb', line 271 def last; fresh.last end |
#list ⇒ Object
262 263 264 |
# File 'lib/koi.rb', line 262 def list fresh.select(&:sticky?) + fresh.reject(&:sticky?) end |
#load(path = ) ⇒ Object
276 277 278 279 280 281 282 283 |
# File 'lib/koi.rb', line 276 def load path = @path || Path[:db] @data = if db = YAML.load_file(path) db.map {|e| Entity.new(e) } else [] end self end |
#size ⇒ Object
Hash-like methods on @data
269 |
# File 'lib/koi.rb', line 269 def size; fresh.size end |
#to_yaml(*args, &blk) ⇒ Object
293 294 295 |
# File 'lib/koi.rb', line 293 def to_yaml *args, &blk @data.to_yaml *args, &blk end |