Skip to content

Commit

Permalink
Total refactoring: the easy way
Browse files Browse the repository at this point in the history
  • Loading branch information
MinasMazar committed Jun 4, 2016
1 parent 65cde43 commit 54a3548
Showing 1 changed file with 26 additions and 34 deletions.
60 changes: 26 additions & 34 deletions lib/ultron.rb
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 54a3548

Please sign in to comment.