Sha256: 55a3f57bf36966196b6e46f6b6cb54943c659a1e062b46e6ba765e2fdc9f861e

Contents?: true

Size: 1.36 KB

Versions: 2

Compression:

Stored size: 1.36 KB

Contents

module Leap
  class Report
    include XmlSerializer

    attr_reader :subject, :committee, :conclusion, :quorum
    
    def initialize(subject, committee, report)
      raise ArgumentError, 'Reports must identify themselves' unless committee.is_a?(::Leap::Committee)
      @subject = subject
      @committee = committee
      raise ArgumentError, 'Please report with quorum => conclusion' unless report.is_a?(Hash) and report.length == 1
      @quorum, @conclusion = report.first
    end

    def formatted_conclusion
      return @formatted_conclusion unless @formatted_conclusion.nil?
      if characteristic = subject.class.characteristics[committee.name]
        @formatted_conclusion = characteristic.display committee.name => conclusion
      end
      @formatted_conclusion ||= conclusion
    end

    def as_json(*)
      {
        'committee' => committee.as_json,
        'conclusion' => formatted_conclusion,
        'quorum' => quorum.as_json
      }
    end

    def to_xml(options = {})
      super options do |xml|
        xml.report do |report_block|
          committee.to_xml(options.merge :skip_instruct => true, :builder => report_block)
          report_block.conclusion formatted_conclusion, :type => formatted_conclusion.class.to_s.downcase
          quorum.to_xml(options.merge :skip_instruct => true, :builder => report_block)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
leap-0.4.6 lib/leap/report.rb
leap-0.4.5 lib/leap/report.rb