class Quby::Questionnaires::Entities::QuestionOption

Constants

MARKDOWN_ATTRIBUTES

Attributes

description[R]
hidden[R]
hides_questions[R]
inner_title[R]
input_key[R]
key[R]
placeholder[R]
question[R]
questions[R]
shows_questions[R]
start_chosen[R]
value[R]
view_id[R]

Public Class Methods

new(key, question, options = {}) click to toggle source
# File lib/quby/questionnaires/entities/question_option.rb, line 24
def initialize(key, question, options = {})
  @key         = key
  @question    = question
  @value       = options[:value]
  @description = options[:description]
  @context_free_description = options[:context_free_description]
  @questions   = []
  @inner_title = options[:inner_title]
  @hides_questions = options[:hides_questions] || []
  @shows_questions = options[:shows_questions] || []
  @hidden = options[:hidden] || false
  @placeholder = options[:placeholder] || false
  question.extra_data[:placeholder] = key if @placeholder

  @input_key = (question.type == :check_box ? @key : "#{question.key}_#{key}".to_sym)
  @view_id   = "answer_#{input_key}"
end

Public Instance Methods

as_json(options = {}) click to toggle source
# File lib/quby/questionnaires/entities/question_option.rb, line 56
def as_json(options = {})
  {
    key: key,
    value: value,
    description: Quby::MarkdownParser.new(description).to_html,
    context_free_description: Quby::MarkdownParser.new(context_free_description).to_html,
    questions: questions,
    innerTitle: inner_title,
    hidesQuestions: hides_questions,
    showsQuestions: shows_questions,
    hidden: hidden,
    placeholder: placeholder,
    viewId: view_id
  }
end
context_free_description() click to toggle source
# File lib/quby/questionnaires/entities/question_option.rb, line 52
def context_free_description
  @context_free_description || @description
end
inner_title?() click to toggle source
# File lib/quby/questionnaires/entities/question_option.rb, line 42
def inner_title?
  inner_title.present?
end
key_in_use?(k) click to toggle source
# File lib/quby/questionnaires/entities/question_option.rb, line 46
def key_in_use?(k)
  return true if k == input_key
  @questions.each { |q| return true if q.key_in_use?(k) }
  false
end
to_codebook(questionnaire, opts) click to toggle source
# File lib/quby/questionnaires/entities/question_option.rb, line 72
def to_codebook(questionnaire, opts)
  return nil if inner_title
  output = []

  if question.type == :check_box
    option_key = question.codebook_key(key, questionnaire, opts)
    output << "#{option_key} #{question.codebook_output_type}#{' deprecated' if hidden || question.hidden }"
    output << "\"#{question.title} -- #{description}\"" unless question.title.blank? and description.blank?
    output << "1\tChecked"
    output << "0\tUnchecked"
    output << "empty\tUnchecked"
  else
    output << "#{value || key}\t\"#{description}\"#{' deprecated' if hidden}"
  end

  questions.each do |subquestion|
    output << "\t#{subquestion.to_codebook(questionnaire, opts).gsub("\n", "\n\t")}"
  end

  output.join("\n")
end