Sha256: c76bc9b913ca9273685db843bf58b9f8f0c308d7d0aae8c31382dcc3ba9f2652

Contents?: true

Size: 913 Bytes

Versions: 3

Compression:

Stored size: 913 Bytes

Contents

module RevealCK
  module Changers
    #
    # Public: A Splicer knows how to insert a list of lines into a file.
    #
    class Splicer

      def initialize(lines)
        @lines = lines
      end

      def insert(new_lines, opts)
        index = @lines.each.with_index do |line, i|
          break i + 1 if line.include? opts[:after]
        end
        @lines.insert(index, new_lines).flatten
      end

      def self.insert!(to_insert, opts)
        to_insert_lines = readlines to_insert
        insert_into_file = opts[:into]
        insert_into_lines = readlines insert_into_file

        splicer = Splicer.new insert_into_lines
        spliced_lines = splicer.insert to_insert_lines, after: opts[:after]
        File.open(insert_into_file, 'w') { |file| file << spliced_lines.join }
      end

      private

      def self.readlines(file)
        File.open(file).readlines
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
reveal-ck-0.2.0 lib/reveal-ck/changers/splicer.rb
reveal-ck-0.1.8 lib/reveal-ck/changers/splicer.rb
reveal-ck-0.1.7 lib/reveal-ck/changers/splicer.rb