class Ciphr::Functions::Simple::Replace

Public Class Methods

params() click to toggle source
# File lib/ciphr/functions/simple.rb, line 117
def self.params
  [:input,:search,:replace]
end
variants() click to toggle source
# File lib/ciphr/functions/simple.rb, line 113
def self.variants
  [ [['repl','replace'], {}] ]
end

Public Instance Methods

apply() click to toggle source
# File lib/ciphr/functions/simple.rb, line 79
def apply
  input, searchin, replacein = @args
  search, replace = [searchin.read, replacein.read]
  buf = ""
  Proc.new do
    if buf.size == search.size && search.size > 0
      buf = ""
      replace
    else
      inchunk = input.read(1)
      if inchunk 
        if inchunk == search[buf.size]
          buf += inchunk
          ""
        else
          buf += inchunk
          input.prepend(buf[1,buf.size])
          ret = buf[0]
          buf = ""
          ret
        end
      else
        if buf.size > 0
          ret = buf
          buf = ""
          ret
        else
          nil
        end
      end
    end
  end
end