From 54a3548d9f57ab3f27ecf224fe67d634ab46fdc7 Mon Sep 17 00:00:00 2001 From: MinasMazar Date: Sat, 4 Jun 2016 10:16:28 +0200 Subject: [PATCH] Total refactoring: the easy way --- lib/ultron.rb | 60 ++++++++++++++++++++++----------------------------- 1 file changed, 26 insertions(+), 34 deletions(-) diff --git a/lib/ultron.rb b/lib/ultron.rb index ab58e54..3e54f2f 100644 --- a/lib/ultron.rb +++ b/lib/ultron.rb @@ -1,41 +1,33 @@ require "ultron/version" +require "yaml" module Ultron - @@ultron_instance = nil - def self.init(file) - @@ultron_instance ||= Instance.new(file) + def __ultron_data + @__ultron_data end - def self.update!(data) - @@ultron_instance || init($0) && @@ultron_instance.update!(data) - end - def self.inst - @@ultron_instance || init($0) - end - class Instance - attr_reader :file, :data_pos - attr_accessor :data - def initialize(file) - @file = file - unless defined? DATA - f = File.new @file, "r+" - f.seek 0, File::SEEK_END - f.write "\n__END__\n" - @data_pos = f.pos - @data = [] - f.flush - f.close - else - @data_pos = DATA.pos - @data = DATA.readlines.map(&:chomp) - end - end - def update!(data = []) - data = [ data ] unless data.kind_of? Array - @data += data - file = File.new @file, "r+" - file.seek @data_pos - file.write @data.join "\n" - file.close + def __ultron_init + unless defined? DATA + f = File.new $0, "r+" + f.seek 0, File::SEEK_END + f.write "\n__END__\n" + @__ultron_data_pos = f.pos + @__ultron_data = [] + f.flush + f.close + else + @__ultron_data_pos = DATA.pos + @__ultron_data = YAML.load DATA.read end end + def __ultron_update(data = @__ultron_data) + data = YAML.dump data + file = File.new $0, "r+" + file.seek @__ultron_data_pos + file.write data + file.close + end end + +include Ultron +__ultron_init +