openstax_kitchen 5.0.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/changelog.yml +27 -0
  3. data/.github/workflows/rubocop.yml +28 -0
  4. data/CHANGELOG.md +33 -0
  5. data/Gemfile.lock +8 -6
  6. data/docker/rubocop +22 -0
  7. data/lib/kitchen/directions/bake_appendix.rb +3 -1
  8. data/lib/kitchen/directions/bake_chapter_introductions.rb +22 -15
  9. data/lib/kitchen/directions/bake_chapter_introductions/chapter_introduction.xhtml.erb +0 -0
  10. data/lib/kitchen/directions/bake_chapter_section_exercises/main.rb +2 -2
  11. data/lib/kitchen/directions/bake_chapter_section_exercises/v1.rb +2 -1
  12. data/lib/kitchen/directions/bake_chapter_solutions/main.rb +11 -0
  13. data/lib/kitchen/directions/bake_chapter_solutions/v1.rb +37 -0
  14. data/lib/kitchen/directions/bake_chapter_summary.rb +13 -6
  15. data/lib/kitchen/directions/bake_example.rb +4 -1
  16. data/lib/kitchen/directions/bake_figure.rb +13 -0
  17. data/lib/kitchen/directions/bake_footnotes/main.rb +2 -2
  18. data/lib/kitchen/directions/bake_footnotes/v1.rb +11 -8
  19. data/lib/kitchen/directions/bake_further_research.rb +2 -0
  20. data/lib/kitchen/directions/bake_index/v1.rb +2 -2
  21. data/lib/kitchen/directions/bake_notes/bake_numbered_notes/main.rb +43 -0
  22. data/lib/kitchen/directions/bake_notes/bake_numbered_notes/v1.rb +37 -0
  23. data/lib/kitchen/directions/bake_notes/bake_numbered_notes/v2.rb +25 -0
  24. data/lib/kitchen/directions/bake_notes/bake_numbered_notes/v3.rb +32 -0
  25. data/lib/kitchen/directions/bake_numbered_exercise/main.rb +3 -2
  26. data/lib/kitchen/directions/bake_numbered_exercise/v1.rb +10 -1
  27. data/lib/kitchen/directions/bake_numbered_table/bake_table_body.rb +29 -0
  28. data/lib/kitchen/directions/bake_numbered_table/main.rb +4 -0
  29. data/lib/kitchen/directions/bake_numbered_table/v1.rb +1 -17
  30. data/lib/kitchen/directions/bake_numbered_table/v2.rb +31 -0
  31. data/lib/kitchen/directions/bake_preface/main.rb +2 -2
  32. data/lib/kitchen/directions/bake_preface/v1.rb +3 -2
  33. data/lib/kitchen/directions/book_answer_key_container/eob_answer_key_outer_container.xhtml.erb +9 -0
  34. data/lib/kitchen/directions/book_answer_key_container/main.rb +2 -2
  35. data/lib/kitchen/directions/book_answer_key_container/v1.rb +4 -3
  36. data/lib/kitchen/directions/chapter_review_container/chapter_review.xhtml.erb +3 -3
  37. data/lib/kitchen/directions/chapter_review_container/main.rb +2 -2
  38. data/lib/kitchen/directions/chapter_review_container/v1.rb +4 -2
  39. data/lib/kitchen/directions/eoc_section_title_link_snippet.rb +13 -0
  40. data/lib/kitchen/directions/move_exercises_to_eoc/main.rb +10 -0
  41. data/lib/kitchen/directions/move_exercises_to_eoc/v3.rb +49 -0
  42. data/lib/kitchen/directions/move_solutions_to_answer_key/main.rb +6 -2
  43. data/lib/kitchen/directions/move_solutions_to_answer_key/strategies/default.rb +27 -0
  44. data/lib/kitchen/directions/move_solutions_to_answer_key/strategies/precalculus.rb +84 -0
  45. data/lib/kitchen/directions/move_solutions_to_answer_key/v1.rb +11 -7
  46. data/lib/kitchen/element_base.rb +15 -0
  47. data/lib/kitchen/page_element.rb +2 -3
  48. data/lib/kitchen/patches/integer.rb +24 -0
  49. data/lib/kitchen/patches/nokogiri.rb +7 -0
  50. data/lib/kitchen/version.rb +1 -1
  51. data/lib/locales/en.yml +2 -1
  52. data/lib/locales/es.yml +2 -1
  53. data/lib/locales/pl.yml +3 -2
  54. metadata +19 -6
  55. data/.github/config.yml +0 -14
  56. data/lib/kitchen/directions/bake_notes/bake_numbered_notes.rb +0 -51
  57. data/lib/kitchen/directions/book_answer_key_container/eob_solutions_container.xhtml.erb +0 -9
  58. data/lib/kitchen/directions/move_solutions_to_answer_key/strategies/american_government.rb +0 -19
