class Geminabox::Proxy::Splicer

Public Class Methods

make(file_name) click to toggle source
# File lib/geminabox/proxy/splicer.rb, line 6
def self.make(file_name)
  splicer = new(file_name)
  splicer.create
  splicer
end

Public Instance Methods

create() click to toggle source
# File lib/geminabox/proxy/splicer.rb, line 12
def create
  File.open(splice_path, 'w'){|f| f.write(new_content)}
end
gzip?() click to toggle source
# File lib/geminabox/proxy/splicer.rb, line 44
def gzip?
  /\.gz$/ =~ file_name
end
merge_content() click to toggle source
# File lib/geminabox/proxy/splicer.rb, line 36
def merge_content
  if gzip?
    merge_gziped_content
  else
    merge_text_content
  end
end
new_content() click to toggle source
# File lib/geminabox/proxy/splicer.rb, line 16
def new_content
  if local_file_exists?
    merge_content
  else
    remote_content
  end
end
splice_file_exists?() click to toggle source
# File lib/geminabox/proxy/splicer.rb, line 32
def splice_file_exists?
  file_exists? splice_path
end
splice_folder_path() click to toggle source
# File lib/geminabox/proxy/splicer.rb, line 28
def splice_folder_path
  proxy_folder_path
end
splice_path() click to toggle source
# File lib/geminabox/proxy/splicer.rb, line 24
def splice_path
  proxy_path
end

Private Instance Methods

merge_gziped_content() click to toggle source
# File lib/geminabox/proxy/splicer.rb, line 49
def merge_gziped_content
  package(unpackage(local_content) | unpackage(remote_content))
end
merge_text_content() click to toggle source
# File lib/geminabox/proxy/splicer.rb, line 61
def merge_text_content
  local_content.to_s + remote_content.to_s
end
package(content) click to toggle source
# File lib/geminabox/proxy/splicer.rb, line 57
def package(content)
  Gem.gzip(Marshal.dump(content))
end
unpackage(content) click to toggle source
# File lib/geminabox/proxy/splicer.rb, line 53
def unpackage(content)
  Marshal.load(Gem.gunzip(content))
end