Sha256: fbf4b5e0c69e8749e6a40337f9c52bf5021b6937e2de43558a26ec476b704398

Contents?: true

Size: 1.19 KB

Versions: 19

Compression:

Stored size: 1.19 KB

Contents

%w(record).each do |path|
  MetricFu.metrics_require   { "hotspots/analysis/#{path}" }
end

module MetricFu
  class Table
    include Enumerable

    def initialize(opts = {})
      @rows = []
      @columns = opts.fetch(:column_names)

      @make_index = opts.fetch(:make_index) {true}
      @metric_index = {}
    end

    def <<(row)
      record = nil
      if row.is_a?(MetricFu::Record)
        record = row
      else
        record = MetricFu::Record.new(row, @columns)
      end
      @rows << record
      updated_key_index(record) if @make_index
    end

    def each
      @rows.each do |row|
        yield row
      end
    end

    def size
      length
    end

    def length
      @rows.length
    end

    def [](index)
      @rows[index]
    end

    def column(column_name)
      arr = []
      @rows.each do |row|
        arr << row[column_name]
      end
      arr
    end

    def group_by_metric
      @metric_index.to_a
    end

    private

    def updated_key_index(record)
      if record.has_key?('metric')
        @metric_index[record.metric] ||= MetricFu::Table.new(:column_names => @columns, :make_index => false)
        @metric_index[record.metric] << record
      end
    end

  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
metric_fu-4.11.3 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.11.2 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.11.1 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.11.0 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.10.0 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.9.0 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.8.0 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.7.4 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.7.3 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.7.2 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.7.1 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.7.0 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.6.0 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.5.2 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.5.1 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.4.4 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.4.3 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.4.2 lib/metric_fu/metrics/hotspots/analysis/table.rb
metric_fu-4.4.1 lib/metric_fu/metrics/hotspots/analysis/table.rb