Sha256: bcc3d03dde35a716897a5a405a4c85b112ec65532322b5fea7323a0465778d32

Contents?: true

Size: 1.69 KB

Versions: 3

Compression:

Stored size: 1.69 KB

Contents

# frozen_string_literal: true

class Result
  def find(filter)
    @alterations << "find(#{filter})"
    case filter.class.to_s
    when "Array"
      find_when_array(filter)
    when "String" || "Integer"
      @content.select! { |i| i.include?(filter.to_s) }
    when "Regexp"
      @content.select! { |i| filter.match(i) }
    end
    self
  end
  alias_method :grep, :find
  alias_method :grep!, :find
  alias_method :find!, :find

  def first
    @alterations << "first"
    @content = [@content.first]
    self
  end

  def not_find(filter)
    @alterations << "not_find(#{filter})"
    return self if @content.size.zero?

    case filter.class.to_s
    when "Array"
      filter.each { |i| not_find(i.to_s) }
    when "String" || "Integer"
      @content.reject! { |i| i.include?(filter.to_s) }
    when "Regexp"
      @content.reject! { |i| filter.match(i) }
    end
    self
  end
  alias_method :grep_v, :not_find

  def since(filter)
    @alterations << "since(#{filter})"
    return self if @content.size.zero?

    if filter.instance_of? String
      flag = false
      @content.select! do |i|
        flag = true if i.include?(filter.to_s)
        flag
      end
    end
    self
  end

  def last
    @alterations << "last"
    @content = [@content.last]
    self
  end

  def until(filter)
    @alterations << "until(#{filter})"
    return self if @content.size.zero?

    if filter.instance_of? String
      flag = true
      @content.select! do |i|
        flag = false if i.include?(filter.to_s)
        flag
      end
    end
    self
  end

  private

  def find_when_array(filter)
    @content.select! do |line|
      flag = false
      filter.each { |i| flag ||= line.include?(i) }
      flag
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
teuton-2.9.2 lib/teuton/case/result/ext_filter.rb
teuton-2.9.1 lib/teuton/case/result/ext_filter.rb
teuton-2.9.0 lib/teuton/case/result/ext_filter.rb