class GithubToCanvasQuiz::Parser::Canvas::Question

Attributes

data[R]

Public Class Methods

new(data) click to toggle source
# File lib/github_to_canvas_quiz/parser/canvas/question.rb, line 11
def initialize(data)
  @data = data
end

Public Instance Methods

parse() click to toggle source
# File lib/github_to_canvas_quiz/parser/canvas/question.rb, line 15
def parse
  Model::Question.new(
    course_id: data['course_id'],
    quiz_id: data['quiz_id'],
    id: data['id'],
    type: data['question_type'],
    name: data['question_name'],
    description: clean_html(data['question_text']),
    sources: sources,
    answers: answers,
    distractors: distractors
  )
end

Private Instance Methods

answers() click to toggle source
# File lib/github_to_canvas_quiz/parser/canvas/question.rb, line 43
def answers
  data['answers'].map do |answer|
    Answer.for(data['question_type'], answer)
  end
end
distractors() click to toggle source
# File lib/github_to_canvas_quiz/parser/canvas/question.rb, line 49
def distractors
  (data['matching_answer_incorrect_matches'] || '').split("\n")
end
sources() click to toggle source
# File lib/github_to_canvas_quiz/parser/canvas/question.rb, line 31
def sources
  html = data['neutral_comments_html']
  return unless html

  Nokogiri::HTML5.fragment(html).css('a').map do |node|
    {
      'name' => clean_html(node.content),
      'url' => node['href']
    }
  end
end