class GithubToCanvasQuiz::Builder::Quiz
Create markdown files from a Canvas Quiz
Attributes
client[R]
course_id[R]
path[R]
quiz_id[R]
Public Class Methods
new(client, course_id, quiz_id, path)
click to toggle source
# File lib/github_to_canvas_quiz/builder/quiz.rb, line 10 def initialize(client, course_id, quiz_id, path) @path = path @client = client @course_id = course_id @quiz_id = quiz_id end
Public Instance Methods
build()
click to toggle source
# File lib/github_to_canvas_quiz/builder/quiz.rb, line 17 def build prepare_directory! save_quiz! save_questions! backup_canvas_to_json! commit! end
Private Instance Methods
backup_canvas_to_json!()
click to toggle source
# File lib/github_to_canvas_quiz/builder/quiz.rb, line 47 def backup_canvas_to_json! quiz = client.get_single_quiz(course_id, quiz_id) questions = client.list_questions(course_id, quiz_id) json_data = JSON.pretty_generate({ quiz: quiz, questions: questions }) File.write(json_path, json_data) end
canvas_question_data()
click to toggle source
# File lib/github_to_canvas_quiz/builder/quiz.rb, line 103 def canvas_question_data questions_data = client.list_questions(course_id, quiz_id) questions_data.map do |question_data| question_data.merge({ 'course_id' => course_id, 'quiz_id' => quiz_id }) end end
canvas_quiz_data()
click to toggle source
# File lib/github_to_canvas_quiz/builder/quiz.rb, line 90 def canvas_quiz_data quiz_data = client.get_single_quiz(course_id, quiz_id) quiz_data.merge({ 'course_id' => course_id }) end
commit!()
click to toggle source
# File lib/github_to_canvas_quiz/builder/quiz.rb, line 55 def commit! repo = RepositoryInterface.new(path) repo.commit_files('README.md', 'questions', '.canvas-snapshot.json', 'Created Canvas backup') end
json_path()
click to toggle source
# File lib/github_to_canvas_quiz/builder/quiz.rb, line 60 def json_path File.join(path, '.canvas-snapshot.json') end
prepare_directory!()
click to toggle source
# File lib/github_to_canvas_quiz/builder/quiz.rb, line 31 def prepare_directory! Dir.mkdir(path) unless Pathname(path).directory? @path = File.expand_path(path) end
question_readme_path(index)
click to toggle source
# File lib/github_to_canvas_quiz/builder/quiz.rb, line 72 def question_readme_path(index) filename = "#{index.to_s.rjust(2, '0')}.md" File.join(questions_path, filename) end
questions()
click to toggle source
Get question data from the Canvas API and return an array of Model::Question
memoized to prevent unnecessary API calls
# File lib/github_to_canvas_quiz/builder/quiz.rb, line 97 def questions @questions ||= canvas_question_data.map do |question_data| Parser::Canvas::Question.new(question_data).parse end end
questions_path()
click to toggle source
# File lib/github_to_canvas_quiz/builder/quiz.rb, line 68 def questions_path File.join(path, 'questions') end
quiz()
click to toggle source
Get quiz data from the Canvas API and return a Model::Quiz
memoized to prevent unnecessary API calls
# File lib/github_to_canvas_quiz/builder/quiz.rb, line 79 def quiz return @quiz if defined? @quiz @quiz = begin quiz = Parser::Canvas::Quiz.new(canvas_quiz_data).parse # use file path as repo if not present quiz.repo = File.basename(path) unless quiz.repo quiz end end
quiz_readme_path()
click to toggle source
# File lib/github_to_canvas_quiz/builder/quiz.rb, line 64 def quiz_readme_path File.join(path, 'README.md') end
repo()
click to toggle source
# File lib/github_to_canvas_quiz/builder/quiz.rb, line 27 def repo @repo ||= RepositoryInterface.new(path) end
save_questions!()
click to toggle source
# File lib/github_to_canvas_quiz/builder/quiz.rb, line 40 def save_questions! Dir.mkdir(questions_path) unless Pathname(questions_path).directory? questions.each.with_index do |question, index| File.write(question_readme_path(index), question.to_markdown) end end
save_quiz!()
click to toggle source
# File lib/github_to_canvas_quiz/builder/quiz.rb, line 36 def save_quiz! File.write(quiz_readme_path, quiz.to_markdown) end