Module: FirefoxJson::Session::Collection

Defined in:
lib/firefox-json/session.rb

Overview

Management of collections, closed items and the item in focus

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(target) ⇒ Object



93
94
95
96
97
98
# 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

Instance Method Details

#convert(key, is_closed) ⇒ Object



110
111
112
# File 'lib/firefox-json/session.rb', line 110

def convert key, is_closed
  @data[key].map {|hash| item_class.new(hash, is_closed)}
end

#dumpObject



138
139
140
141
142
143
144
145
# 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_idxObject



130
131
132
# File 'lib/firefox-json/session.rb', line 130

def reset_selected_idx
  @selected_idx = send(required_key).size
end

#sanify_selected_idxObject



122
123
124
125
126
127
128
# 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

#selectedObject



134
135
136
# File 'lib/firefox-json/session.rb', line 134

def selected
  send(required_key)[@selected_idx-1]
end

#selected_idx=(idx) ⇒ Object



114
115
116
117
118
119
120
# 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) ⇒ Object



100
101
102
103
104
105
106
107
108
# 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