module FirefoxJson::Session::Collection

Management of collections, closed items and the item in focus

Public Class Methods

included(target) click to toggle source
# File lib/firefox-json/session.rb, line 93
def self.included target
  target.send(:attr_reader, :selected_idx)
  [:item_class, :closed_key, :index_key].each do |accessor|
    target.mattr_accessor accessor
  end
end

Public Instance Methods

convert(key, is_closed) click to toggle source
# File lib/firefox-json/session.rb, line 110
def convert key, is_closed
  @data[key].map {|hash| item_class.new(hash, is_closed)}
end
dump() click to toggle source
Calls superclass method
# File lib/firefox-json/session.rb, line 138
def dump
  @data[index_key] = sanify_selected_idx
  @data[required_key] = @collection.map(&:dump)
  if closed_key
    @data[closed_key] = @closed_collection.map(&:dump)
  end
  super
end
reset_selected_idx() click to toggle source
# File lib/firefox-json/session.rb, line 130
def reset_selected_idx
  @selected_idx = send(required_key).size
end
sanify_selected_idx() click to toggle source
# File lib/firefox-json/session.rb, line 122
def sanify_selected_idx
  if !@selected_idx || @selected_idx > send(required_key).size
    reset_selected_idx
  else
    @selected_idx
  end
end
selected() click to toggle source
# File lib/firefox-json/session.rb, line 134
def selected
  send(required_key)[@selected_idx-1]
end
selected_idx=(idx) click to toggle source
# File lib/firefox-json/session.rb, line 114
def selected_idx= idx
  if send(required_key).size >= idx
    @selected_idx = idx
  else
    @selected_idx
  end
end
setup(data) click to toggle source
Calls superclass method
# File lib/firefox-json/session.rb, line 100
def setup data
  super
  @collection = convert required_key, false
  if closed_key
    @closed_collection = convert closed_key, true
  end
  @selected_idx = @data[index_key]
  sanify_selected_idx
end