Sha256: dffeddfed94d7aa43b54020dbce078ca40b0db7a0eb1354b6a89b227eb972a1f

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

module Kolekti
  module Analizo
    class Parser
      def initialize(wanted_metric_configurations, persistence_strategy)
        @wanted_metric_configurations = wanted_metric_configurations
        @persistence_strategy = persistence_strategy
      end

      def parse_all(output)
        YAML.load_documents(output).each do |hash|
          parse(hash)
        end
      end

      private

      def parse_file_name(file_name)
        without_extension = file_name.rpartition('.').first
        without_extension.gsub('.', '_').gsub('/', '.')
      end

      def parse_class_name(analizo_module_name)
        analizo_module_name.split('::').join('.')
      end

      def module_name(file_name, analizo_module_name)
        "#{parse_file_name(file_name)}.#{parse_class_name(analizo_module_name)}"
      end

      def parse(result_map)
        result_map.each do |code, value|
          metric_configuration = @wanted_metric_configurations[code]
          next if metric_configuration.nil?

          if result_map['_filename'].nil?
            @persistence_strategy.create_tree_metric_result(
              metric_configuration, "ROOT", value, KalibroClient::Entities::Miscellaneous::Granularity::SOFTWARE)
          else
            name = module_name(result_map['_filename'].last, result_map['_module'])
            @persistence_strategy.create_tree_metric_result(
              metric_configuration, name, value, KalibroClient::Entities::Miscellaneous::Granularity::CLASS)
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
kolekti_analizo-5.0.0 lib/kolekti_analizo/parser.rb