openstax_kitchen 3.2.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/CHANGELOG.md +42 -1
  4. data/Gemfile.lock +13 -14
  5. data/docker/ci +0 -1
  6. data/lib/kitchen/book_element.rb +16 -2
  7. data/lib/kitchen/chapter_element.rb +8 -11
  8. data/lib/kitchen/chapter_element_enumerator.rb +1 -1
  9. data/lib/kitchen/composite_chapter_element.rb +7 -11
  10. data/lib/kitchen/composite_page_element.rb +15 -10
  11. data/lib/kitchen/composite_page_element_enumerator.rb +1 -1
  12. data/lib/kitchen/config.rb +7 -0
  13. data/lib/kitchen/directions/bake_chapter_glossary/main.rb +18 -0
  14. data/lib/kitchen/directions/bake_chapter_glossary/v1.rb +30 -0
  15. data/lib/kitchen/directions/bake_chapter_introductions.rb +1 -1
  16. data/lib/kitchen/directions/bake_chapter_key_concepts/main.rb +7 -2
  17. data/lib/kitchen/directions/bake_chapter_key_concepts/v1.rb +12 -7
  18. data/lib/kitchen/directions/bake_chapter_key_equations.rb +26 -21
  19. data/lib/kitchen/directions/bake_chapter_summary.rb +48 -42
  20. data/lib/kitchen/directions/bake_equations.rb +1 -1
  21. data/lib/kitchen/directions/bake_example.rb +5 -1
  22. data/lib/kitchen/directions/bake_figure.rb +1 -1
  23. data/lib/kitchen/directions/{bake_problem_first_elements.rb → bake_first_elements.rb} +2 -2
  24. data/lib/kitchen/directions/bake_footnotes/v1.rb +2 -1
  25. data/lib/kitchen/directions/bake_free_response/free_response.xhtml.erb +10 -0
  26. data/lib/kitchen/directions/bake_free_response/main.rb +11 -0
  27. data/lib/kitchen/directions/bake_free_response/v1.rb +29 -0
  28. data/lib/kitchen/directions/bake_further_research.rb +59 -0
  29. data/lib/kitchen/directions/bake_index/v1.rb +35 -14
  30. data/lib/kitchen/directions/bake_link_placeholders.rb +1 -1
  31. data/lib/kitchen/directions/bake_notes/bake_note_subtitle.rb +4 -0
  32. data/lib/kitchen/directions/bake_notes/bake_numbered_notes.rb +9 -21
  33. data/lib/kitchen/directions/bake_numbered_exercise/main.rb +6 -2
  34. data/lib/kitchen/directions/bake_numbered_exercise/v1.rb +25 -12
  35. data/lib/kitchen/directions/bake_numbered_table/v1.rb +1 -1
  36. data/lib/kitchen/directions/bake_page_abstracts.rb +1 -1
  37. data/lib/kitchen/directions/bake_references/main.rb +16 -0
  38. data/lib/kitchen/directions/bake_references/v1.rb +48 -0
  39. data/lib/kitchen/directions/bake_suggested_reading.rb +5 -0
  40. data/lib/kitchen/directions/bake_toc.rb +4 -2
  41. data/lib/kitchen/directions/{bake_book_answer_key → book_answer_key_container}/eob_solutions_container.xhtml.erb +0 -0
  42. data/lib/kitchen/directions/{bake_book_answer_key → book_answer_key_container}/main.rb +1 -1
  43. data/lib/kitchen/directions/{bake_book_answer_key → book_answer_key_container}/v1.rb +1 -1
  44. data/lib/kitchen/directions/{bake_chapter_review → chapter_review_container}/chapter_review.xhtml.erb +0 -0
  45. data/lib/kitchen/directions/{bake_chapter_review → chapter_review_container}/main.rb +1 -1
  46. data/lib/kitchen/directions/{bake_chapter_review → chapter_review_container}/v1.rb +1 -1
  47. data/lib/kitchen/directions/eoc_section_title_link_snippet.rb +1 -1
  48. data/lib/kitchen/directions/move_exercises_to_eoc/main.rb +27 -0
  49. data/lib/kitchen/directions/{bake_chapter_review_exercises → move_exercises_to_eoc}/v1.rb +8 -10
  50. data/lib/kitchen/directions/{bake_chapter_review_exercises → move_exercises_to_eoc}/v2.rb +8 -9
  51. data/lib/kitchen/directions/{bake_chapter_answer_key → move_solutions_to_answer_key}/main.rb +1 -1
  52. data/lib/kitchen/directions/move_solutions_to_answer_key/strategies/american_government.rb +19 -0
  53. data/lib/kitchen/directions/{bake_chapter_answer_key → move_solutions_to_answer_key}/strategies/calculus.rb +1 -1
  54. data/lib/kitchen/directions/{bake_chapter_answer_key → move_solutions_to_answer_key}/strategies/uphysics.rb +5 -3
  55. data/lib/kitchen/directions/{bake_chapter_answer_key → move_solutions_to_answer_key}/v1.rb +3 -1
  56. data/lib/kitchen/document.rb +11 -0
  57. data/lib/kitchen/element.rb +9 -3
  58. data/lib/kitchen/element_base.rb +61 -10
  59. data/lib/kitchen/element_enumerator_base.rb +9 -1
  60. data/lib/kitchen/element_enumerator_factory.rb +9 -5
  61. data/lib/kitchen/element_factory.rb +3 -3
  62. data/lib/kitchen/example_element.rb +8 -11
  63. data/lib/kitchen/example_element_enumerator.rb +1 -1
  64. data/lib/kitchen/exercise_element.rb +5 -8
  65. data/lib/kitchen/exercise_element_enumerator.rb +1 -1
  66. data/lib/kitchen/figure_element.rb +8 -11
  67. data/lib/kitchen/figure_element_enumerator.rb +1 -1
  68. data/lib/kitchen/metadata_element.rb +8 -2
  69. data/lib/kitchen/metadata_element_enumerator.rb +1 -1
  70. data/lib/kitchen/note_element.rb +8 -11
  71. data/lib/kitchen/note_element_enumerator.rb +1 -1
  72. data/lib/kitchen/page_element.rb +20 -7
  73. data/lib/kitchen/page_element_enumerator.rb +1 -1
  74. data/lib/kitchen/reference_element.rb +27 -0
  75. data/lib/kitchen/references_element_enumerator.rb +20 -0
  76. data/lib/kitchen/search_query.rb +25 -3
  77. data/lib/kitchen/selector.rb +24 -0
  78. data/lib/kitchen/selectors/base.rb +39 -0
  79. data/lib/kitchen/selectors/standard_1.rb +13 -0
  80. data/lib/kitchen/table_element.rb +8 -11
  81. data/lib/kitchen/table_element_enumerator.rb +1 -1
  82. data/lib/kitchen/templates/eob_section_title_template.xhtml.erb +10 -0
  83. data/lib/kitchen/templates/eoc_section_title_template.xhtml.erb +10 -0
  84. data/lib/kitchen/term_element.rb +5 -8
  85. data/lib/kitchen/term_element_enumerator.rb +1 -1
  86. data/lib/kitchen/unit_element.rb +13 -7
  87. data/lib/kitchen/unit_element_enumerator.rb +1 -1
  88. data/lib/kitchen/version.rb +1 -1
  89. data/lib/locales/en.yml +3 -0
  90. data/lib/openstax_kitchen.rb +1 -0
  91. metadata +30 -22
  92. data/lib/kitchen/directions/bake_chapter_glossary.rb +0 -39
  93. data/lib/kitchen/directions/bake_chapter_key_concepts/key_concepts.xhtml.erb +0 -16
  94. data/lib/kitchen/directions/bake_chapter_review_exercises/main.rb +0 -15
  95. data/lib/kitchen/directions/bake_chapter_review_exercises/review_exercises.xhtml.erb +0 -10
  96. data/lib/kitchen/directions/bake_exercises/main.rb +0 -12
  97. data/lib/kitchen/directions/bake_exercises/v1.rb +0 -169
  98. data/lib/kitchen/directions/bake_notes/bake_notes.rb +0 -48
