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.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/CHANGELOG.md +42 -1
- data/Gemfile.lock +13 -14
- data/docker/ci +0 -1
- data/lib/kitchen/book_element.rb +16 -2
- data/lib/kitchen/chapter_element.rb +8 -11
- data/lib/kitchen/chapter_element_enumerator.rb +1 -1
- data/lib/kitchen/composite_chapter_element.rb +7 -11
- data/lib/kitchen/composite_page_element.rb +15 -10
- data/lib/kitchen/composite_page_element_enumerator.rb +1 -1
- data/lib/kitchen/config.rb +7 -0
- data/lib/kitchen/directions/bake_chapter_glossary/main.rb +18 -0
- data/lib/kitchen/directions/bake_chapter_glossary/v1.rb +30 -0
- data/lib/kitchen/directions/bake_chapter_introductions.rb +1 -1
- data/lib/kitchen/directions/bake_chapter_key_concepts/main.rb +7 -2
- data/lib/kitchen/directions/bake_chapter_key_concepts/v1.rb +12 -7
- data/lib/kitchen/directions/bake_chapter_key_equations.rb +26 -21
- data/lib/kitchen/directions/bake_chapter_summary.rb +48 -42
- data/lib/kitchen/directions/bake_equations.rb +1 -1
- data/lib/kitchen/directions/bake_example.rb +5 -1
- data/lib/kitchen/directions/bake_figure.rb +1 -1
- data/lib/kitchen/directions/{bake_problem_first_elements.rb → bake_first_elements.rb} +2 -2
- data/lib/kitchen/directions/bake_footnotes/v1.rb +2 -1
- data/lib/kitchen/directions/bake_free_response/free_response.xhtml.erb +10 -0
- data/lib/kitchen/directions/bake_free_response/main.rb +11 -0
- data/lib/kitchen/directions/bake_free_response/v1.rb +29 -0
- data/lib/kitchen/directions/bake_further_research.rb +59 -0
- data/lib/kitchen/directions/bake_index/v1.rb +35 -14
- data/lib/kitchen/directions/bake_link_placeholders.rb +1 -1
- data/lib/kitchen/directions/bake_notes/bake_note_subtitle.rb +4 -0
- data/lib/kitchen/directions/bake_notes/bake_numbered_notes.rb +9 -21
- data/lib/kitchen/directions/bake_numbered_exercise/main.rb +6 -2
- data/lib/kitchen/directions/bake_numbered_exercise/v1.rb +25 -12
- data/lib/kitchen/directions/bake_numbered_table/v1.rb +1 -1
- data/lib/kitchen/directions/bake_page_abstracts.rb +1 -1
- data/lib/kitchen/directions/bake_references/main.rb +16 -0
- data/lib/kitchen/directions/bake_references/v1.rb +48 -0
- data/lib/kitchen/directions/bake_suggested_reading.rb +5 -0
- data/lib/kitchen/directions/bake_toc.rb +4 -2
- data/lib/kitchen/directions/{bake_book_answer_key → book_answer_key_container}/eob_solutions_container.xhtml.erb +0 -0
- data/lib/kitchen/directions/{bake_book_answer_key → book_answer_key_container}/main.rb +1 -1
- data/lib/kitchen/directions/{bake_book_answer_key → book_answer_key_container}/v1.rb +1 -1
- data/lib/kitchen/directions/{bake_chapter_review → chapter_review_container}/chapter_review.xhtml.erb +0 -0
- data/lib/kitchen/directions/{bake_chapter_review → chapter_review_container}/main.rb +1 -1
- data/lib/kitchen/directions/{bake_chapter_review → chapter_review_container}/v1.rb +1 -1
- data/lib/kitchen/directions/eoc_section_title_link_snippet.rb +1 -1
- data/lib/kitchen/directions/move_exercises_to_eoc/main.rb +27 -0
- data/lib/kitchen/directions/{bake_chapter_review_exercises → move_exercises_to_eoc}/v1.rb +8 -10
- data/lib/kitchen/directions/{bake_chapter_review_exercises → move_exercises_to_eoc}/v2.rb +8 -9
- data/lib/kitchen/directions/{bake_chapter_answer_key → move_solutions_to_answer_key}/main.rb +1 -1
- data/lib/kitchen/directions/move_solutions_to_answer_key/strategies/american_government.rb +19 -0
- data/lib/kitchen/directions/{bake_chapter_answer_key → move_solutions_to_answer_key}/strategies/calculus.rb +1 -1
- data/lib/kitchen/directions/{bake_chapter_answer_key → move_solutions_to_answer_key}/strategies/uphysics.rb +5 -3
- data/lib/kitchen/directions/{bake_chapter_answer_key → move_solutions_to_answer_key}/v1.rb +3 -1
- data/lib/kitchen/document.rb +11 -0
- data/lib/kitchen/element.rb +9 -3
- data/lib/kitchen/element_base.rb +61 -10
- data/lib/kitchen/element_enumerator_base.rb +9 -1
- data/lib/kitchen/element_enumerator_factory.rb +9 -5
- data/lib/kitchen/element_factory.rb +3 -3
- data/lib/kitchen/example_element.rb +8 -11
- data/lib/kitchen/example_element_enumerator.rb +1 -1
- data/lib/kitchen/exercise_element.rb +5 -8
- data/lib/kitchen/exercise_element_enumerator.rb +1 -1
- data/lib/kitchen/figure_element.rb +8 -11
- data/lib/kitchen/figure_element_enumerator.rb +1 -1
- data/lib/kitchen/metadata_element.rb +8 -2
- data/lib/kitchen/metadata_element_enumerator.rb +1 -1
- data/lib/kitchen/note_element.rb +8 -11
- data/lib/kitchen/note_element_enumerator.rb +1 -1
- data/lib/kitchen/page_element.rb +20 -7
- data/lib/kitchen/page_element_enumerator.rb +1 -1
- data/lib/kitchen/reference_element.rb +27 -0
- data/lib/kitchen/references_element_enumerator.rb +20 -0
- data/lib/kitchen/search_query.rb +25 -3
- data/lib/kitchen/selector.rb +24 -0
- data/lib/kitchen/selectors/base.rb +39 -0
- data/lib/kitchen/selectors/standard_1.rb +13 -0
- data/lib/kitchen/table_element.rb +8 -11
- data/lib/kitchen/table_element_enumerator.rb +1 -1
- data/lib/kitchen/templates/eob_section_title_template.xhtml.erb +10 -0
- data/lib/kitchen/templates/eoc_section_title_template.xhtml.erb +10 -0
- data/lib/kitchen/term_element.rb +5 -8
- data/lib/kitchen/term_element_enumerator.rb +1 -1
- data/lib/kitchen/unit_element.rb +13 -7
- data/lib/kitchen/unit_element_enumerator.rb +1 -1
- data/lib/kitchen/version.rb +1 -1
- data/lib/locales/en.yml +3 -0
- data/lib/openstax_kitchen.rb +1 -0
- metadata +30 -22
- data/lib/kitchen/directions/bake_chapter_glossary.rb +0 -39
- data/lib/kitchen/directions/bake_chapter_key_concepts/key_concepts.xhtml.erb +0 -16
- data/lib/kitchen/directions/bake_chapter_review_exercises/main.rb +0 -15
- data/lib/kitchen/directions/bake_chapter_review_exercises/review_exercises.xhtml.erb +0 -10
- data/lib/kitchen/directions/bake_exercises/main.rb +0 -12
- data/lib/kitchen/directions/bake_exercises/v1.rb +0 -169
- data/lib/kitchen/directions/bake_notes/bake_notes.rb +0 -48
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6855dd0e84e96799a57645b9023db15a07400c5b6971a0ebb29edf5c87074f0
|
4
|
+
data.tar.gz: e7106c5faa811f73e25a829258a4aadfccad20c32dc2a0623ec8a2526e44d274
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 792c85c2b914719e38cca37b798160353425a6f80074926ead34c03e5fd97e47167dbc7d3efcef30d43a459a3ad917fd2e2e354fe490053e4345775cb7eac4df
|
7
|
+
data.tar.gz: 95d4ec07de107850a81cec9a714e5dbe83835dd1536005587109292f503d8afa9a1bdc896dc43f3198d59f18769ef7ab4c9ae2ee312d047ab8bee9997cc4c0a6
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -6,8 +6,49 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
-
## [
|
9
|
+
## [4.0.0] - 2021-05-18
|
10
10
|
|
11
|
+
* Changes `default_css_or_xpath` to optionally be a proc to be evaluated w.r.t. a document's config (minor)
|
12
|
+
* Support namespaces defined on elements other than the root (minor)
|
13
|
+
* Non-splash figures now treated like normal intro-body content in `BakeChapterIntroductions`
|
14
|
+
* `BakeNumberedNotes` and the uphysics strategy for `MoveSolutionsToAnswerKey` updated to accomodate multiple exercises in a note.
|
15
|
+
* `BakeFootnotes` now looks for footnotes in composite chapters
|
16
|
+
* Move exercise pantry label storage to `BakeNumberedExercises` to ensure consistency between exercise number and link text
|
17
|
+
* Update `BakeIndex` term capitalization handling to be less case sensitive (minor)
|
18
|
+
* Added a title tag variable to choose between h2 and h3 for children of chapter review (minor)
|
19
|
+
* Added a fix for examples not to bake table captions (minor)
|
20
|
+
* Replaced a .text with .children to include math text (minor)
|
21
|
+
* Changed title tag on numbered notes to always be h3 (major)
|
22
|
+
* Storing all note subtitles in the pantry for link placeholders (minor)
|
23
|
+
* Added another xmlns string option to remove if clone (minor)
|
24
|
+
* Add class to reference superscript & add metadata to `BakeSuggestedReading` (minor)
|
25
|
+
* Add `BakeFreeResponse` Directions (minor)
|
26
|
+
* Add terms from composite pages to index (minor)
|
27
|
+
* Access `.pantry` and `.clipboard` through an element instead of just its document (minor)
|
28
|
+
* Add `suppress_solution` option to `BakeNumberedExercise` (minor)
|
29
|
+
* Add strategy for American Government answer key (minor)
|
30
|
+
* Add `BakeReferences` direction (minor)
|
31
|
+
* Fix xmlns string replacement done in PR #209 (minor)
|
32
|
+
* Move title above metadata in `BakeSuggestedReading` direction (major)
|
33
|
+
* Remove depreciated directions `BakeNotes` and `BakeExercises` (major)
|
34
|
+
* Adds `eoc_composite_metadata_title` to en.yml and eoc template (major)
|
35
|
+
* Add `template` folder to kitchen to hold templates (minor)
|
36
|
+
* Add `eoc_section_title_template` (minor)
|
37
|
+
* Expand specs with `append_to` to have with/without `append_to` contexts (minor)
|
38
|
+
* Add `is?` method to `ElementBase` (minor)
|
39
|
+
* Replaced in_composite_chapter to use `is?` (minor)
|
40
|
+
* Add callable `short_type` to Elements (minor)
|
41
|
+
* Add template for eob titles - `eob_section_title_template` (minor)
|
42
|
+
|
43
|
+
## [3.2.0] - 2021-04-20
|
44
|
+
|
45
|
+
* Adds method to allow unit and page title text to be retrieved regardless of bake status (minor)
|
46
|
+
* Rename several directions (major)
|
47
|
+
* `BakeChapterReviewExercises` -> `MoveExercisesToEOC`
|
48
|
+
* `BakeChapterReview` -> `ChapterReviewContainer`
|
49
|
+
* `BakeBookAnswerKey` -> `BookAnswerKeyContainer`
|
50
|
+
* `BakeChapterAnswerKey` -> `MoveSolutionsToAnswerKey`
|
51
|
+
* Refactors `BakeFirstElements` and `BakeNumberedExercise` (minor)
|
11
52
|
* Adds a decorating option of equation numbers on `BakeEquations` (minor)
|
12
53
|
|
13
54
|
## [3.1.0] - 2021-04-19
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
openstax_kitchen (
|
4
|
+
openstax_kitchen (4.0.0)
|
5
5
|
activesupport
|
6
6
|
i18n
|
7
7
|
nokogiri
|
@@ -10,21 +10,21 @@ PATH
|
|
10
10
|
GEM
|
11
11
|
remote: https://rubygems.org/
|
12
12
|
specs:
|
13
|
-
activesupport (6.
|
13
|
+
activesupport (6.1.3.2)
|
14
14
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
15
|
-
i18n (>=
|
16
|
-
minitest (
|
17
|
-
tzinfo (~>
|
18
|
-
zeitwerk (~> 2.
|
15
|
+
i18n (>= 1.6, < 2)
|
16
|
+
minitest (>= 5.1)
|
17
|
+
tzinfo (~> 2.0)
|
18
|
+
zeitwerk (~> 2.3)
|
19
19
|
ast (2.4.1)
|
20
20
|
byebug (11.1.2)
|
21
21
|
codecov (0.2.13)
|
22
22
|
simplecov (~> 0.18.0)
|
23
23
|
coderay (1.1.3)
|
24
|
-
concurrent-ruby (1.1.
|
24
|
+
concurrent-ruby (1.1.8)
|
25
25
|
diff-lcs (1.3)
|
26
26
|
docile (1.3.3)
|
27
|
-
i18n (1.8.
|
27
|
+
i18n (1.8.10)
|
28
28
|
concurrent-ruby (~> 1.0)
|
29
29
|
inch (0.8.0)
|
30
30
|
pry
|
@@ -33,7 +33,7 @@ GEM
|
|
33
33
|
yard (~> 0.9.12)
|
34
34
|
method_source (1.0.0)
|
35
35
|
mini_portile2 (2.5.0)
|
36
|
-
minitest (5.14.
|
36
|
+
minitest (5.14.4)
|
37
37
|
nokogiri (1.11.1)
|
38
38
|
mini_portile2 (~> 2.5.0)
|
39
39
|
racc (~> 1.4)
|
@@ -52,7 +52,7 @@ GEM
|
|
52
52
|
rainbow (3.0.0)
|
53
53
|
rake (12.3.3)
|
54
54
|
regexp_parser (2.0.1)
|
55
|
-
rexml (3.2.
|
55
|
+
rexml (3.2.5)
|
56
56
|
rspec (3.9.0)
|
57
57
|
rspec-core (~> 3.9.0)
|
58
58
|
rspec-expectations (~> 3.9.0)
|
@@ -92,14 +92,13 @@ GEM
|
|
92
92
|
tdiff (0.3.4)
|
93
93
|
term-ansicolor (1.7.1)
|
94
94
|
tins (~> 1.0)
|
95
|
-
thread_safe (0.3.6)
|
96
95
|
tins (1.26.0)
|
97
96
|
sync
|
98
|
-
tzinfo (
|
99
|
-
|
97
|
+
tzinfo (2.0.4)
|
98
|
+
concurrent-ruby (~> 1.0)
|
100
99
|
unicode-display_width (1.7.0)
|
101
100
|
yard (0.9.24)
|
102
|
-
zeitwerk (2.4.
|
101
|
+
zeitwerk (2.4.2)
|
103
102
|
|
104
103
|
PLATFORMS
|
105
104
|
ruby
|
data/docker/ci
CHANGED
@@ -10,7 +10,6 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
10
10
|
docker run $CI_ENV \
|
11
11
|
-e ENABLE_CODECOV=1 -e CI=true \
|
12
12
|
-v $DIR/..:/code \
|
13
|
-
-v vendor/bundle \
|
14
13
|
-w /code \
|
15
14
|
openstax/kitchen.ci:latest \
|
16
15
|
/bin/bash -c "bundle config path vendor/bundle; bundle install; bundle exec rspec"
|
data/lib/kitchen/book_element.rb
CHANGED
@@ -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: BookElementEnumerator
|
17
|
-
|
16
|
+
enumerator_class: BookElementEnumerator)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Returns the short type
|
20
|
+
# @return [Symbol]
|
21
|
+
#
|
22
|
+
def self.short_type
|
23
|
+
:book
|
18
24
|
end
|
19
25
|
|
20
26
|
# Returns the "body" element
|
@@ -41,5 +47,13 @@ module Kitchen
|
|
41
47
|
first!('nav#toc')
|
42
48
|
end
|
43
49
|
|
50
|
+
# Returns true if this class represents the element for the given node
|
51
|
+
#
|
52
|
+
# @param node [Nokogiri::XML::Node] the underlying node
|
53
|
+
# @return [Boolean]
|
54
|
+
#
|
55
|
+
def self.is_the_element_class_for?(node, **)
|
56
|
+
node.name == 'body'
|
57
|
+
end
|
44
58
|
end
|
45
59
|
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: ChapterElementEnumerator
|
17
|
-
|
16
|
+
enumerator_class: ChapterElementEnumerator)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Returns the short type
|
20
|
+
# @return [Symbol]
|
21
|
+
#
|
22
|
+
def self.short_type
|
23
|
+
:chapter
|
18
24
|
end
|
19
25
|
|
20
26
|
# Returns the title element (the one in the immediate children, not the one in the metadata)
|
@@ -62,14 +68,5 @@ module Kitchen
|
|
62
68
|
search('[data-type="abstract"]')
|
63
69
|
end
|
64
70
|
|
65
|
-
# Returns true if this class represents the element for the given node
|
66
|
-
#
|
67
|
-
# @param node [Nokogiri::XML::Node] the underlying node
|
68
|
-
# @return [Boolean]
|
69
|
-
#
|
70
|
-
def self.is_the_element_class_for?(node)
|
71
|
-
node['data-type'] == 'chapter'
|
72
|
-
end
|
73
|
-
|
74
71
|
end
|
75
72
|
end
|
@@ -11,7 +11,7 @@ module Kitchen
|
|
11
11
|
#
|
12
12
|
def self.factory
|
13
13
|
ElementEnumeratorFactory.new(
|
14
|
-
default_css_or_xpath:
|
14
|
+
default_css_or_xpath: Selector.named(:chapter),
|
15
15
|
sub_element_class: ChapterElement,
|
16
16
|
enumerator_class: self
|
17
17
|
)
|
@@ -13,8 +13,13 @@ module Kitchen
|
|
13
13
|
def initialize(node:, document: nil)
|
14
14
|
super(node: node,
|
15
15
|
document: document,
|
16
|
-
enumerator_class: ElementEnumerator
|
17
|
-
|
16
|
+
enumerator_class: ElementEnumerator)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Returns short type
|
20
|
+
#
|
21
|
+
def self.short_type
|
22
|
+
:composite_chapter
|
18
23
|
end
|
19
24
|
|
20
25
|
# Returns the title element (the one in the immediate children, not the one in the metadata)
|
@@ -29,14 +34,5 @@ module Kitchen
|
|
29
34
|
first!("./*[@data-type = 'document-title']")
|
30
35
|
end
|
31
36
|
|
32
|
-
# Returns true if this class represents the element for the given node
|
33
|
-
#
|
34
|
-
# @param node [Nokogiri::XML::Node] the underlying node
|
35
|
-
# @return [Boolean]
|
36
|
-
#
|
37
|
-
def self.is_the_element_class_for?(node)
|
38
|
-
node['data-type'] == 'composite-chapter'
|
39
|
-
end
|
40
|
-
|
41
37
|
end
|
42
38
|
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: CompositePageElementEnumerator
|
17
|
-
|
16
|
+
enumerator_class: CompositePageElementEnumerator)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Returns the short type
|
20
|
+
# @return [Symbol]
|
21
|
+
#
|
22
|
+
def self.short_type
|
23
|
+
:composite_page
|
18
24
|
end
|
19
25
|
|
20
26
|
# Returns the title element (the one in the immediate children, not the one in the metadata)
|
@@ -26,24 +32,23 @@ module Kitchen
|
|
26
32
|
# Get the title in the immediate children, not the one in the metadata. Could use
|
27
33
|
# CSS of ":not([data-type='metadata']) > [data-type='document-title'], [data-type='document-title']"
|
28
34
|
# but xpath is shorter
|
29
|
-
first!("./*[@data-type = 'document-title']")
|
35
|
+
first!("./*[@data-type = 'document-title' or @data-type = 'title']")
|
30
36
|
end
|
31
37
|
|
32
|
-
# Returns true if this
|
38
|
+
# Returns true if this page is a book index
|
33
39
|
#
|
34
|
-
# @param node [Nokogiri::XML::Node] the underlying node
|
35
40
|
# @return [Boolean]
|
36
41
|
#
|
37
|
-
def
|
38
|
-
|
42
|
+
def is_index?
|
43
|
+
has_class?('os-index-container')
|
39
44
|
end
|
40
45
|
|
41
|
-
# Returns true if this page is a book
|
46
|
+
# Returns true if this page is a book reference
|
42
47
|
#
|
43
48
|
# @return [Boolean]
|
44
49
|
#
|
45
|
-
def
|
46
|
-
has_class?('os-
|
50
|
+
def is_reference?
|
51
|
+
has_class?('os-reference-container')
|
47
52
|
end
|
48
53
|
|
49
54
|
end
|
@@ -11,7 +11,7 @@ module Kitchen
|
|
11
11
|
#
|
12
12
|
def self.factory
|
13
13
|
ElementEnumeratorFactory.new(
|
14
|
-
default_css_or_xpath:
|
14
|
+
default_css_or_xpath: Selector.named(:composite_page),
|
15
15
|
sub_element_class: CompositePageElement,
|
16
16
|
enumerator_class: self
|
17
17
|
)
|
data/lib/kitchen/config.rb
CHANGED
@@ -11,6 +11,12 @@ module Kitchen
|
|
11
11
|
#
|
12
12
|
attr_reader :selectors
|
13
13
|
|
14
|
+
# @!attribute [rw] enable_all_namespaces
|
15
|
+
#
|
16
|
+
# @return [Boolean]
|
17
|
+
#
|
18
|
+
attr_accessor :enable_all_namespaces
|
19
|
+
|
14
20
|
# Creates a new config from a file (not implemented)
|
15
21
|
#
|
16
22
|
def self.new_from_file(_file)
|
@@ -21,6 +27,7 @@ module Kitchen
|
|
21
27
|
#
|
22
28
|
def initialize(hash: {}, selectors: nil)
|
23
29
|
@selectors = selectors || Kitchen::Selectors::Standard1.new
|
30
|
+
@enable_all_namespaces = hash[:enable_all_namespaces] || true
|
24
31
|
@hash = hash
|
25
32
|
end
|
26
33
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Kitchen
|
4
|
+
module Directions
|
5
|
+
# Bake directons for eoc glossary
|
6
|
+
#
|
7
|
+
module BakeChapterGlossary
|
8
|
+
def self.v1(chapter:, metadata_source:, append_to: nil, uuid_prefix: nil)
|
9
|
+
V1.new.bake(
|
10
|
+
chapter: chapter,
|
11
|
+
metadata_source: metadata_source,
|
12
|
+
append_to: append_to,
|
13
|
+
uuid_prefix: uuid_prefix
|
14
|
+
)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Kitchen::Directions::BakeChapterGlossary
|
4
|
+
class V1
|
5
|
+
renderable
|
6
|
+
|
7
|
+
def bake(chapter:, metadata_source:, append_to: nil, uuid_prefix: '')
|
8
|
+
@metadata = metadata_source.children_to_keep.copy
|
9
|
+
@klass = 'glossary'
|
10
|
+
@title = I18n.t(:eoc_key_terms_title)
|
11
|
+
@uuid_prefix = uuid_prefix
|
12
|
+
|
13
|
+
definitions = chapter.glossaries.search('dl').cut
|
14
|
+
return if definitions.none?
|
15
|
+
definitions.sort_by! do |definition|
|
16
|
+
[definition.first('dt').text.downcase, definition.first('dd').text.downcase]
|
17
|
+
end
|
18
|
+
|
19
|
+
chapter.glossaries.trash
|
20
|
+
|
21
|
+
@content = definitions.paste
|
22
|
+
|
23
|
+
append_to_element = append_to || chapter
|
24
|
+
@in_composite_chapter = append_to_element.is?(:composite_chapter)
|
25
|
+
|
26
|
+
append_to_element.append(child: render(file:
|
27
|
+
'../../templates/eoc_section_title_template.xhtml.erb'))
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -28,7 +28,7 @@ module Kitchen
|
|
28
28
|
title.name = 'h2'
|
29
29
|
MoveTitleTextIntoSpan.v1(title: title)
|
30
30
|
|
31
|
-
intro_content = introduction_page.search("> :not([data-type='metadata']):not(
|
31
|
+
intro_content = introduction_page.search("> :not([data-type='metadata']):not(.splash):not(.has-splash)").cut
|
32
32
|
|
33
33
|
introduction_page.append(child:
|
34
34
|
<<~HTML
|
@@ -3,8 +3,13 @@
|
|
3
3
|
module Kitchen
|
4
4
|
module Directions
|
5
5
|
module BakeChapterKeyConcepts
|
6
|
-
def self.v1(chapter:, metadata_source:, append_to: nil)
|
7
|
-
V1.new.bake(
|
6
|
+
def self.v1(chapter:, metadata_source:, append_to: nil, uuid_prefix: '.')
|
7
|
+
V1.new.bake(
|
8
|
+
chapter: chapter,
|
9
|
+
metadata_source: metadata_source,
|
10
|
+
append_to: append_to,
|
11
|
+
uuid_prefix: uuid_prefix
|
12
|
+
)
|
8
13
|
end
|
9
14
|
end
|
10
15
|
end
|
@@ -3,10 +3,12 @@
|
|
3
3
|
module Kitchen::Directions::BakeChapterKeyConcepts
|
4
4
|
class V1
|
5
5
|
renderable
|
6
|
-
def bake(chapter:, metadata_source:, append_to:)
|
7
|
-
@
|
6
|
+
def bake(chapter:, metadata_source:, append_to:, uuid_prefix:)
|
7
|
+
@metadata = metadata_source.children_to_keep.copy
|
8
|
+
@klass = 'key-concepts'
|
9
|
+
@title = I18n.t(:eoc_key_concepts)
|
10
|
+
@uuid_prefix = uuid_prefix
|
8
11
|
|
9
|
-
@key_concepts = []
|
10
12
|
key_concepts_clipboard = Kitchen::Clipboard.new
|
11
13
|
chapter.non_introduction_pages.each do |page|
|
12
14
|
key_concepts = page.key_concepts
|
@@ -16,15 +18,18 @@ module Kitchen::Directions::BakeChapterKeyConcepts
|
|
16
18
|
title = Kitchen::Directions::EocSectionTitleLinkSnippet.v1(page: page)
|
17
19
|
key_concepts.each do |key_concept|
|
18
20
|
key_concept.prepend(child: title)
|
19
|
-
key_concept
|
21
|
+
key_concept.wrap("<div class='os-section-area'>")
|
22
|
+
page.search('.os-section-area').first.cut(to: key_concepts_clipboard)
|
20
23
|
end
|
21
|
-
@key_concepts.push(key_concepts_clipboard.paste)
|
22
|
-
key_concepts_clipboard.clear
|
23
24
|
end
|
24
25
|
|
26
|
+
@content = "<div class=\"os-key-concepts\"> #{key_concepts_clipboard.paste} </div>"
|
27
|
+
|
25
28
|
append_to_element = append_to || chapter
|
29
|
+
@in_composite_chapter = append_to_element.is?(:composite_chapter)
|
26
30
|
|
27
|
-
append_to_element.append(child: render(file:
|
31
|
+
append_to_element.append(child: render(file:
|
32
|
+
'../../templates/eoc_section_title_template.xhtml.erb'))
|
28
33
|
end
|
29
34
|
end
|
30
35
|
end
|