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