class RapidsRivers::PacketProblems

Understands issues about a particular JSON-formatted Packet

Public Class Methods

new(original_json) click to toggle source
# File lib/rapids_rivers/packet_problems.rb, line 8
def initialize(original_json)
  @json_string = original_json
  @informational_messages, @warnings, @errors, @severe_errors = [], [], [], []
end

Public Instance Methods

error(explanation) click to toggle source
# File lib/rapids_rivers/packet_problems.rb, line 29
def error(explanation)
  @errors << explanation
end
errors?() click to toggle source
# File lib/rapids_rivers/packet_problems.rb, line 13
def errors?
  @errors.any? || @severe_errors.any?
end
information(explanation) click to toggle source
# File lib/rapids_rivers/packet_problems.rb, line 21
def information(explanation)
  @informational_messages << explanation
end
messages?() click to toggle source
# File lib/rapids_rivers/packet_problems.rb, line 17
def messages?
  errors? || @warnings.any? || @informational_messages.any?
end
severe_error(explanation) click to toggle source
# File lib/rapids_rivers/packet_problems.rb, line 33
def severe_error(explanation)
  @severe_errors << explanation
end
to_s() click to toggle source
# File lib/rapids_rivers/packet_problems.rb, line 37
def to_s
  return("No errors detected in JSON:\n\t" + @json_string) if !messages?
  results = "Errors and/or messages exist. Original JSON string is:\n\t"
  results += @json_string
  results += messages("Severe errors", @severe_errors)
  results += messages("Errors", @errors)
  results += messages("Warnings", @warnings)
  results += messages("Information", @informational_messages)
  results += "\n"
end
warning(explanation) click to toggle source
# File lib/rapids_rivers/packet_problems.rb, line 25
def warning(explanation)
  @warnings << explanation
end

Private Instance Methods

messages(label, messages) click to toggle source
# File lib/rapids_rivers/packet_problems.rb, line 50
def messages(label, messages)
  return "" if messages.empty?
  results = "\n"
  results += ' '*5
  results += label
  results += ": "
  results += messages.size.to_s
  results += "\n\t"
  results += messages.join("\n\t")
end