@@ -13,8 +13,14 @@ module Kitchen
13
13
  def initialize(node:, document: nil)
14
14
  super(node: node,
15
15
  document: document,
16
- enumerator_class: PageElementEnumerator,
17
- short_type: :page)
16
+ enumerator_class: PageElementEnumerator)
17
+ end
18
+
19
+ # Returns the short type
20
+ # @return [Symbol]
21
+ #
22
+ def self.short_type
23
+ :page
18
24
  end
19
25
 
20
26
  # Returns the title element. This method is aware that the title of the
@@ -28,6 +34,14 @@ module Kitchen
28
34
  first!(is_introduction? ? selectors.title_in_introduction_page : selectors.title_in_page)
29
35
  end
30
36
 
37
+ # Returns the title's text regardless of whether the title has been baked
38
+ #
39
+ # @return [String]
40
+ #
41
+ def title_text
42
+ title.children.one? ? title.text : title.first('.os-text').text
43
+ end
44
+
31
45
  # Returns an enumerator for titles.
32
46
  #
33
47
  # @return [ElementEnumerator]
@@ -95,13 +109,12 @@ module Kitchen
95
109
  search('section.key-concepts')
96
110
  end
97
111
 
98
- # Returns true if this class represents the element for the given node
112
+ # Returns the free response questions
99
113
  #