@@ -22,6 +22,16 @@ module Kitchen
22
22
  uuid_prefix: uuid_prefix
23
23
  )
24
24
  end
25
+
26
+ def self.v3(chapter:, metadata_source:, klass:, append_to: nil, uuid_prefix: '.')
27
+ V3.new.bake(
28
+ chapter: chapter,
29
+ metadata_source: metadata_source,
30
+ append_to: append_to,
31
+ klass: klass,
32
+ uuid_prefix: uuid_prefix
33
+ )
34
+ end
25
35
  end
26
36
  end
27
37
  end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kitchen::Directions::MoveExercisesToEOC
4
+ # The difference from v1 is the presence of a section title
5
+ # and from v2 the lack of additional "os-section-area" and os-#{@klass} wrappers
6
+ class V3
7
+ renderable
8
+
9
+ def bake(chapter:, metadata_source:, klass:, append_to: nil, uuid_prefix: '.')
10
+ @klass = klass
11
+ @metadata = metadata_source.children_to_keep.copy
12
+ @title = I18n.t(:"eoc.#{klass}")
13
+ @uuid_prefix = uuid_prefix
14
+
15
+ exercise_clipboard = Kitchen::Clipboard.new
16
+
17
+ chapter.non_introduction_pages.each do |page|
18
+ sections = page.search("section.#{@klass}")
19
+
20
+ sections.each do |exercise_section|
21
+ exercise_section.first("[data-type='title']")&.trash
22
+
23
+ section_title = Kitchen::Directions::EocSectionTitleLinkSnippet.v1(page: page)
24
+
25
+ exercise_section.exercises.each do |exercise|
26
+ exercise.document.pantry(name: :link_text).store(
27
+ "#{I18n.t(:exercise_label)} #{chapter.count_in(:book)}.#{exercise.count_in(:chapter)}",
28
+ label: exercise.id
29
+ )
30
+ end
31
+
32
+ # Configure section title
33
+ exercise_section.prepend(child: section_title)
34
+ exercise_section.cut(to: exercise_clipboard)
35
+ end
36
+ end
37
+
38
+ return if exercise_clipboard.none?
39
+
40
+ @content = exercise_clipboard.paste
41
+
42
+ append_to_element = append_to || chapter
43
+ @in_composite_chapter = append_to_element.is?(:composite_chapter)
44
+
45
+ append_to_element.append(child: render(file:
46
+ '../../templates/eoc_section_title_template.xhtml.erb'))
47
+ end
48
+ end
49
+ end
@@ -3,11 +3,15 @@
3
3
  module Kitchen
4
4
  module Directions
5
5
  module MoveSolutionsToAnswerKey
6
- def self.v1(chapter:, metadata_source:, strategy:, append_to:)
6
+ def self.v1(chapter:, metadata_source:, strategy:, append_to:, strategy_options: {}, solutions_plural: true)
7
7
  V1.new.bake(
8
8
  chapter: chapter,
9
9
  metadata_source: metadata_source,
10
- strategy: strategy, append_to: append_to)
10
+ strategy: strategy,
11
+ append_to: append_to,
12
+ strategy_options: strategy_options,
13
+ solutions_plural: solutions_plural
14
+ )
11
15
  end
12
16
  end
13
17
  end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kitchen::Directions::MoveSolutionsToAnswerKey
