module Stairs::Util::FileMutation

Public Class Methods

remove(pattern, filename) click to toggle source
# File lib/stairs/util/file_mutation.rb, line 18
def remove(pattern, filename)
  return unless File.exist? filename

  contents = File.read filename
  return unless contents =~ pattern

  contents.slice!(pattern)
  write contents, filename
end
replace_or_append(pattern, string, filename) click to toggle source
# File lib/stairs/util/file_mutation.rb, line 5
def replace_or_append(pattern, string, filename)
  if File.exist? filename
    contents = File.read filename
    if contents =~ pattern
      contents.sub! pattern, string
      write contents, filename
      return
    end
  end

  write_line string, filename
end
write(string, filename) click to toggle source
# File lib/stairs/util/file_mutation.rb, line 38
def write(string, filename)
  File.open filename, 'w+' do |file|
    file.puts string
  end
end
write_line(string, filename) click to toggle source
# File lib/stairs/util/file_mutation.rb, line 28
def write_line(string, filename)
  File.open filename, 'a+' do |file|
    # ensure file ends with newline before appending
    last_line = file.each_line.reduce('') { |_m, l| l }
    file.puts '' unless last_line == '' || last_line =~ /(.*)\n/

    file.puts string
  end
end