100
- # @param node [Nokogiri::XML::Node] the underlying node
101
- # @return [Boolean]
114
+ # @return [Element]
102
115
  #
103
- def self.is_the_element_class_for?(node)
104
- node['data-type'] == 'page'
116
+ def free_response
117
+ search('section.free-response')
105
118
  end
106
119
 
107
120
  end
@@ -11,7 +11,7 @@ module Kitchen
11
11
  #
12
12
  def self.factory
13
13
  ElementEnumeratorFactory.new(
14
- default_css_or_xpath: "div[data-type='page']", # TODO: get from config?
14
+ default_css_or_xpath: Selector.named(:page),
15
15
  sub_element_class: PageElement,
16
16
  enumerator_class: self
17
17
  )
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kitchen
4
+ # An element for an example
5
+ #
6
+ class ReferenceElement < ElementBase
7
+
8
+ # Creates a new +ReferenceElement+
9
+ #
10
+ # @param node [Nokogiri::XML::Node] the node this element wraps
11
+ # @param document [Document] this element's document
12
+ #
13
+ def initialize(node:, document: nil)
14
+ super(node: node,
15
+ document: document,
16
+ enumerator_class: ReferenceElementEnumerator)
17
+ end
18
+
19
+ # Returns the short type
20
+ # @return [Symbol]
21
+ #
22
+ def self.short_type
23
+ :reference
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kitchen
4
+ # An enumerator for table elements
5
+ #
6
+ class ReferenceElementEnumerator < ElementEnumeratorBase
7
+ # Returns a factory for this enumerator
8
+ #
9
+ # @return [ElementEnumeratorFactory]
10
+ #
11
+ def self.factory
12
+ ElementEnumeratorFactory.new(
13
+ default_css_or_xpath: Selector.named(:reference),
14
+ sub_element_class: ReferenceElement,
15
+ enumerator_class: self
16
+ )
17
+ end
18
+
19
+ end
20
+ end
@@ -24,6 +24,7 @@ module Kitchen
24
24
  @css_or_xpath = css_or_xpath
25
25
  @only = only.is_a?(String) ? only.to_sym : only
26
26
  @except = except.is_a?(String) ? except.to_sym : except
27
+ @default_already_applied = false
27
28
  end
28
29
 
29
30
  # Returns true iff the element passes the `only` and `except` conditions