4
+ module Strategies
5
+ class Default
6
+ def bake(chapter:, append_to:)
7
+ bake_section(chapter: chapter, append_to: append_to)
8
+ end
9
+
10
+ protected
11
+
12
+ def bake_section(chapter:, append_to:)
13
+ @classes.each do |klass|
14
+ chapter.search(".#{klass} [data-type='solution']").each do |solution|
15
+ append_to.add_child(solution.cut.to_s)
16
+ end
17
+ end
18
+ end
19
+
20
+ # This method helps to obtain more strategy-specific params through
21
+ # "strategy_options: {blah1: 1, blah2: 2}"
22
+ def initialize(strategy_options)
23
+ @classes = strategy_options[:classes] || (raise 'missing classes for strategy')
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kitchen::Directions::MoveSolutionsToAnswerKey
4
+ module Strategies
5
+ class Precalculus
6
+ def bake(chapter:, append_to:)
7
+ try_note_solutions(chapter: chapter, append_to: append_to)
8
+
9
+ # Bake section exercises
10
+ chapter.non_introduction_pages.each do |page|
11
+ number = "#{chapter.count_in(:book)}.#{page.count_in(:chapter)}"
12
+ bake_section(chapter: page, append_to: append_to, klass: 'section-exercises',
13
+ number: number)
14
+ end
15
+
16
+ # Bake other types of exercises
17
+ classes = %w[review-exercises practice-test]
18
+ classes.each do |klass|
19
+ bake_section(chapter: chapter, append_to: append_to, klass: klass)
20
+ end
21
+ end
22
+
23
+ protected
24
+
25
+ def bake_section(chapter:, append_to:, klass:, number: nil)
26
+ section_solutions_set = Kitchen::Clipboard.new
27
+ chapter.search(".#{klass}").each do |section|
28
+ section.search('[data-type="solution"]').each do |solution|
29
+ solution.cut(to: section_solutions_set)
30
+ end
31
+ end
32
+
33
+ return if section_solutions_set.items.empty?
34
+
35
+ title = <<~HTML
36
+ <h3 data-type="title">
37
+ <span class="os-title-label">#{I18n.t(:"eoc.#{klass}", number: number)}</span>
38
+ </h3>
39
+ HTML
40
+
41
+ append_solution_area(title: title, solutions: section_solutions_set, append_to: append_to)
42
+ end
43
+
44
+ def try_note_solutions(chapter:, append_to:)
45
+ append_to.add_child(
46
+ <<~HTML
47
+ <div class="os-module-reset-solution-area os-try-solution-area">
48
+ <h3 data-type="title">
49
+ <span class="os-title-label">#{I18n.t(:"notes.try")}</span>
50
+ </h3>
51
+ </div>
52
+ HTML
53
+ )
54
+ chapter.non_introduction_pages.each do |page|
55
+ solutions = Kitchen::Clipboard.new
56
+ page.notes('$.try').each do |note|
57
+ note.exercises.each do |exercise|
58
+ solution = exercise.solution
59
+ solution&.cut(to: solutions) #if solution
60
+ end
61
+ end
62
+ next if solutions.items.empty?
63
+
64
+ title_snippet = Kitchen::Directions::EocSectionTitleLinkSnippet.v2(page: page)
65
+
66
+ append_solution_area(title: title_snippet, solutions: solutions,
67
+ append_to: append_to.search('.os-try-solution-area').first)
68
+ end
69
+ end
70
+
71
+ def append_solution_area(title:, solutions:, append_to:)
72
+ append_to = append_to.add_child(
73
+ <<~HTML
74
+ <div class="os-solution-area">
75
+ #{title}
76
+ </div>
77
+ HTML
78
+ ).first
79
+
80
+ append_to.add_child(solutions.paste)
81
+ end
82
+ end
83
+ end
84
+ end
@@ -2,22 +2,26 @@
2
2
 
3
3
  module Kitchen::Directions::MoveSolutionsToAnswerKey
4
4
  class V1
5
- def bake(chapter:, metadata_source:, strategy:, append_to:)
5
+ def bake(chapter:, metadata_source:, strategy:, append_to:, strategy_options: {}, solutions_plural: true)
6
6
  strategy =
7
7
  case strategy
8
8
  when :calculus
9
- Strategies::Calculus
9
+ Strategies::Calculus.new
10
10
  when :uphysics
11
- Strategies::UPhysics
12
- when :american_government
13
- Strategies::AmericanGovernment
11
+ Strategies::UPhysics.new
12
+ when :precalculus
13
+ Strategies::Precalculus.new
14
+ when :default
15
+ Strategies::Default.new(strategy_options)
14
16
  else
