openstax_kitchen 15.0.0 → 16.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -0
- data/Gemfile.lock +2 -2
- data/lib/kitchen/directions/bake_autotitled_exercise/main.rb +4 -0
- data/lib/kitchen/directions/bake_autotitled_exercise/v3.rb +35 -0
- data/lib/kitchen/directions/bake_footnotes/v1.rb +1 -1
- data/lib/kitchen/directions/bake_index/v1.rb +1 -1
- data/lib/kitchen/directions/{bake_injected_exercise.rb → bake_injected_exercise/bake_injected_exercise.rb} +10 -1
- data/lib/kitchen/directions/bake_injected_exercise/bake_injected_exercise_question.rb +4 -0
- data/lib/kitchen/directions/bake_lo_link_labels.rb +19 -0
- data/lib/kitchen/directions/bake_non_introduction_pages.rb +3 -1
- data/lib/kitchen/directions/bake_numbered_table/v2.rb +2 -1
- data/lib/kitchen/directions/bake_references/v1.rb +13 -0
- data/lib/kitchen/directions/bake_screenreader_spans.rb +22 -0
- data/lib/kitchen/element_base.rb +8 -4
- data/lib/kitchen/element_enumerator_base.rb +18 -0
- data/lib/kitchen/injected_exercise_element.rb +41 -0
- data/lib/kitchen/injected_exercise_element_enumerator.rb +21 -0
- data/lib/kitchen/injected_question_element.rb +7 -0
- data/lib/kitchen/patches/i18n.rb +4 -0
- data/lib/kitchen/patches/nokogiri.rb +8 -0
- data/lib/kitchen/selectors/base.rb +3 -0
- data/lib/kitchen/selectors/standard_1.rb +1 -0
- data/lib/kitchen/version.rb +1 -1
- data/lib/locales/en.yml +1 -0
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7796fb964e8a6ff796d9cf84220449681a89e5501e41e0a9a956620faf022d11
|
4
|
+
data.tar.gz: 4b2c488ac82a05067c7353f274b9f94888125eb7f66cfa92f30db3c28e7ae29a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc57439823f55ee6cdec35304a2bb4413a28afc5c98ae616effadec60095cfa964a4b9faa0380178f189c55771d1a1f28813268ce001349f29c3d1b44397d4ab
|
7
|
+
data.tar.gz: d055f27db123b8e7441f45056e1c6f2a576ab56d1faa3bbdbb4af6a904674f1562e4403dd5e914a372fe67c5e969eb385838aab6f9ff9a5cbc8a0f5b20356df7
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
|
10
|
+
## [16.0.0] - 2021-11-19
|
11
|
+
|
12
|
+
* Add reference link separator to `BakeReferences.v1` (patch)
|
13
|
+
* Modify `BakeFootnotes` to be more general (minor)
|
14
|
+
* Add `#preceded_by_text` method to element_base and the nokigiri patch (minor)
|
15
|
+
* Broaden caption selection for `BakeNumberedTable#v2` (patch)
|
16
|
+
* Add details of question count to injected exercises in `BakeInjectedExercise` (major)
|
17
|
+
* Add target labels to chapter content module pages option in `BakeNonIntroductionPages`, create a separate directory `BakeLOLinkLabels` to add `.label-text`, `.label-counter` spans wrappers for links with `.lo-reference` class (minor)
|
18
|
+
* Add `BakeScreenreaderSpans` direction (minor)
|
19
|
+
* Fix `BakeIndex` to group terms by character in polish books and transliterate it for others (minor)
|
20
|
+
* Add optional bake `exercies-context` figure_reference if there is one present in singular part exercises to `BakeInjectedExercise`,`BakeInjectedQuestion` to move it down from exercise to question problem container. (major)
|
21
|
+
* Create v3 for autotitled exercises with os-hasSolution class
|
22
|
+
|
9
23
|
## [15.0.0] - 2021-11-05
|
10
24
|
|
11
25
|
* Add unstyled tables to `BakeTableBody` (minor)
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
openstax_kitchen (
|
4
|
+
openstax_kitchen (16.0.0)
|
5
5
|
activesupport
|
6
6
|
i18n
|
7
7
|
nokogiri
|
@@ -99,7 +99,7 @@ GEM
|
|
99
99
|
tins (~> 1.0)
|
100
100
|
tins (1.26.0)
|
101
101
|
sync
|
102
|
-
twitter_cldr (6.
|
102
|
+
twitter_cldr (6.8.0)
|
103
103
|
camertron-eprun
|
104
104
|
cldr-plurals-runtime-rb (~> 1.1)
|
105
105
|
tzinfo
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Kitchen::Directions::BakeAutotitledExercise
|
4
|
+
# Differences from V2:
|
5
|
+
# 1. Exercise with solution has class os-hasSolution
|
6
|
+
# 2. Solution id is based on exercise id
|
7
|
+
class V3
|
8
|
+
def bake(exercise:, title:)
|
9
|
+
exercise.add_class('unnumbered')
|
10
|
+
exercise.titles.first&.trash
|
11
|
+
|
12
|
+
# bake problem
|
13
|
+
exercise.prepend(child:
|
14
|
+
<<~HTML
|
15
|
+
<h3 class="os-title" data-type="title">
|
16
|
+
<span class="os-title-label">#{title}</span>
|
17
|
+
</h3>
|
18
|
+
HTML
|
19
|
+
)
|
20
|
+
exercise.problem.wrap_children(class: 'os-problem-container')
|
21
|
+
return unless exercise.solution
|
22
|
+
|
23
|
+
exercise.add_class('os-hasSolution')
|
24
|
+
exercise.solution.id = "#{exercise.id}-solution"
|
25
|
+
exercise.solution.wrap_children(class: 'os-solution-container')
|
26
|
+
exercise.solution.prepend(child:
|
27
|
+
<<~HTML
|
28
|
+
<h4 class="solution-title" data-type="title">
|
29
|
+
<span class="os-text">#{I18n.t(:solution)}</span>
|
30
|
+
</h4>
|
31
|
+
HTML
|
32
|
+
)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -30,7 +30,7 @@ module Kitchen::Directions::BakeFootnotes
|
|
30
30
|
aside_id_to_footnote_number[aside_id] = footnote_number
|
31
31
|
if anchor.parent.name == 'p'
|
32
32
|
anchor.parent.add_class('has-noteref')
|
33
|
-
elsif anchor.parent.name
|
33
|
+
elsif anchor.parent.name != 'p' && anchor.parent.parent.name == 'p'
|
34
34
|
anchor.parent.parent.add_class('has-noteref')
|
35
35
|
end
|
36
36
|
end
|
@@ -165,7 +165,7 @@ module Kitchen::Directions::BakeIndex
|
|
165
165
|
group_by = term_reference[0]
|
166
166
|
content = term_reference
|
167
167
|
else
|
168
|
-
group_by = I18n.
|
168
|
+
group_by = I18n.character_to_group(term_element.text.strip[0])
|
169
169
|
content = term_element.text
|
170
170
|
end
|
171
171
|
|
@@ -7,12 +7,21 @@ module Kitchen::Directions::BakeInjectedExercise
|
|
7
7
|
|
8
8
|
class V1
|
9
9
|
def bake(exercise:)
|
10
|
-
|
10
|
+
question_count = exercise.injected_questions.count
|
11
|
+
exercise[:'data-question-count'] = question_count
|
12
|
+
exercise[:'data-is-multipart'] = question_count > 1 ? 'True' : 'False'
|
13
|
+
|
14
|
+
context = exercise&.exercise_context
|
15
|
+
|
11
16
|
return unless context
|
12
17
|
|
13
18
|
# link replacement is done by BakeLinkPlaceholders
|
14
19
|
link = context.first('a').cut
|
15
20
|
context.replace_children(with: "#{I18n.t(:context_lead_text)}#{link.paste}")
|
21
|
+
return unless question_count == 1
|
22
|
+
|
23
|
+
question = exercise.exercise_question
|
24
|
+
question.prepend(child: context.cut.paste)
|
16
25
|
end
|
17
26
|
end
|
18
27
|
end
|
@@ -41,11 +41,15 @@ module Kitchen::Directions::BakeInjectedExerciseQuestion
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
+
context = question.exercise_context_in_question&.cut&.paste
|
45
|
+
|
44
46
|
question.prepend(child:
|
45
47
|
<<~HTML
|
46
48
|
#{problem_number unless only_number_solution}
|
47
49
|
#{"<span class='os-divider'>. </span>" unless only_number_solution}
|
48
50
|
<div class="os-problem-container">
|
51
|
+
#{context if context.present?}
|
52
|
+
#{"<span class='os-divider'>. </span>" if context.present?}
|
49
53
|
#{question.stimulus&.cut&.paste}
|
50
54
|
#{question.stem.cut.paste}
|
51
55
|
#{question.answers&.cut&.paste}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Kitchen
|
4
|
+
module Directions
|
5
|
+
# Bake directions for LO link labels
|
6
|
+
module BakeLOLinkLabels
|
7
|
+
def self.v1(book:)
|
8
|
+
book.search('a.lo-reference').each do |anchor|
|
9
|
+
anchor.wrap_children('span', class: 'label-counter')
|
10
|
+
anchor.prepend(child:
|
11
|
+
<<~HTML
|
12
|
+
<span class="label-text">#{I18n.t(:lo_label_text)}</span>
|
13
|
+
HTML
|
14
|
+
)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -3,13 +3,15 @@
|
|
3
3
|
module Kitchen
|
4
4
|
module Directions
|
5
5
|
module BakeNonIntroductionPages
|
6
|
-
def self.v1(chapter:)
|
6
|
+
def self.v1(chapter:, add_target_label: false)
|
7
7
|
chapter.non_introduction_pages.each do |page|
|
8
8
|
number = "#{chapter.count_in(:book)}.#{page.count_in(:chapter)}"
|
9
9
|
|
10
10
|
page.search("div[data-type='description']").each(&:trash)
|
11
11
|
page.add_class('chapter-content-module')
|
12
12
|
|
13
|
+
page.target_label(custom_content: number) if add_target_label
|
14
|
+
|
13
15
|
title = page.title
|
14
16
|
title.name = 'h2'
|
15
17
|
title.replace_children(with:
|
@@ -9,7 +9,8 @@ module Kitchen::Directions::BakeNumberedTable
|
|
9
9
|
Kitchen::Directions::BakeTableBody::V1.new.bake(table: table, number: number, cases: cases)
|
10
10
|
|
11
11
|
caption = ''
|
12
|
-
if table&.caption&.first("span[data-type='title']")
|
12
|
+
if (table&.caption&.first("span[data-type='title']") || table&.caption) \
|
13
|
+
&& !table.top_captioned?
|
13
14
|
caption_el = table.caption
|
14
15
|
caption_el.add_class('os-caption')
|
15
16
|
caption_el.name = 'span'
|
@@ -12,6 +12,19 @@ module Kitchen::Directions::BakeReferences
|
|
12
12
|
<sup class="os-citation-number">#{link.count_in(:chapter)}</sup>
|
13
13
|
HTML
|
14
14
|
)
|
15
|
+
|
16
|
+
next if link.nil?
|
17
|
+
|
18
|
+
link_sibling = link.previous unless link.preceded_by_text?
|
19
|
+
next if link_sibling.nil?
|
20
|
+
|
21
|
+
next unless link_sibling&.raw&.attr('data-type') == 'cite'
|
22
|
+
|
23
|
+
link.prepend(sibling:
|
24
|
+
<<~HTML
|
25
|
+
<span class="os-reference-link-separator">, </span>
|
26
|
+
HTML
|
27
|
+
)
|
15
28
|
end
|
16
29
|
|
17
30
|
chapter.references.each do |reference|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Kitchen
|
4
|
+
module Directions
|
5
|
+
module BakeScreenreaderSpans
|
6
|
+
# Add text for accessibility.
|
7
|
+
# Additional screenreader spans can be added below.
|
8
|
+
def self.v1(book:)
|
9
|
+
book.search('u[data-effect="double-underline"]').each do |element|
|
10
|
+
element.add_previous_sibling(
|
11
|
+
'<span data-screenreader-only="true">double underline</span>'
|
12
|
+
)
|
13
|
+
end
|
14
|
+
book.search('u[data-effect="underline"]').each do |element|
|
15
|
+
element.add_previous_sibling(
|
16
|
+
'<span data-screenreader-only="true">underline</span>'
|
17
|
+
)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/kitchen/element_base.rb
CHANGED
@@ -82,9 +82,13 @@ module Kitchen
|
|
82
82
|
# Set the inner HTML for this element
|
83
83
|
# @see https://www.rubydoc.info/github/sparklemotion/nokogiri/Nokogiri/XML/Node#inner_html=-instance_method Nokogiri::XML::Node#inner_html=
|
84
84
|
# @return Object
|
85
|
+
# @!method preceded_by_text
|
86
|
+
# Returns true if the immediately preceding sibling is text
|
87
|
+
# @return Boolean
|
85
88
|
def_delegators :@node, :name=, :name, :[], :[]=, :add_class, :remove_class,
|
86
89
|
:text, :wrap, :children, :to_html, :remove_attribute,
|
87
|
-
:key?, :classes, :path, :inner_html
|
90
|
+
:key?, :classes, :path, :inner_html=, :add_previous_sibling,
|
91
|
+
:preceded_by_text?
|
88
92
|
|
89
93
|
# @!method config
|
90
94
|
# Get the config for this element's document
|
@@ -502,8 +506,8 @@ module Kitchen
|
|
502
506
|
Element.new(node: raw.parent, document: document, short_type: "parent(#{short_type})")
|
503
507
|
end
|
504
508
|
|
505
|
-
# returns previous element
|
506
|
-
#
|
509
|
+
# returns previous element sibling
|
510
|
+
# (only returns elements or nil)
|
507
511
|
# nil if there's no previous sibling
|
508
512
|
#
|
509
513
|
def previous
|
@@ -754,7 +758,7 @@ module Kitchen
|
|
754
758
|
def_delegators :as_enumerator, :pages, :chapters, :terms, :figures, :notes, :tables, :examples,
|
755
759
|
:metadatas, :non_introduction_pages, :units, :titles, :exercises, :references,
|
756
760
|
:composite_pages, :composite_chapters, :solutions, :injected_questions,
|
757
|
-
:search_with, :sections
|
761
|
+
:search_with, :sections, :injected_exercises
|
758
762
|
|
759
763
|
# Returns this element as an enumerator (over only one element, itself)
|
760
764
|
#
|
@@ -336,6 +336,24 @@ module Kitchen
|
|
336
336
|
css_or_xpath: css_or_xpath, only: only, except: except)
|
337
337
|
end
|
338
338
|
|
339
|
+
# Returns an enumerator that iterates through injected exercises within the scope of this enumerator
|
340
|
+
#
|
341
|
+
# @param css_or_xpath [String] additional selectors to further narrow the element iterated over;
|
342
|
+
# a "$" in this argument will be replaced with the default selector for the element being
|
343
|
+
# iterated over.
|
344
|
+
# @param only [Symbol, Callable] the name of a method to call on an element or a
|
345
|
+
# lambda or proc that accepts an element; elements will only be included in the
|
346
|
+
# search results if the method or callable returns true
|
347
|
+
# @param except [Symbol, Callable] the name of a method to call on an element or a
|
348
|
+
# lambda or proc that accepts an element; elements will not be included in the
|
349
|
+
# search results if the method or callable returns false
|
350
|
+
#
|
351
|
+
def injected_exercises(css_or_xpath=nil, only: nil, except: nil)
|
352
|
+
block_error_if(block_given?)
|
353
|
+
chain_to(InjectedExerciseElementEnumerator,
|
354
|
+
css_or_xpath: css_or_xpath, only: only, except: except)
|
355
|
+
end
|
356
|
+
|
339
357
|
# Returns an enumerator that iterates within the scope of this enumerator
|
340
358
|
#
|
341
359
|
# @param css_or_xpath [String] additional selectors to further narrow the element iterated over
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Kitchen
|
4
|
+
# An element for an example
|
5
|
+
#
|
6
|
+
class InjectedExerciseElement < ElementBase
|
7
|
+
|
8
|
+
# Creates a new +InjectedQuestionElement+
|
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: InjectedExerciseElementEnumerator)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Returns the short type
|
20
|
+
# @return [Symbol]
|
21
|
+
#
|
22
|
+
def self.short_type
|
23
|
+
:injected_exercise
|
24
|
+
end
|
25
|
+
|
26
|
+
# Returns the exercise context element.
|
27
|
+
# @return [Element]
|
28
|
+
#
|
29
|
+
def exercise_context
|
30
|
+
first("div[data-type='exercise-context']")
|
31
|
+
end
|
32
|
+
|
33
|
+
# Returns the exercise question element.
|
34
|
+
# @return [Element]
|
35
|
+
#
|
36
|
+
def exercise_question
|
37
|
+
first("div[data-type='exercise-question']")
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Kitchen
|
4
|
+
# An enumerator for example elements
|
5
|
+
#
|
6
|
+
class InjectedExerciseElementEnumerator < ElementEnumeratorBase
|
7
|
+
|
8
|
+
# Returns a factory for this enumerator
|
9
|
+
#
|
10
|
+
# @return [ElementEnumeratorFactory]
|
11
|
+
#
|
12
|
+
def self.factory
|
13
|
+
ElementEnumeratorFactory.new(
|
14
|
+
default_css_or_xpath: Selector.named(:injected_exercise),
|
15
|
+
sub_element_class: InjectedExerciseElement,
|
16
|
+
enumerator_class: self
|
17
|
+
)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -55,6 +55,13 @@ module Kitchen
|
|
55
55
|
first("div[data-type='question-solution']")
|
56
56
|
end
|
57
57
|
|
58
|
+
# Returns the exercise context element.
|
59
|
+
# @return [Element]
|
60
|
+
#
|
61
|
+
def exercise_context_in_question
|
62
|
+
first("div[data-type='exercise-context']")
|
63
|
+
end
|
64
|
+
|
58
65
|
# Returns the answer correctness given an alphabet
|
59
66
|
#
|
60
67
|
# @return [Array]
|
data/lib/kitchen/patches/i18n.rb
CHANGED
@@ -4,6 +4,10 @@ require 'twitter_cldr'
|
|
4
4
|
|
5
5
|
# rubocop:disable Style/Documentation
|
6
6
|
module I18n
|
7
|
+
def self.character_to_group(character)
|
8
|
+
I18n.locale == :pl ? character : I18n.transliterate(character)
|
9
|
+
end
|
10
|
+
|
7
11
|
def self.sort_strings(first, second)
|
8
12
|
string_sorter.compare(first, second)
|
9
13
|
end
|
@@ -74,6 +74,14 @@ module Nokogiri
|
|
74
74
|
prev.text? ? prev.previous : prev
|
75
75
|
end
|
76
76
|
|
77
|
+
def preceded_by_text?
|
78
|
+
prev = previous_sibling
|
79
|
+
while !prev.nil? && prev.blank? do prev = prev.previous_sibling end
|
80
|
+
return false if prev.nil?
|
81
|
+
|
82
|
+
prev.text?
|
83
|
+
end
|
84
|
+
|
77
85
|
def self.selector_to_css_nodes(selector)
|
78
86
|
# No need to parse the same selector more than once.
|
79
87
|
@parsed_selectors ||= {}
|
data/lib/kitchen/version.rb
CHANGED
data/lib/locales/en.yml
CHANGED
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:
|
4
|
+
version: 16.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-11-
|
11
|
+
date: 2021-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -252,6 +252,7 @@ files:
|
|
252
252
|
- lib/kitchen/directions/bake_autotitled_exercise/main.rb
|
253
253
|
- lib/kitchen/directions/bake_autotitled_exercise/v1.rb
|
254
254
|
- lib/kitchen/directions/bake_autotitled_exercise/v2.rb
|
255
|
+
- lib/kitchen/directions/bake_autotitled_exercise/v3.rb
|
255
256
|
- lib/kitchen/directions/bake_chapter_glossary/main.rb
|
256
257
|
- lib/kitchen/directions/bake_chapter_glossary/v1.rb
|
257
258
|
- lib/kitchen/directions/bake_chapter_introductions/bake_chapter_objectives.rb
|
@@ -296,13 +297,14 @@ files:
|
|
296
297
|
- lib/kitchen/directions/bake_index/main.rb
|
297
298
|
- lib/kitchen/directions/bake_index/v1.rb
|
298
299
|
- lib/kitchen/directions/bake_index/v1.xhtml.erb
|
299
|
-
- lib/kitchen/directions/bake_injected_exercise.rb
|
300
300
|
- lib/kitchen/directions/bake_injected_exercise/add_injected_exercise_id.rb
|
301
|
+
- lib/kitchen/directions/bake_injected_exercise/bake_injected_exercise.rb
|
301
302
|
- lib/kitchen/directions/bake_injected_exercise/bake_injected_exercise_question.rb
|
302
303
|
- lib/kitchen/directions/bake_inline_lists.rb
|
303
304
|
- lib/kitchen/directions/bake_learning_objectives.rb
|
304
305
|
- lib/kitchen/directions/bake_link_placeholders.rb
|
305
306
|
- lib/kitchen/directions/bake_lists_with_para.rb
|
307
|
+
- lib/kitchen/directions/bake_lo_link_labels.rb
|
306
308
|
- lib/kitchen/directions/bake_math_in_paragraph.rb
|
307
309
|
- lib/kitchen/directions/bake_non_introduction_pages.rb
|
308
310
|
- lib/kitchen/directions/bake_notes/bake_autotitled_notes.rb
|
@@ -326,6 +328,7 @@ files:
|
|
326
328
|
- lib/kitchen/directions/bake_references/v1.rb
|
327
329
|
- lib/kitchen/directions/bake_references/v2.rb
|
328
330
|
- lib/kitchen/directions/bake_references/v3.rb
|
331
|
+
- lib/kitchen/directions/bake_screenreader_spans.rb
|
329
332
|
- lib/kitchen/directions/bake_stepwise.rb
|
330
333
|
- lib/kitchen/directions/bake_suggested_reading.rb
|
331
334
|
- lib/kitchen/directions/bake_toc.rb
|
@@ -373,6 +376,8 @@ files:
|
|
373
376
|
- lib/kitchen/figure_element_enumerator.rb
|
374
377
|
- lib/kitchen/i18n_string.rb
|
375
378
|
- lib/kitchen/id_tracker.rb
|
379
|
+
- lib/kitchen/injected_exercise_element.rb
|
380
|
+
- lib/kitchen/injected_exercise_element_enumerator.rb
|
376
381
|
- lib/kitchen/injected_question_element.rb
|
377
382
|
- lib/kitchen/injected_question_element_enumerator.rb
|
378
383
|
- lib/kitchen/metadata_element.rb
|