Module: BinarySearch

Defined in:
lib/binarysearch/version.rb,
lib/binarysearch.rb,
lib/binarysearch/search.rb,
lib/binarysearch/indexer.rb,
lib/binarysearch/data_source.rb

Overview

:nodoc:

Defined Under Namespace

Modules: VERSION Classes: DataSource, FileDataSource, Search

Class Method Summary collapse

Class Method Details

.index(data_source, db, db_idx = nil) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/binarysearch/indexer.rb', line 5

def self.index(data_source, db, db_idx=nil)
   db_idx = db + '.idx' if db_idx.nil?
   records = 0

   File.open(db, 'w') do |fdb|
     File.open(db_idx, 'w') do |fidx|
       last = nil
       while record = data_source.next
  if !last.nil? && last >= record
    raise "data is not ordered! #{last} >= #{record}"
  end

  fidx.write([fdb.pos].pack('L'))
  fdb.write(record)

  last = record
  records += 1
end
     end
   end

   records
end