@@ -35,13 +36,34 @@ module Kitchen
35
36
  end
36
37
 
37
38
  # Replaces '$' in the `css_or_xpath` with the provided value; also normalizes
38
- # `css_or_xpath` to an array
39
+ # `css_or_xpath` to an array.
39
40
  #
40
- def apply_default_css_or_xpath_and_normalize(default_css_or_xpath=nil)
41
+ # @param default_css_or_xpath [String, Proc, Symbol] The selectors to substitute for the "$" character
42
+ # when this factory is used to build an enumerator. A string argument is used literally. A proc
43
+ # is eventually called given the document's Config object (for accessing selectors). A symbol
44
+ # is interpreted as the name of a selector and is called on the document's Config object's
45
+ # selectors object.
46
+ #
47
+ def apply_default_css_or_xpath_and_normalize(default_css_or_xpath=nil, config: nil)
48
+ return if @default_already_applied
49
+
50
+ default_css_or_xpath = [default_css_or_xpath].flatten.map do |item|
51
+ case item
52
+ when Proc
53
+ item.call(config)
54
+ when Symbol
55
+ config.selectors.send(item)
56
+ else
57
+ item
58
+ end
59
+ end
60
+
41
61
  @as_type = nil
42
62
  @css_or_xpath = [css_or_xpath || '$'].flatten.map do |item|
43
- item.gsub(/\$/, [default_css_or_xpath].flatten.join(', '))
63
+ item.gsub(/\$/, default_css_or_xpath.join(', '))
44
64
  end
65
+
66
+ @default_already_applied = true
45
67
  end
46
68
 
47
69
  # Returns the search query as a spaceless string suitable for use as an element type
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kitchen
4
+ # A wrapper for a selector. Can be used as the default_css_or_xpath.
5
+ #
6
+ class Selector < Proc
7
+ attr_reader :name
8
+
9
+ def self.named(name)
10
+ new(name) { |config| config.selectors.send(name) }
11
+ end
12
+
13
+ def initialize(name, &block)
14
+ @name = name
15
+ super(&block)
16
+ end
17
+
18
+ def matches?(node, config:)
19
+ # This may not be incredibly efficient as it does a search of this node's
20
+ # ancestors to see if the node is in the results. Watch the performance.
21
+ node.matches?(call(config))
22
+ end
23
+ end
24
+ end
@@ -17,6 +17,45 @@ module Kitchen
17
17
  # Selector for the summary in a page
18
18
  # @return [String]
19
19
  attr_accessor :page_summary
20
+ # Selector for a reference
21
+ # @return [String]
22
+ attr_accessor :reference
23
+ # Selector for a chapter
24
+ # @return [String]
25
+ attr_accessor :chapter
26
+ # Selector for a page
27
+ # @return [String]
28
+ attr_accessor :page
29
+ # Selector for a note
30
+ # @return [String]
31
+ attr_accessor :note
32
+ # Selector for a term
33
+ # @return [String]
34
+ attr_accessor :term
35
+ # Selector for a table
36
+ # @return [String]
37
+ attr_accessor :table
38
+ # Selector for a figure
39
+ # @return [String]
40
+ attr_accessor :figure
41
+ # Selector for a metadata
42
+ # @return [String]
43
+ attr_accessor :metadata
44
+ # Selector for a composite page
45
+ # @return [String]
46
+ attr_accessor :composite_page
47
+ # Selector for a composite chapter
48
+ # @return [String]
49
+ attr_accessor :composite_chapter
50
+ # Selector for an example
51
+ # @return [String]
52
+ attr_accessor :example
53
+ # Selector for an exercise
54
+ # @return [String]
55
+ attr_accessor :exercise
56
+ # Selector for an unit
57
+ # @return [String]
58
+ attr_accessor :unit
20
59
 
21
60
  # Override specific selectors
22
61
  #
@@ -13,6 +13,19 @@ module Kitchen
13
13
  self.title_in_page = "./*[@data-type = 'document-title']"
