Class: Hyphy::Filters::DurationFilter

Inherits:
AbstractFilter show all
Defined in:
lib/hyphy/filters/duration_filter.rb

Instance Attribute Summary collapse

Attributes inherited from AbstractFilter

#data

Instance Method Summary collapse

Constructor Details

#initialize(data, opts) ⇒ DurationFilter

Returns a new instance of DurationFilter.



5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/hyphy/filters/duration_filter.rb', line 5

def initialize(data, opts)
  @duration_min = opts[:duration_min] || 0.0
  @duration_max = opts[:duration_max] || Float::INFINITY
  @benchmark = opts[:benchmark] || false

  if @benchmark
    @duration = lambda { |sql_statement| sql_statement.benchmark_time }
  else
    @duration = lambda { |sql_statement| sql_statement.duration }
  end

  super
end

Instance Attribute Details

#duration_maxObject (readonly)

Returns the value of attribute duration_max.



3
4
5
# File 'lib/hyphy/filters/duration_filter.rb', line 3

def duration_max
  @duration_max
end

#duration_minObject (readonly)

Returns the value of attribute duration_min.



3
4
5
# File 'lib/hyphy/filters/duration_filter.rb', line 3

def duration_min
  @duration_min
end

Instance Method Details

#filterObject



19
20
21
22
23
24
25
26
27
# File 'lib/hyphy/filters/duration_filter.rb', line 19

def filter
  @data.select! do |sql_statement|
    next unless @duration.call(sql_statement)

    (@duration_min <= @duration.call(sql_statement)) and (@duration.call(sql_statement) <= @duration_max)
  end

  @data.sort_by! { |sql_statement| -sql_statement.duration }
end