15
17
  raise 'No such strategy'
16
18
  end
17
19
 
20
+ solutions_or_solution = solutions_plural ? 'solutions' : 'solution'
18
21
  append_to.append(child:
19
22
  <<~HTML
20
- <div class="os-eob os-solutions-container" data-type="composite-page" data-uuid-key=".solutions#{chapter.count_in(:book)}">
23
+ <div class="os-eob os-#{solutions_or_solution}-container" data-type="composite-page" \
24
+ data-uuid-key=".#{solutions_or_solution}#{chapter.count_in(:book)}">
21
25
  <h2 data-type="document-title">
22
26
  <span class="os-text">#{I18n.t(:chapter)} #{chapter.count_in(:book)}</span>
23
27
  </h2>
@@ -28,7 +32,7 @@ module Kitchen::Directions::MoveSolutionsToAnswerKey
28
32
  </div>
29
33
  HTML
30
34
  )
31
- strategy.new.bake(chapter: chapter, append_to: append_to.last_element)
35
+ strategy.bake(chapter: chapter, append_to: append_to.last_element)
32
36
  end
33
37
  end
34
38
  end
@@ -508,6 +508,21 @@ module Kitchen
508
508
  Element.new(node: raw.parent, document: document, short_type: "parent(#{short_type})")
509
509
  end
510
510
 
511
+ # returns previous element
512
+ # skips double indentations that the nokigiri sometimes picks up
513
+ # nil if there's no previous sibling
514
+ #
515
+ def previous
516
+ prev = raw.previous
517
+ return prev if prev.nil?
518
+
519
+ Element.new(
520
+ node: prev,
521
+ document: document,
522
+ short_type: "previous(#{short_type})"
523
+ )
524
+ end
525
+
511
526
  # TODO: make it clear if all of these methods take Element, Node, or String
512
527
 
513
528
  # If child argument given, prepends it before the element's current children.
@@ -88,11 +88,10 @@ module Kitchen
88
88
 
89
89
  # Returns the summary element.
90
90
  #
91
- # @raise [ElementNotFoundError] if no matching element is found
92
- # @return [Element]
91
+ # @return [Element, nil] the summary or nil if no summary found
93
92
  #
94
93
  def summary
95
- first!(selectors.page_summary)
94
+ first(selectors.page_summary)
96
95
  end
97
96
 
98
97
  # Returns the exercises element.
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Monkey patches for +Integer+
4
+ #
5
+ class Integer
6
+ ROMAN_NUMERALS = %w[0 i ii iii iv v vi vii viii ix x xi xii xiii xiv xv xvi xvii xviii xix xx].freeze
7
+
8
+ # Formats as different types of integers, including roman numerals.
9
+ #
10
+ # @return [String]
11
+ #
12
+ def to_format(format)
13
+ case format
14
+ when :arabic
15
+ to_s
16
+ when :roman
17
+ raise 'Unknown conversion to Roman numerals' if self >= ROMAN_NUMERALS.size
18
+
19
+ ROMAN_NUMERALS[self]
20
+ else
21
+ raise 'Unknown integer format'
22
+ end
23
+ end
24
+ end
@@ -67,6 +67,13 @@ module Nokogiri
67
67
  self[:class]&.split || []
68
68
  end
69
69
 
70
+ def previous
71
+ prev = previous_element
72
+ return nil if prev.nil?
73
+
74
+ prev.text? ? prev.previous : prev
75
+ end
76
+
70
77
  def self.selector_to_css_nodes(selector)
71
78
  # No need to parse the same selector more than once.
72
79
  @parsed_selectors ||= {}
@@ -3,5 +3,5 @@
3
3
  # A library for modifying the structure of OpenStax book XML.
4
4
  #
5
5
  module Kitchen
6
- VERSION = '5.0.0'
6
+ VERSION = '6.0.0'
7
7
  end
data/lib/locales/en.yml CHANGED
@@ -16,12 +16,13 @@ en:
16
16
  learning_objectives: Learning Objectives
17
17
  stepwise_step_label: Step
18
18
  references: References
19
+ answer_key_title: Answer Key
19
20
  eoc_chapter_review: Chapter Review