14
14
  self.title_in_introduction_page = "./*[@data-type = 'document-title']"
15
15
  self.page_summary = 'section.summary'
16
+ self.reference = '.reference'
17
+ self.chapter = "div[data-type='chapter']"
18
+ self.page = "div[data-type='page']"
19
+ self.note = "div[data-type='note']"
20
+ self.term = "span[data-type='term']"
21
+ self.table = 'table'
22
+ self.figure = 'figure'
23
+ self.metadata = "div[data-type='metadata']"
24
+ self.composite_page = "div[data-type='composite-page']"
25
+ self.composite_chapter = "div[data-type='composite-chapter']"
26
+ self.example = "div[data-type='example']"
27
+ self.exercise = "div[data-type='exercise']"
28
+ self.unit = "div[data-type='unit']"
16
29
  end
17
30
 
18
31
  end
@@ -13,8 +13,14 @@ module Kitchen
13
13
  def initialize(node:, document: nil)
14
14
  super(node: node,
15
15
  document: document,
16
- enumerator_class: TableElementEnumerator,
17
- short_type: :table)
16
+ enumerator_class: TableElementEnumerator)
17
+ end
18
+
19
+ # Returns the short type
20
+ # @return [Symbol]
21
+ #
22
+ def self.short_type
23
+ :table
18
24
  end
19
25
 
20
26
  # Returns an element for the title row, if present
@@ -74,14 +80,5 @@ module Kitchen
74
80
  first('caption')
75
81
  end
76
82
 
77
- # Returns true if this class represents the element for the given node
78
- #
79
- # @param node [Nokogiri::XML::Node] the underlying node
80
- # @return [Boolean]
81
- #
82
- def self.is_the_element_class_for?(node)
83
- node.name == 'table'
84
- end
85
-
86
83
  end
87
84
  end
@@ -11,7 +11,7 @@ module Kitchen
11
11
  #
12
12
  def self.factory
13
13
  ElementEnumeratorFactory.new(
14
- default_css_or_xpath: 'table', # TODO: get from config?
14
+ default_css_or_xpath: Selector.named(:table),
15
15
  sub_element_class: TableElement,
16
16
  enumerator_class: self
17
17
  )
@@ -0,0 +1,10 @@
1
+ <div class="os-eob os-<%=@klass%>-container" data-type="composite-page" data-uuid-key="<%=@uuid_prefix%><%=@klass%>">
2
+ <h1 data-type="document-title">
3
+ <span class="os-text"><%= @title %></span>
4
+ </h1>
5
+ <div data-type="metadata" style="display: none;">
6
+ <h1 data-type="document-title" itemprop="name"><%= @title %></h1>
7
+ <%= @metadata.paste %>
8
+ </div>
9
+ <%= @content %>
10
+ </div>
@@ -0,0 +1,10 @@
1
+ <div class="os-eoc os-<%=@klass%>-container" data-type="composite-page" data-uuid-key="<%=@uuid_prefix%><%=@klass%>">
2
+ <<%= @in_composite_chapter ? 'h3' : 'h2' %> data-type="<%= @in_composite_chapter ? 'title' : 'document-title' %>">
3
+ <span class="os-text"><%= @title %></span>
4
+ </<%= @in_composite_chapter ? 'h3' : 'h2' %>>
5
+ <div data-type="metadata" style="display: none;">
6
+ <h1 data-type="document-title" itemprop="name"><%= @in_composite_chapter ? I18n.t(:eoc_composite_metadata_title) : @title %></h1>
7
+ <%= @metadata.paste %>
8
+ </div>
9
+ <%= @content %>
10
+ </div>
@@ -13,17 +13,14 @@ module Kitchen
13
13
  def initialize(node:, document: nil)
14
14
  super(node: node,
15
15
  document: document,
16
- enumerator_class: TermElementEnumerator,
17
- short_type: :term)
16
+ enumerator_class: TermElementEnumerator)
18
17
  end
19
18
 
