Sha256: db5de62380931adfad2a85c6250ef4f98f94ce871e156b2b22f2fa24fb27a882

Contents?: true

Size: 870 Bytes

Versions: 1

Compression:

Stored size: 870 Bytes

Contents

# Used to determine if cards form quiz type
# S postfix means Single option, M postfix means Multiple options
module QuizModule
  RE_SELECTED = /(?<=\([*x]\)\s).*/.freeze
  RE_CHECKED = /(?<=\[[*x]\]\s).*/.freeze
  RE_WRONG_OPT_S = /(?<=\(\)\s).*/.freeze
  RE_WRONG_OPT_M = /(?<=\[\]\s).*/.freeze

  RE_QUIZ_OPTION_S = Regexp.new(
    "#{RE_WRONG_OPT_S}|#{RE_SELECTED}",
    Regexp::IGNORECASE
  )

  RE_QUIZ_OPTION_M = Regexp.new(
    "#{RE_WRONG_OPT_M}|#{RE_CHECKED}",
    Regexp::IGNORECASE
  )

  def quiz_multi_choice?(back)
    if back.is_a?(Array) && back.any?
      back.each { |element| return false unless element[RE_QUIZ_OPTION_M] }

      # Find at least 1 checked answer
      return false unless back.find do |element|
        true if element[RE_CHECKED]
      end

      @quiz = true
      @front_only = true
      return true
    end
    false
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rast-0.18.0 examples/quiz_module.rb