Sha256: 674e424c6368da86601f367b8ab1bcd3ecdb0d69da9660a1a22b539c9b77b753

Contents?: true

Size: 507 Bytes

Versions: 1

Compression:

Stored size: 507 Bytes

Contents

require 'forwardable'

module SubDiff
  class Differ < Struct.new(:collection, :type)
    extend Forwardable

    def_delegators :collection, :string

    def diff(*args)
      # Ruby 1.8.7 does not support additional args after * (splat)
      block = args.pop

      string.send(type, args.first) do |match|
        diff = { :match => match, :prefix => $`, :suffix => $' }
        diff[:replacement] = match.sub(*args, &block)
        yield(collection, diff)
      end

      collection
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sub_diff-1.0.1 lib/sub_diff/differ.rb