Sha256: f324ff953934a18d67d3c6a52146666f77529d0f70e9add9ad7cec9cff8164cf

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

module Predicates

  def inverted(v, meth, pred)
    if meth == :self
      Type.responds(v, pred)
      v unless v.send(pred)
    end
  end

  def regular(v, meth, pred)
    if meth == :self
      Type.responds(v, pred)
      v if v.send(pred)
    else
      r = v.send(meth)
      Type.responds(r, pred)
      v if r.send(pred)
    end
  end

  def inverted_value(v, value, meth, pred)
    if meth == :self
      Type.responds(v, pred)
      v unless v.send(pred, value)
    end
  end

  def regular_value(v, value, meth, pred)
    if meth == :self
      Type.responds(v, pred)
      v if v.send(pred, value)
    else
      r = v.send(meth)
      Type.responds(r, pred)
      v if r.send(pred, value)
    end
  end

  def regular_regex(v, regex, meth)
    if meth == :self
      v if v.to_s.match(regex)
    else
      r = v.send(meth)
      v if r.to_s.match(regex)
    end
  end

  def inverted_regex(v, regex, meth)
    if meth == :self
      v unless v.to_s.match(regex)
    else
      r = v.send(meth)
      v unless r.to_s.match(regex)
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
totally_lazy-0.0.5 lib/predicates/predicates.rb