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