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