20
- # Returns true if this class represents the element for the given node
19
+ # Returns the short type
20
+ # @return [Symbol]
21
21
  #
22
- # @param node [Nokogiri::XML::Node] the underlying node
23
- # @return [Boolean]
24
- #
25
- def self.is_the_element_class_for?(node)
26
- node['data-type'] == 'term'
22
+ def self.short_type
23
+ :term
27
24
  end
28
25
 
29
26
  end
@@ -11,7 +11,7 @@ module Kitchen
11
11
  #
12
12
  def self.factory
13
13
  ElementEnumeratorFactory.new(
14
- default_css_or_xpath: "span[data-type='term']", # TODO: get from config?
14
+ default_css_or_xpath: Selector.named(:term),
15
15
  sub_element_class: TermElement,
16
16
  enumerator_class: self
17
17
  )
@@ -13,8 +13,14 @@ module Kitchen
13
13
  def initialize(node:, document: nil)
14
14
  super(node: node,
15
15
  document: document,
16
- enumerator_class: UnitElementEnumerator,
17
- short_type: :unit)
16
+ enumerator_class: UnitElementEnumerator)
17
+ end
18
+
19
+ # Returns the short type
20
+ # @return [Symbol]
21
+ #
22
+ def self.short_type
23
+ :unit
18
24
  end
19
25
 
20
26
  # Get the title in the immediate children, not the one in the metadata. Could use
@@ -27,13 +33,13 @@ module Kitchen
27
33
  first!("./*[@data-type = 'document-title']")
28
34
  end
29
35
 
30
- # Returns true if this class represents the element for the given node
36
+ # Returns the title's text regardless of whether the title has been baked
31
37
  #
32
- # @param node [Nokogiri::XML::Node] the underlying node
33
- # @return [Boolean]
38
+ # @return [String]
34
39
  #
35
- def self.is_the_element_class_for?(node)
36
- node['data-type'] == 'unit'
40
+ def title_text
41
+ title.children.one? ? title.text : title.first('.os-text').text
37
42
  end
43
+
38
44
  end
39
45
  end
@@ -11,7 +11,7 @@ module Kitchen
11
11
  #
12
12
  def self.factory
13
13
  ElementEnumeratorFactory.new(
14
- default_css_or_xpath: "div[data-type='unit']",
14
+ default_css_or_xpath: Selector.named(:unit),
15
15
  sub_element_class: UnitElement,
16
16
  enumerator_class: self
17
17
  )
@@ -3,5 +3,5 @@
3
3
  # A library for modifying the structure of OpenStax book XML.
4
4
  #
5
5
  module Kitchen
6
- VERSION = '3.2.0'
6
+ VERSION = '4.0.0'
7
7
  end
data/lib/locales/en.yml CHANGED
@@ -15,14 +15,17 @@ en:
15
15
  chapter_review: Chapter Review
16
16
  learning_objectives: Learning Objectives
17
17
  stepwise_step_label: Step
18
+ references: References
18
19
  eoc_chapter_review: Chapter Review
19
20
  eoc_key_terms_title: Key Terms
20
21
  eoc_summary_title: Summary
21
22
  eoc_exercises_title: Exercises
23
+ eoc_composite_metadata_title: Chapter Review
22
24
  eoc_answer_key_title: Answer Key
23
25
  eoc_key_concepts: Key Concepts
24
26
  eoc_key_equations: Key Equations
25
27
  eoc_suggested_reading: Suggestions for Further Study
28
+ eoc_further_research_title: Further Research
26
29
  eob_index_title: Index
27
30
  eob_index_symbols_group: Symbols
28
31
  review_exercises: Review Exercises
@@ -40,6 +40,7 @@ require 'kitchen/oven'
40
40
  require 'kitchen/clipboard'
41
41
  require 'kitchen/pantry'
42
42
  require 'kitchen/counter'
43
+ require 'kitchen/selector'
43
44
 
44
45
  require 'kitchen/element_enumerator_base'
