Sha256: 6a08d00db0c90140b3f074835ddd5efad9b4552904cbebd85ae185cd0b686503

Contents?: true

Size: 1.75 KB

Versions: 7

Compression:

Stored size: 1.75 KB

Contents

# frozen_string_literal: true

module Kitchen::Directions::BakeNumberedExercise
  class V1
    def bake(exercise:, number:, suppress_solution_if: false,
             note_suppressed_solutions: false, cases: false)
      problem = exercise.problem
      solution = exercise.solution

      # Store label information
      label_number = "#{exercise.ancestor(:chapter).count_in(:book)}.#{number}"
      exercise.target_label(label_text: 'exercise', custom_content: label_number, cases: cases)

      problem_number = "<span class='os-number'>#{number}</span>"

      suppress_solution =
        case suppress_solution_if
        when Symbol
          number.send(suppress_solution_if)
        else
          suppress_solution_if
        end

      if solution.present?
        if suppress_solution
          solution.trash
          exercise.add_class('os-hasSolution-trashed') if note_suppressed_solutions
        else
          problem_number = "<a class='os-number' href='##{exercise.id}-solution'>#{number}</a>"
          bake_solution(exercise: exercise, number: number)
        end
      end

      problem.replace_children(with:
        <<~HTML
          #{problem_number}
          <span class='os-divider'>. </span>
          <div class="os-problem-container">#{problem.children}</div>
        HTML
      )
    end

    def bake_solution(exercise:, number:, divider: '. ')
      solution = exercise.solution
      solution.id = "#{exercise.id}-solution"
      exercise.add_class('os-hasSolution')

      solution.replace_children(with:
        <<~HTML
          <a class='os-number' href='##{exercise.id}'>#{number}</a>
          <span class='os-divider'>#{divider}</span>
          <div class="os-solution-container">#{solution.children}</div>
        HTML
      )
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
openstax_kitchen-14.0.0 lib/kitchen/directions/bake_numbered_exercise/v1.rb
openstax_kitchen-13.0.0 lib/kitchen/directions/bake_numbered_exercise/v1.rb
openstax_kitchen-12.2.0 lib/kitchen/directions/bake_numbered_exercise/v1.rb
openstax_kitchen-12.1.0 lib/kitchen/directions/bake_numbered_exercise/v1.rb
openstax_kitchen-12.0.0 lib/kitchen/directions/bake_numbered_exercise/v1.rb
openstax_kitchen-11.2.0 lib/kitchen/directions/bake_numbered_exercise/v1.rb
openstax_kitchen-11.1.0 lib/kitchen/directions/bake_numbered_exercise/v1.rb