Sha256: c2678f7865dc1cfae2e2ac54a001249aaa896fddd60ce77d8b6085666365a06a

Contents?: true

Size: 1.56 KB

Versions: 120

Compression:

Stored size: 1.56 KB

Contents

require 'rbbt/association/database'

module Association
  def self.version_file(file, namespace)
    old_file, file = file, file.sub('NAMESPACE', namespace) if namespace and String === file
    old_file.annotate file if Path === old_file
    file
  end
  
  def self.open(file, options = nil, persist_options = nil)
    options = options.nil? ? {} : options.dup
    persist_options = persist_options.nil? ?  Misc.pull_keys(options, :persist)  : persist_options.dup 

    options = Misc.add_defaults options, :zipped => true, :merge => true, :monitor => {:desc => "Opening database #{Misc.fingerprint file}"}
    options[:zipped] = false unless options[:merge]
    persist_options = Misc.add_defaults persist_options.dup, :persist => true, :dir => Rbbt.var.associations
    persist = persist_options[:persist]

    file = version_file(file, options[:namespace]) if options[:namespace] and String === file

    data = Persist.persist_tsv(file, nil, options, persist_options.merge(:prefix => "Association Database")) do |data|
      file = file.call if Proc === file

      options = options.dup
      data.serializer = :double if data.respond_to? :serializer

      tsv = Association.database(file, options.merge(:persist => true, :unnamed => true, :data => data, :type => :double))

      #tsv.with_unnamed do
      #  tsv.with_monitor("Saving database #{Misc.fingerprint file}") do
      #    tsv.through do |k,v|
      #      data[k] = v
      #    end
      #  end
      #end

      data
    end
    data.entity_options = options[:entity_options] if options[:entity_options]
    data
  end
  
end

Version data entries

120 entries across 120 versions & 1 rubygems

Version Path
rbbt-util-5.25.9 lib/rbbt/association/open.rb
rbbt-util-5.25.8 lib/rbbt/association/open.rb
rbbt-util-5.25.7 lib/rbbt/association/open.rb
rbbt-util-5.25.6 lib/rbbt/association/open.rb
rbbt-util-5.25.5 lib/rbbt/association/open.rb
rbbt-util-5.25.4 lib/rbbt/association/open.rb
rbbt-util-5.25.3 lib/rbbt/association/open.rb
rbbt-util-5.25.1 lib/rbbt/association/open.rb
rbbt-util-5.25.0 lib/rbbt/association/open.rb
rbbt-util-5.24.5 lib/rbbt/association/open.rb
rbbt-util-5.24.4 lib/rbbt/association/open.rb
rbbt-util-5.24.3 lib/rbbt/association/open.rb
rbbt-util-5.24.2 lib/rbbt/association/open.rb
rbbt-util-5.24.0 lib/rbbt/association/open.rb
rbbt-util-5.23.39 lib/rbbt/association/open.rb
rbbt-util-5.23.38 lib/rbbt/association/open.rb
rbbt-util-5.23.37 lib/rbbt/association/open.rb
rbbt-util-5.23.36 lib/rbbt/association/open.rb
rbbt-util-5.23.35 lib/rbbt/association/open.rb
rbbt-util-5.23.34 lib/rbbt/association/open.rb