openstax_kitchen 5.0.0 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
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