asafschers/scoruby

View on GitHub
lib/scoruby/decision.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module Scoruby
  class Decision
    attr_reader :score, :score_distribution

    def initialize(xml)
      children = xml.children
      distributions = children.select { |c| c.name == 'ScoreDistribution' }

      @score = xml.attribute('score').to_s
      return if distributions.empty?

      @score_distribution = {}
      distributions.each do |score_distribution|
        value = score_distribution.attributes['value'].to_s
        @score_distribution[value] = probability(score_distribution, xml)
      end
    end

    def probability(score_distribution, xml)
      probability = score_distribution.attributes['probability'].to_s
      return probability.to_f if probability != ''
      record_count(score_distribution) / record_count(xml)
    end

    def record_count(xml)
      xml.attributes['recordCount'].to_s.to_f
    end
  end
end