Class: Kolekti::Radon::Parser::Base

Inherits:
Parser
  • Object
show all
Defined in:
lib/kolekti/radon/parser/base.rb

Direct Known Subclasses

Cyclomatic, Maintainability, Raw

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(metric_configurations, persistence_strategy, logger) ⇒ Base

Returns a new instance of Base.



7
8
9
10
11
# File 'lib/kolekti/radon/parser/base.rb', line 7

def initialize(metric_configurations, persistence_strategy, logger)
  @metric_configurations = metric_configurations
  @persistence_strategy = persistence_strategy
  @logger = logger
end

Instance Attribute Details

#loggerObject (readonly)

Returns the value of attribute logger.



5
6
7
# File 'lib/kolekti/radon/parser/base.rb', line 5

def logger
  @logger
end

#metric_configurationsObject (readonly)

Returns the value of attribute metric_configurations.



5
6
7
# File 'lib/kolekti/radon/parser/base.rb', line 5

def metric_configurations
  @metric_configurations
end

#persistence_strategyObject (readonly)

Returns the value of attribute persistence_strategy.



5
6
7
# File 'lib/kolekti/radon/parser/base.rb', line 5

def persistence_strategy
  @persistence_strategy
end

Instance Method Details

#commandObject

Raises:

  • (NotImplementedError)


13
# File 'lib/kolekti/radon/parser/base.rb', line 13

def command; raise NotImplementedError; end

#parse(raw_output) ⇒ Object

Default implementation is somewhat naive, but works for both Raw and Maintainability Index - it just expects keys named the same as the code for each metric configuration.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/kolekti/radon/parser/base.rb', line 18

def parse(raw_output)
  raw_output.each do |file_name, result_hash|
    module_name = self.class.parse_file_name(file_name)

    @metric_configurations.each do |metric_configuration|
      value = result_hash[metric_configuration.metric.code] unless result_hash.key?('error')
      value ||= self.class.default_value

      @persistence_strategy.create_tree_metric_result(
        metric_configuration, module_name, value.to_f,
        KalibroClient::Entities::Miscellaneous::Granularity::PACKAGE)
    end
  end
end