45
46
  require 'kitchen/element_enumerator_factory'
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: 3.2.0
4
+ version: 4.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-04-20 00:00:00.000000000 Z
11
+ date: 2021-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -227,26 +227,12 @@ files:
227
227
  - lib/kitchen/debug/print_recipe_error.rb
228
228
  - lib/kitchen/directions/.rubocop.yml
229
229
  - lib/kitchen/directions/bake_appendix.rb
230
- - lib/kitchen/directions/bake_book_answer_key/eob_solutions_container.xhtml.erb
231
- - lib/kitchen/directions/bake_book_answer_key/main.rb
232
- - lib/kitchen/directions/bake_book_answer_key/v1.rb
233
- - lib/kitchen/directions/bake_chapter_answer_key/main.rb
234
- - lib/kitchen/directions/bake_chapter_answer_key/strategies/calculus.rb
235
- - lib/kitchen/directions/bake_chapter_answer_key/strategies/uphysics.rb
236
- - lib/kitchen/directions/bake_chapter_answer_key/v1.rb
237
- - lib/kitchen/directions/bake_chapter_glossary.rb
230
+ - lib/kitchen/directions/bake_chapter_glossary/main.rb
231
+ - lib/kitchen/directions/bake_chapter_glossary/v1.rb
238
232
  - lib/kitchen/directions/bake_chapter_introductions.rb
239
- - lib/kitchen/directions/bake_chapter_key_concepts/key_concepts.xhtml.erb
240
233
  - lib/kitchen/directions/bake_chapter_key_concepts/main.rb
241
234
  - lib/kitchen/directions/bake_chapter_key_concepts/v1.rb
242
235
  - lib/kitchen/directions/bake_chapter_key_equations.rb
243
- - lib/kitchen/directions/bake_chapter_review/chapter_review.xhtml.erb
244
- - lib/kitchen/directions/bake_chapter_review/main.rb
245
- - lib/kitchen/directions/bake_chapter_review/v1.rb
246
- - lib/kitchen/directions/bake_chapter_review_exercises/main.rb
247
- - lib/kitchen/directions/bake_chapter_review_exercises/review_exercises.xhtml.erb
248
- - lib/kitchen/directions/bake_chapter_review_exercises/v1.rb
249
- - lib/kitchen/directions/bake_chapter_review_exercises/v2.rb
250
236
  - lib/kitchen/directions/bake_chapter_section_exercises/main.rb
251
237
  - lib/kitchen/directions/bake_chapter_section_exercises/v1.rb
252
238
  - lib/kitchen/directions/bake_chapter_summary.rb
@@ -257,11 +243,14 @@ files:
257
243
  - lib/kitchen/directions/bake_composite_pages.rb
258
244
  - lib/kitchen/directions/bake_equations.rb
259
245
  - lib/kitchen/directions/bake_example.rb
260
- - lib/kitchen/directions/bake_exercises/main.rb
261
- - lib/kitchen/directions/bake_exercises/v1.rb
262
246
  - lib/kitchen/directions/bake_figure.rb
247
+ - lib/kitchen/directions/bake_first_elements.rb
263
248
  - lib/kitchen/directions/bake_footnotes/main.rb
264
249
  - lib/kitchen/directions/bake_footnotes/v1.rb
250
+ - lib/kitchen/directions/bake_free_response/free_response.xhtml.erb
251
+ - lib/kitchen/directions/bake_free_response/main.rb
252
+ - lib/kitchen/directions/bake_free_response/v1.rb
253
+ - lib/kitchen/directions/bake_further_research.rb
265
254
  - lib/kitchen/directions/bake_index/main.rb
266
255
  - lib/kitchen/directions/bake_index/v1.rb
267
256
  - lib/kitchen/directions/bake_index/v1.xhtml.erb
@@ -270,7 +259,6 @@ files:
270
259
  - lib/kitchen/directions/bake_non_introduction_pages.rb
271
260
  - lib/kitchen/directions/bake_notes/bake_autotitled_notes.rb
