Class: AtomicAssessmentsImport::ExamSoft::Extractor::OptionsDetector

Inherits:
Object
  • Object
show all
Defined in:
lib/atomic_assessments_import/exam_soft/extractor/options_detector.rb

Constant Summary collapse

OPTION_PATTERN =
/\A\s*(\*?)([a-oA-O])\s*[.)]\s*(.+)/m

Instance Method Summary collapse

Constructor Details

#initialize(nodes) ⇒ OptionsDetector

Returns a new instance of OptionsDetector.



9
10
11
# File 'lib/atomic_assessments_import/exam_soft/extractor/options_detector.rb', line 9

def initialize(nodes)
  @nodes = nodes
end

Instance Method Details

#detectObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/atomic_assessments_import/exam_soft/extractor/options_detector.rb', line 13

def detect
  options = []

  @nodes.each do |node|
    text = node.text.strip
    match = text.match(OPTION_PATTERN)
    next unless match

    marker = match[1]
    letter = match[2].downcase
    option_text = match[3].strip

    correct = marker == "*" || bold_node?(node)

    options << { text: option_text, letter: letter, correct: correct }
  end

  options
end