20
21
  eoc_key_terms_title: Key Terms
21
22
  eoc_summary_title: Summary
22
23
  eoc_exercises_title: Exercises
23
24
  eoc_composite_metadata_title: Chapter Review
24
- eoc_answer_key_title: Answer Key
25
+ eoc_solutions_title: Solutions
25
26
  eoc_key_concepts: Key Concepts
26
27
  eoc_key_equations: Key Equations
27
28
  eoc_suggested_reading: Suggestions for Further Study
data/lib/locales/es.yml CHANGED
@@ -16,12 +16,13 @@ es:
16
16
  learning_objectives: Objetivos De Aprendizaje
17
17
  stepwise_step_label: Paso
18
18
  references: Referencias
19
+ answer_key_title: Respuestas Clave
19
20
  eoc_chapter_review: Revisión Del Capítulo
20
21
  eoc_key_terms_title: Términos Clave
21
22
  eoc_summary_title: Resumen
22
23
  eoc_exercises_title: Ejercicios
23
24
  eoc_composite_metadata_title: Revisión Del Capítulo
24
- eoc_answer_key_title: Respuestas Clave
25
+ eoc_solutions_title: Soluciones
25
26
  eoc_key_concepts: Conceptos Clave
26
27
  eoc_key_equations: Ecuaciones Clave
27
28
  eoc_suggested_reading: Sugerencias Para Estudios Adicionales
data/lib/locales/pl.yml CHANGED
@@ -14,10 +14,11 @@ pl:
14
14
  chapter_review: Podsumowanie rozdziału
15
15
  learning_objectives: Cel dydaktyczny
16
16
  stepwise_step_label: Krok
17
+ answer_key_title: Rozwiązania zadań
17
18
  eoc_chapter_review: Podsumowanie rozdziału
18
- eoc_key_terms_title: Kluczowe pojęcia
19
+ key_terms_title: Kluczowe pojęcia
20
+ eoc_solutions_title: Rozwiązania
19
21
  eoc_summary_title: Podsumowanie
20
- eoc_answer_key_title: Rozwiązania zadań
21
22
  eoc_key_equations: Najważniejsze wzory
22
23
  eob_index_title: Skorowidz rzeczowy
23
24
  eob_index_symbols_group: Symbole
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openstax_kitchen
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 6.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - JP Slavinsky
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-02 00:00:00.000000000 Z
11
+ date: 2021-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -200,7 +200,8 @@ extensions: []
200
200
  extra_rdoc_files: []
201
201
  files:
202
202
  - ".devcontainer/devcontainer.json"
203
- - ".github/config.yml"
203
+ - ".github/workflows/changelog.yml"
204
+ - ".github/workflows/rubocop.yml"
204
205
  - ".github/workflows/tests.yml"
205
206
  - ".gitignore"
206
207
  - ".inch.yml"
@@ -222,6 +223,7 @@ files:
222
223
  - docker/bash
223
224
  - docker/build
224
225
  - docker/ci
226
+ - docker/rubocop
225
227
  - docker/run
226
228
  - docker/tag_and_push_latest
227
229
  - lefthook.yml
@@ -245,6 +247,7 @@ files:
245
247
  - lib/kitchen/directions/bake_chapter_glossary/main.rb
246
248
  - lib/kitchen/directions/bake_chapter_glossary/v1.rb
247
249
  - lib/kitchen/directions/bake_chapter_introductions.rb
250
+ - lib/kitchen/directions/bake_chapter_introductions/chapter_introduction.xhtml.erb
248
251
  - lib/kitchen/directions/bake_chapter_key_concepts/main.rb
249
252
  - lib/kitchen/directions/bake_chapter_key_concepts/v1.rb
250
253
  - lib/kitchen/directions/bake_chapter_key_equations.rb
@@ -252,6 +255,8 @@ files:
252
255
  - lib/kitchen/directions/bake_chapter_references/v1.rb
253
256
  - lib/kitchen/directions/bake_chapter_section_exercises/main.rb
254
257
  - lib/kitchen/directions/bake_chapter_section_exercises/v1.rb
258
+ - lib/kitchen/directions/bake_chapter_solutions/main.rb
259
+ - lib/kitchen/directions/bake_chapter_solutions/v1.rb
255
260
  - lib/kitchen/directions/bake_chapter_summary.rb
