class NerdQuiz::Question

Public Class Methods

get(path) click to toggle source
# File lib/nerd_quiz/question.rb, line 4
def get(path)
  self.new path
end
new(path) click to toggle source
# File lib/nerd_quiz/question.rb, line 9
def initialize(path)
  @path = path
  @question = {}
  @parsed = {}
end

Public Instance Methods

answer() click to toggle source
# File lib/nerd_quiz/question.rb, line 20
def answer
  set
  @question[:answer]
end
label() click to toggle source
# File lib/nerd_quiz/question.rb, line 25
def label
  set
  @question[:label]
end
text() click to toggle source
# File lib/nerd_quiz/question.rb, line 15
def text
  set
  @question[:text]
end

Private Instance Methods

extract_answer() click to toggle source
# File lib/nerd_quiz/question.rb, line 57
def extract_answer
  @question[:answer] = @parsed["right_answer"][1]
end
extract_label() click to toggle source
# File lib/nerd_quiz/question.rb, line 61
def extract_label
  label = []
  label << @parsed["category"]
  label << @parsed["sub_category"] unless @parsed["category"] == @parsed["sub_category"]
  @question[:label] = "(#{label.join(" - ")})"
end
extract_text() click to toggle source
# File lib/nerd_quiz/question.rb, line 45
def extract_text
  text = []
  text << @parsed["text"]
  (1..4).each do |i|
    key = "a#{i}"
    # When the answer has significant whitespace, wrap the answer in quotes
    answer = @parsed[key] =~ /^\s/ || @parsed[key] =~ /\s$/ ? "\"#{@parsed[key]}\"" : @parsed[key]
    text << "#{i}) #{answer}"
  end
  @question[:text] = text.join("\n")
end
parse() click to toggle source
# File lib/nerd_quiz/question.rb, line 41
def parse
  @parsed = Yajl::Parser.new.parse(File.new(@path, 'r'))["question"]
end
set() click to toggle source
# File lib/nerd_quiz/question.rb, line 32
def set
  if @question.empty?
    parse
    extract_text
    extract_answer
    extract_label
  end
end