module Smartdown::Model::Element::Question
Public Class Methods
create_question_answer(elements, response=nil)
click to toggle source
# File lib/smartdown/model/element/question.rb, line 23 def create_question_answer(elements, response=nil) matching_question_element(elements) do |element| question = create_question(elements, element) answer = create_answer(response, element) return [question, answer] end return [nil, nil] end
Private Class Methods
create_answer(response, element)
click to toggle source
# File lib/smartdown/model/element/question.rb, line 59 def create_answer(response, element) response ? element.answer_type.new(response, element) : nil end
create_question(elements, element)
click to toggle source
# File lib/smartdown/model/element/question.rb, line 44 def create_question(elements, element) question_model(element).new(elements) end
matching_question_element(elements) { |element| ... }
click to toggle source
# File lib/smartdown/model/element/question.rb, line 34 def matching_question_element(elements) constants.find do |symbol| question_type = const_get(symbol) if element = elements.find {|e| e.is_a?(question_type) } yield element end end end
question_model(element)
click to toggle source
# File lib/smartdown/model/element/question.rb, line 48 def question_model(element) Smartdown::Api.const_get question_model_name(element) end
question_model_name(element)
click to toggle source
# File lib/smartdown/model/element/question.rb, line 52 def question_model_name(element) symbol = element.class.name.split(':').last.to_sym name = (symbol.to_s + 'Question').to_sym name = symbol unless Smartdown::Api.const_defined?(name) name end