256
261
  - lib/kitchen/directions/bake_chapter_title/main.rb
257
262
  - lib/kitchen/directions/bake_chapter_title/v1.rb
@@ -276,12 +281,17 @@ files:
276
281
  - lib/kitchen/directions/bake_non_introduction_pages.rb
277
282
  - lib/kitchen/directions/bake_notes/bake_autotitled_notes.rb
278
283
  - lib/kitchen/directions/bake_notes/bake_note_subtitle.rb
279
- - lib/kitchen/directions/bake_notes/bake_numbered_notes.rb
284
+ - lib/kitchen/directions/bake_notes/bake_numbered_notes/main.rb
285
+ - lib/kitchen/directions/bake_notes/bake_numbered_notes/v1.rb
286
+ - lib/kitchen/directions/bake_notes/bake_numbered_notes/v2.rb
287
+ - lib/kitchen/directions/bake_notes/bake_numbered_notes/v3.rb
280
288
  - lib/kitchen/directions/bake_notes/bake_unclassified_notes.rb
281
289
  - lib/kitchen/directions/bake_numbered_exercise/main.rb
282
290
  - lib/kitchen/directions/bake_numbered_exercise/v1.rb
291
+ - lib/kitchen/directions/bake_numbered_table/bake_table_body.rb
283
292
  - lib/kitchen/directions/bake_numbered_table/main.rb
284
293
  - lib/kitchen/directions/bake_numbered_table/v1.rb
294
+ - lib/kitchen/directions/bake_numbered_table/v2.rb
285
295
  - lib/kitchen/directions/bake_page_abstracts.rb
286
296
  - lib/kitchen/directions/bake_preface/main.rb
287
297
  - lib/kitchen/directions/bake_preface/v1.rb
@@ -295,7 +305,7 @@ files:
295
305
  - lib/kitchen/directions/bake_unit_title/main.rb
296
306
  - lib/kitchen/directions/bake_unit_title/v1.rb
297
307
  - lib/kitchen/directions/bake_unnumbered_tables.rb
298
- - lib/kitchen/directions/book_answer_key_container/eob_solutions_container.xhtml.erb
308
+ - lib/kitchen/directions/book_answer_key_container/eob_answer_key_outer_container.xhtml.erb
299
309
  - lib/kitchen/directions/book_answer_key_container/main.rb
300
310
  - lib/kitchen/directions/book_answer_key_container/v1.rb
301
311
  - lib/kitchen/directions/chapter_review_container/chapter_review.xhtml.erb
@@ -305,9 +315,11 @@ files:
305
315
  - lib/kitchen/directions/move_exercises_to_eoc/main.rb
306
316
  - lib/kitchen/directions/move_exercises_to_eoc/v1.rb
307
317
  - lib/kitchen/directions/move_exercises_to_eoc/v2.rb
318
+ - lib/kitchen/directions/move_exercises_to_eoc/v3.rb
308
319
  - lib/kitchen/directions/move_solutions_to_answer_key/main.rb
309
- - lib/kitchen/directions/move_solutions_to_answer_key/strategies/american_government.rb
310
320
  - lib/kitchen/directions/move_solutions_to_answer_key/strategies/calculus.rb
321
+ - lib/kitchen/directions/move_solutions_to_answer_key/strategies/default.rb
322
+ - lib/kitchen/directions/move_solutions_to_answer_key/strategies/precalculus.rb
311
323
  - lib/kitchen/directions/move_solutions_to_answer_key/strategies/uphysics.rb
312
324
  - lib/kitchen/directions/move_solutions_to_answer_key/v1.rb
313
325
  - lib/kitchen/directions/move_title_text_into_span.rb
@@ -336,6 +348,7 @@ files:
336
348
  - lib/kitchen/page_element_enumerator.rb
337
349
  - lib/kitchen/pantry.rb
338
350
  - lib/kitchen/patches/i18n.rb
351
+ - lib/kitchen/patches/integer.rb
339
352
  - lib/kitchen/patches/nokogiri.rb
340
353
  - lib/kitchen/patches/nokogiri_profiling.rb
341
354
  - lib/kitchen/patches/renderable.rb