272
261
  - lib/kitchen/directions/bake_notes/bake_note_subtitle.rb
273
- - lib/kitchen/directions/bake_notes/bake_notes.rb
274
262
  - lib/kitchen/directions/bake_notes/bake_numbered_notes.rb
275
263
  - lib/kitchen/directions/bake_notes/bake_unclassified_notes.rb
276
264
  - lib/kitchen/directions/bake_numbered_exercise/main.rb
@@ -280,7 +268,8 @@ files:
280
268
  - lib/kitchen/directions/bake_page_abstracts.rb
281
269
  - lib/kitchen/directions/bake_preface/main.rb
282
270
  - lib/kitchen/directions/bake_preface/v1.rb
283
- - lib/kitchen/directions/bake_problem_first_elements.rb
271
+ - lib/kitchen/directions/bake_references/main.rb
272
+ - lib/kitchen/directions/bake_references/v1.rb
284
273
  - lib/kitchen/directions/bake_stepwise.rb
285
274
  - lib/kitchen/directions/bake_suggested_reading.rb
286
275
  - lib/kitchen/directions/bake_theorem/main.rb
@@ -289,7 +278,21 @@ files:
289
278
  - lib/kitchen/directions/bake_unit_title/main.rb
290
279
  - lib/kitchen/directions/bake_unit_title/v1.rb
291
280
  - lib/kitchen/directions/bake_unnumbered_tables.rb
281
+ - lib/kitchen/directions/book_answer_key_container/eob_solutions_container.xhtml.erb
282
+ - lib/kitchen/directions/book_answer_key_container/main.rb
283
+ - lib/kitchen/directions/book_answer_key_container/v1.rb
284
+ - lib/kitchen/directions/chapter_review_container/chapter_review.xhtml.erb
285
+ - lib/kitchen/directions/chapter_review_container/main.rb
286
+ - lib/kitchen/directions/chapter_review_container/v1.rb
292
287
  - lib/kitchen/directions/eoc_section_title_link_snippet.rb
288
+ - lib/kitchen/directions/move_exercises_to_eoc/main.rb
289
+ - lib/kitchen/directions/move_exercises_to_eoc/v1.rb
290
+ - lib/kitchen/directions/move_exercises_to_eoc/v2.rb
291
+ - lib/kitchen/directions/move_solutions_to_answer_key/main.rb
292
+ - lib/kitchen/directions/move_solutions_to_answer_key/strategies/american_government.rb
293
+ - lib/kitchen/directions/move_solutions_to_answer_key/strategies/calculus.rb
294
+ - lib/kitchen/directions/move_solutions_to_answer_key/strategies/uphysics.rb
295
+ - lib/kitchen/directions/move_solutions_to_answer_key/v1.rb
293
296
  - lib/kitchen/directions/move_title_text_into_span.rb
294
297
  - lib/kitchen/document.rb
295
298
  - lib/kitchen/element.rb
@@ -318,12 +321,17 @@ files:
318
321
  - lib/kitchen/patches/renderable.rb
319
322
  - lib/kitchen/patches/string.rb
320
323
  - lib/kitchen/recipe.rb
324
+ - lib/kitchen/reference_element.rb
325
+ - lib/kitchen/references_element_enumerator.rb
321
326
  - lib/kitchen/search_history.rb
322
327
  - lib/kitchen/search_query.rb
328
+ - lib/kitchen/selector.rb
323
329
  - lib/kitchen/selectors/base.rb
324
330
  - lib/kitchen/selectors/standard_1.rb
325
331
  - lib/kitchen/table_element.rb
326
332
  - lib/kitchen/table_element_enumerator.rb
333
+ - lib/kitchen/templates/eob_section_title_template.xhtml.erb
334
+ - lib/kitchen/templates/eoc_section_title_template.xhtml.erb
327
335
  - lib/kitchen/term_element.rb
328
336
  - lib/kitchen/term_element_enumerator.rb
329
337
  - lib/kitchen/transliterations.rb