Class: Koi::Database

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/koi.rb

Instance Method Summary collapse

Constructor Details

#initialize(path = nil) ⇒ Database

Returns a new instance of Database.



205
206
207
208
209
210
211
# File 'lib/koi.rb', line 205

def initialize path = nil
  if @path = path
    self.load path
  else
    @data = []
  end
end

Instance Method Details

#<<(entry) ⇒ Object



237
238
239
# File 'lib/koi.rb', line 237

def << entry
  @data << (entry.is_a?(Entity) ? entry : Entity.new(entry))
end

#each(&blk) ⇒ Object



233
234
235
# File 'lib/koi.rb', line 233

def each &blk
  @data.each &blk
end

#find(key) ⇒ Object Also known as: []



213
214
215
216
217
218
219
220
221
# File 'lib/koi.rb', line 213

def find key
  if key.is_a? String
    @data.find {|e| e[:title].include? key }
  elsif key.is_a? Fixnum
    @data.select {|e| e[:status] == :created}[key]
  else
    raise ArgumentError, "key must be a String or Fixnum, but is #{key.class}"
  end
end

#load(path = ) ⇒ Object



224
225
226
227
228
229
230
231
# File 'lib/koi.rb', line 224

def load path = @path || Path[:db]
  @data = if db = YAML.load_file(path)
    db.map {|e| Entity.new(e) }
  else
    []
  end
  self
end

#to_yaml(*args, &blk) ⇒ Object



241
242
243
# File 'lib/koi.rb', line 241

def to_yaml *args, &blk
  @data.to_yaml *args, &blk
end