Sha256: 6de6fe54574e7a699b01f077409889d77a2b6787ee38354d9eb4228eda5bbb68
Contents?: true
Size: 1.07 KB
Versions: 1
Compression:
Stored size: 1.07 KB
Contents
module TaintedLove module Replacer class ReplaceString < Base WRAP_METHODS = [ :+, :*, :[], :[]= , :replace, :strip, :strip!, :inspect ] def replace! mod = Module.new do def self.wrap_call(name) define_method(name) do |*args, &block| return super(*args, &block) unless tainted? || args.any?(&:tainted?) result = super(*args, &block) result.tainted_love_tags += tainted_love_tags if tainted? args.select(&:tainted?).each do |arg| result.tainted_love_tags += arg.tainted_love_tags end result end end WRAP_METHODS.each do |sym| wrap_call(sym) end def split(*args) result = super(*args) if tainted? result.each do |value| value.taint.tainted_love_tags += tainted_love_tags end end result end end String.prepend(mod) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
tainted_love-0.4.1 | lib/tainted_love/replacer/replace_string.rb |