Sha256: fbd9d120d66fe966e7c377d51e60f11a265d6e82479cd63cc16723beb4f03f6d

Contents?: true

Size: 953 Bytes

Versions: 9

Compression:

Stored size: 953 Bytes

Contents

module MetricFu
  class SaikuroParsingElement
    TYPE_REGEX = /Type:(.*) Name/
    NAME_REGEX = /Name:(.*) Complexity/
    COMPLEXITY_REGEX = /Complexity:(.*) Lines/
    LINES_REGEX = /Lines:(.*)/

    attr_reader :complexity, :lines, :defs, :element_type
    attr_accessor :name

    def initialize(line)
      @line = line
      @element_type = line.match(TYPE_REGEX)[1].strip
      @name = line.match(NAME_REGEX)[1].strip
      @complexity = line.match(COMPLEXITY_REGEX)[1].strip
      @lines = line.match(LINES_REGEX)[1].strip
      @defs = []
    end

    def <<(line)
      @defs << MetricFu::SaikuroParsingElement.new(line)
    end

    def to_h
      base = { name: @name, complexity: @complexity.to_i, lines: @lines.to_i }
      unless @defs.empty?
        defs = @defs.map do |my_def|
          my_def = my_def.to_h
          my_def.delete(:defs)
          my_def
        end
        base[:defs] = defs
      end
      base
    end
  end
end

Version data entries

9 entries across 9 versions & 3 rubygems

Version Path
metric_fu-4.13.0 lib/metric_fu/metrics/saikuro/parsing_element.rb
fastruby-metric_fu-5.0.0 lib/metric_fu/metrics/saikuro/parsing_element.rb
code_metric_fu-4.14.4 lib/metric_fu/metrics/saikuro/parsing_element.rb
code_metric_fu-4.14.3 lib/metric_fu/metrics/saikuro/parsing_element.rb
code_metric_fu-4.14.2 lib/metric_fu/metrics/saikuro/parsing_element.rb
code_metric_fu-4.14.1 lib/metric_fu/metrics/saikuro/parsing_element.rb
code_metric_fu-4.14.0 lib/metric_fu/metrics/saikuro/parsing_element.rb
metric_fu-4.12.0 lib/metric_fu/metrics/saikuro/parsing_element.rb
metric_fu-4.11.4 lib/metric_fu/metrics/saikuro/parsing_element.rb