Class: MetricFu::FlogReporter::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/metric_fu/flog_reporter/base.rb

Constant Summary collapse

MODULE_NAME =
"([A-Za-z]+)+"
METHOD_NAME =
"#([a-z0-9]+_?)+\\??\\!?"
SCORE =
"\\d+\\.\\d+"
METHOD_NAME_RE =
Regexp.new("#{MODULE_NAME}#{METHOD_NAME}")
SCORE_RE =
Regexp.new(SCORE)
METHOD_LINE_RE =
Regexp.new("#{MODULE_NAME}#{METHOD_NAME}:\\s\\(#{SCORE}\\)")
OPERATOR_LINE_RE =
Regexp.new("\\s+(#{SCORE}):\\s(.*)$")

Class Method Summary collapse

Class Method Details

.cycle(first_value, second_value, iteration) ⇒ Object



20
21
22
23
# File 'lib/metric_fu/flog_reporter/base.rb', line 20

def cycle(first_value, second_value, iteration)
  return first_value if iteration % 2 == 0
  return second_value
end

.parse(text) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/metric_fu/flog_reporter/base.rb', line 25

def parse(text)
  score = text[/\w+ = (\d+\.\d+)/, 1]
  return nil unless score
  page = Page.new(score)

  text.each_line do |method_line|
    if METHOD_LINE_RE =~ method_line and
       method_name = method_line[METHOD_NAME_RE] and
       score = method_line[SCORE_RE]
       page.scanned_methods << ScannedMethod.new(method_name, score)
    end

    if OPERATOR_LINE_RE =~ method_line and
       operator = method_line[OPERATOR_LINE_RE, 2] and
       score = method_line[SCORE_RE]
       raise InvalidFlog if page.scanned_methods.empty?
       page.scanned_methods.last.operators << Operator.new(score, operator)
    end
  end

  page
end