Method: GitModel::Index#load

Defined in:
lib/gitmodel/index.rb

#load(branch = GitModel.default_branch) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/gitmodel/index.rb', line 56

def load(branch = GitModel.default_branch)
  @indexes = GitModel.cache(branch, "#{@model_class.db_subdir}-index-load") do
    unless generated?(branch)
      GitModel.logger.debug "No index generated for #{@model_class}, on branch #{branch}, not loading."
    else
      GitModel.logger.debug "Loading indexes for #{@model_class}..."
      indexes = {}
      blob = GitModel.current_tree(branch) / filename
      
      data = Yajl::Parser.parse(blob.data)
      data.each do |attr_and_values|
        attr = attr_and_values[0]
        values = {}
        attr_and_values[1].each do |value_and_ids|
          value = value_and_ids[0]
          ids = SortedSet.new(value_and_ids[1])
          values[value] = ids
        end
        indexes[attr] = values
      end
    end
    indexes
  end
end