class FirefoxJson::Session::Base
Attributes
path[RW]
Public Class Methods
children()
click to toggle source
# File lib/firefox-json/session.rb, line 49 def self.children @@inherited end
choose_for(data)
click to toggle source
# File lib/firefox-json/session.rb, line 53 def self.choose_for data children.find { |klass| data.key? klass.required_key } end
inherited(klass)
click to toggle source
# File lib/firefox-json/session.rb, line 45 def self.inherited klass @@inherited << klass end
mattr_accessor(name)
click to toggle source
# File lib/firefox-json/session.rb, line 57 def self.mattr_accessor name class_eval <<-CODE, __FILE__, __LINE__ + 1 def self.#{name} @#{name} end def #{name} self.class.#{name} end CODE end
new(data, path: nil)
click to toggle source
# File lib/firefox-json/session.rb, line 9 def initialize data, path: nil setup data @path = path end
required_key=(key)
click to toggle source
# File lib/firefox-json/session.rb, line 68 def self.required_key= key @required_key = key.freeze end
set_collection(item_class, index_key, with_closed = false)
click to toggle source
# File lib/firefox-json/session.rb, line 73 def self.set_collection item_class, index_key, with_closed = false include Collection @index_key = index_key @item_class = item_class base_key_name = item_class.name.split('::')[-1].sub(/y$/, 'ie') + 's' self.required_key = base_key_name.downcase define_method @required_key do @collection end if with_closed @closed_key = "_closed#{base_key_name}" define_method "closed_#{required_key}" do @closed_collection end end end
Public Instance Methods
dump()
click to toggle source
# File lib/firefox-json/session.rb, line 35 def dump @data end
eql?(object)
click to toggle source
# File lib/firefox-json/session.rb, line 18 def eql? object object.is_a?(self.class) && hash == object.hash end
inspect()
click to toggle source
# File lib/firefox-json/session.rb, line 14 def inspect to_s end
reload()
click to toggle source
# File lib/firefox-json/session.rb, line 30 def reload raise ArgumentError, 'Path not given' unless @path @data = JsFile.load_file(@path) end
save(path=nil)
click to toggle source
# File lib/firefox-json/session.rb, line 39 def save path=nil path ||= @path raise ArgumentError, 'Path not given' unless path JsFile.save(path, dump) end
Protected Instance Methods
setup(data)
click to toggle source
# File lib/firefox-json/session.rb, line 22 def setup data unless data && data[required_key] raise ArgumentError, "Not a Firefox #{self.class.name.downcase} - missing #{required_key} key" end @data = data end