Parent

Namespace

Files

File

Public Class Methods

append(path, content=nil, &block) click to toggle source
# File lib/sugar-high/file.rb, line 33
def self.append path, content=nil, &block
  File.open(path, 'w+') do |f|
    f.puts content ||= yield
  end
end
blank?(file_name) click to toggle source
# File lib/sugar-high/file.rb, line 17
def self.blank? file_name
  raise ArgumentError, "Filename argument must not be blank" if file_name.blank?
  raise ArgumentError, "There is no file at: #{file_name}" if !File.file?(file_name)
  File.zero?(file_name)
end
delete!(name) click to toggle source
# File lib/sugar-high/file.rb, line 7
def self.delete! name
  return nil if !File.exist?(name)
  File.delete name
end
delete_file!(name) click to toggle source
# File lib/sugar-high/file.rb, line 12
def self.delete_file! name
  return nil if !File.file?(name)
  File.delete name
end
insert_into(file_name, *args, &block) click to toggle source

insert_into 'my_file.txt', :after => 'Blip', :content => 'Hello insert_into 'my_file.txt', 'Hello', :after => 'Blip' insert_into 'my_file.txt', :after => 'Blip' do

'Hello'

end

# File lib/sugar-high/file.rb, line 118
def self.insert_into file_name, *args, &block
  options = last_option args
  content = Insert.content options, *args, &block

  file = File.new(file_name)
  return nil if !File.exist?(file)

  # already inserted?
  return nil if content.blank? || (file.read =~ /#{content}/)

  place, marker = if options[:before] 
    [ :before, options[:before] ]
    else
    [ :after, options[:after] ]
  end 

  marker = Insert.get_marker marker

  return nil if !(File.new(file.path).read =~ /#{marker}/)
  
  Mutate.mutate_file file.path, marker, place do
     content
   end
 end
overwrite(path, content=nil, &block) click to toggle source
# File lib/sugar-high/file.rb, line 27
def self.overwrite path, content=nil, &block
  File.open(path, 'w') do |f|
    f.puts content ||= yield
  end
end
read_from(file_name, options = {}) click to toggle source
# File lib/sugar-high/file.rb, line 79
def self.read_from file_name, options = {}, &block
  raise ArgumentError, "File to read from not found or not a file: #{file_name}" if !File.file? file_name
  content = File.read file_name
  
  if options[:before] 
    begin
      regexp = options[:before].to_regexp
      index = content.match(regexp).offset_before
      content = content[0..index]
    rescue
      raise ArgumentError, ":before option must be a string or regular expression, was : #{options[:before]}"
    end
  end 

  if options[:after]   
    begin
      regexp = options[:after].to_regexp
      index = content.match(regexp).offset_after
      content = content[index..-1]      
    rescue
      raise ArgumentError, ":after option must be a string or regular expression, was : #{options[:after]}"
    end      
  end
  yield content if block
  content
end
remove_content_from(file_name, options = {}) click to toggle source
# File lib/sugar-high/file.rb, line 106
def self.remove_content_from file_name, options = {}, &block
  replace_content_from file_name, options.merge(:with => ''), &block
end
remove_from(file_name, content=nil, &block) click to toggle source
# File lib/sugar-high/file.rb, line 39
def self.remove_from file_name, content=nil, &block
  content ||= yield
  replace_content_from file_name, :content => content, :with => '', &block
end
replace_content_from(file_name, options = {}) click to toggle source

replaces content found at replacement_expr with content resulting from yielding block File.replace_content_from 'myfile.txt', where => /HelloWorld/, with => 'GoodBye'

# File lib/sugar-high/file.rb, line 46
def self.replace_content_from file_name, options = {}, &block
  replacement_expr = options[:where] || options[:content]
  new_content = options[:with]

  replacement_expr = case replacement_expr
  when Regexp
    replacement_expr
  when String
    /#{Regexp.escape(replacement_expr)}/
  else
    raise ArgumentError, "Content to be replaced must be specified as either a String or Regexp in a :where or :content option"
  end

  # get existing file content
  content = File.read file_name 

  # return nil if no mathing replacement found
  return nil if !(content =~ replacement_expr)

  new_content ||= yield if block

  raise ArgumentError, "Content to be replaced with must be specified as a :with option or as a block" if !new_content
  
  # remove content that matches expr, by replacing with empty
  mutated_content = content.gsub replacement_expr, new_content

  # write mutated content as new file
  File.overwrite file_name, mutated_content

  true # signal success!
end

Public Instance Methods

blank?() click to toggle source
# File lib/sugar-high/file.rb, line 23
def blank?
  File.zero?(self.path)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.