Sha256: b2fabc2983f36fd86f844450d1879abcf3ab8438d235daf081b1b894f946d17d

Contents?: true

Size: 1.17 KB

Versions: 6

Compression:

Stored size: 1.17 KB

Contents

module Stairs
  module Util
    module FileMutation
      class << self
        def replace_or_append(pattern, string, filename)
          if File.exists? filename
            contents = File.read filename
            if contents =~ pattern
              contents.sub! pattern, string
              write contents, filename
              return
            end
          end

          write_line string, filename
        end

        def remove(pattern, filename)
          return unless File.exists? filename

          contents = File.read filename
          if contents =~ pattern
            contents.slice!(pattern)
            write contents, filename
          end
        end

        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| m = l }
            file.puts "" unless last_line == "" || last_line =~ /(.*)\n/

            file.puts string
          end
        end

        def write(string, filename)
          File.open filename, "w+" do |file|
            file.puts string
          end
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
stairs-0.6.1 lib/stairs/util/file_mutation.rb
stairs-0.6.0 lib/stairs/util/file_mutation.rb
stairs-0.5.1 lib/stairs/util/file_mutation.rb
stairs-0.5.0 lib/stairs/util/file_mutation.rb
stairs-0.4.2 lib/stairs/util/file_mutation.rb
stairs-0.4.1 lib/stairs/util/file_mutation.rb