openstax_kitchen 6.0.0 → 9.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.
- checksums.yaml +4 -4
- data/.github/workflows/changelog.yml +0 -3
- data/CHANGELOG.md +38 -4
- data/Gemfile.lock +2 -2
- data/docker/rubocop +6 -4
- data/lib/kitchen/chapter_element.rb +0 -8
- data/lib/kitchen/composite_page_element.rb +20 -3
- data/lib/kitchen/directions/.rubocop.yml +3 -0
- data/lib/kitchen/directions/bake_chapter_glossary/v1.rb +30 -16
- data/lib/kitchen/directions/bake_chapter_key_concepts/v1.rb +9 -13
- data/lib/kitchen/directions/bake_chapter_key_equations.rb +10 -17
- data/lib/kitchen/directions/bake_chapter_references/main.rb +1 -2
- data/lib/kitchen/directions/bake_chapter_references/v1.rb +33 -21
- data/lib/kitchen/directions/bake_chapter_solutions/v1.rb +8 -12
- data/lib/kitchen/directions/bake_chapter_summary.rb +10 -32
- data/lib/kitchen/directions/bake_eoc_section_content/remove_section_title.rb +11 -0
- data/lib/kitchen/directions/bake_example.rb +7 -1
- data/lib/kitchen/directions/bake_further_research.rb +13 -39
- data/lib/kitchen/directions/bake_inline_lists.rb +22 -0
- data/lib/kitchen/directions/bake_references/main.rb +7 -0
- data/lib/kitchen/directions/bake_references/v2.rb +35 -0
- data/lib/kitchen/directions/bake_toc.rb +3 -1
- data/lib/kitchen/directions/eoc_composite_page_container/main.rb +27 -0
- data/lib/kitchen/directions/eoc_composite_page_container/v1.rb +19 -0
- data/lib/kitchen/directions/move_custom_section_to_eoc_container/main.rb +37 -0
- data/lib/kitchen/directions/move_custom_section_to_eoc_container/v1.rb +27 -0
- data/lib/kitchen/directions/move_exercises_to_eoc/v1.rb +10 -27
- data/lib/kitchen/directions/move_exercises_to_eoc/v2.rb +11 -18
- data/lib/kitchen/directions/move_exercises_to_eoc/v3.rb +14 -38
- data/lib/kitchen/directions/move_solutions_to_answer_key/strategies/calculus.rb +5 -5
- data/lib/kitchen/directions/move_solutions_to_answer_key/strategies/default.rb +3 -3
- data/lib/kitchen/element_base.rb +2 -2
- data/lib/kitchen/example_element.rb +1 -1
- data/lib/kitchen/i18n_string.rb +16 -0
- data/lib/kitchen/patches/array.rb +15 -0
- data/lib/kitchen/templates/eoc_section_template.xhtml.erb +11 -0
- data/lib/kitchen/templates/eoc_section_template_old.xhtml.erb +11 -0
- data/lib/kitchen/version.rb +1 -1
- data/lib/locales/en.yml +7 -5
- data/lib/locales/es.yml +7 -5
- data/lib/locales/pl.yml +6 -3
- data/lib/openstax_kitchen.rb +1 -0
- metadata +13 -3
- data/lib/kitchen/templates/eoc_section_title_template.xhtml.erb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fca2eb47435f5ff74342d7de2afc02e2c55eed224f1ae669b440d52a1c50b1b0
|
4
|
+
data.tar.gz: f22d42bc7618868d1890e149d9e0bf5134945b8fccce5c7742827e6c53589d81
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a457781d0bcb61533c5b96ca0b2ffcde74a69743a54c09f4b901b7e769056d1d616afa736df40067e7472a479c8526505d72fe5d7e9ecf3eca6789581d92c380
|
7
|
+
data.tar.gz: 9f517fbc86ae32e0fd2bbc108774a9f4b94a63df01675530c7f26d7f9bf9522654f4ddb5d7e1c9d141b1a67a0ccc6a98ac2f8c0cf94719ccf04b67cfbf69f240
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,39 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [9.0.0] - 2021-07-12
|
10
|
+
|
11
|
+
* Refactor `BakeChapterKeyConcepts`, `BakeChapterReferences`, `BakeChapterSolutions`, and `MoveExercisesToEoc` versions 1-3 to use new general eoc directions (major?)
|
12
|
+
* Fixed `BakeExample.v1` to also search inside `.body` for titles (minor)
|
13
|
+
* Add documentation to `MoveCustomSectionToEocContainer` & `EocCompositePageContainer` (minor)
|
14
|
+
* Add a `MoveCustomSectionToEocContainer` to allow for custom sections (minor)
|
15
|
+
* Add a `EocCompositePageContainer` direction to handle creation of eoc page wrapper (minor)
|
16
|
+
* Refactor `BakeChapterKeyEquations`, `BakeChapterGlossary`, `BakeChapterSummary`, `BakeFurtherResearch` (major)
|
17
|
+
* Fix metadata title in composite pages (major)
|
18
|
+
|
19
|
+
## [8.0.1] - 2021-06-29
|
20
|
+
|
21
|
+
* Added tags to classnames to optimize searches in `calculus strategy` for `move_solutions_to_answer_key` (minor)
|
22
|
+
|
23
|
+
## [8.0.0] - 2021-06-29
|
24
|
+
|
25
|
+
* Sort terms in `BakeChapterGlossary` in language specific way (major)
|
26
|
+
* Spanish translation change (minor)
|
27
|
+
* Fixed the implementation of `Element#wrap_children` to reuse existing document elements (major).
|
28
|
+
|
29
|
+
## [7.0.0] - 2021-06-21
|
30
|
+
|
31
|
+
* Changed selector expected by `default strategy` in `move_solutions_to_answer_key` to optimize search (major)
|
32
|
+
* Fix Rubocop GitHub Action's regular expression used to select files to lint (patch)
|
33
|
+
* Add optional numbering to multiple solutions inside examples (minor)
|
34
|
+
* Added monkey patch for array to be able to add a prefix: `%w[multiple-choice true-false].prefix('section.')` (minor)
|
35
|
+
* Add more specific book part selector (`os-eob`) for References in `is_citation_reference?`, `is_section_reference?` methods in `Element Base` to fix toc selector for References which are moved to EoC (major)
|
36
|
+
|
37
|
+
## [6.1.0] - 2021-06-21
|
38
|
+
|
39
|
+
* Create a `BakeReferences` V2 for unnumbered section references (minor)
|
40
|
+
* Don't check for CHANGELOG when merge a PR to main (patch)
|
41
|
+
* Added `BakeInlineLists` (minor)
|
9
42
|
|
10
43
|
## [6.0.0] - 2021-06-15
|
11
44
|
|
@@ -33,10 +66,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
33
66
|
* Adds `BakeNumberedNotes` V3 (minor)
|
34
67
|
* Added line that puts the classname `has-footnote` in the footnote ref's parent element (major)
|
35
68
|
* Added a condition into `BakeChapterSummary` so it doesn't bake the title if it already includes the respective number in it
|
36
|
-
* Create v3 of MoveExercisesToEOC which differs from v1 by the presence of a section title
|
37
|
-
and from v2 the lack of additional
|
38
|
-
* Add a condition in BakeNumberedExercise to make it possible to suppress even solutions in the Answer Key (minor)
|
39
|
-
* Fix BakeFurtherResearch baking with main bake script error by breaking the loop if further research sections are not present (minor)
|
69
|
+
* Create v3 of `MoveExercisesToEOC` which differs from v1 by the presence of a section title
|
70
|
+
and from v2 the lack of additional `os-section-area` and `os-#{@klass} wrapper` (minor)
|
71
|
+
* Add a condition in `BakeNumberedExercise` to make it possible to suppress even solutions in the Answer Key (minor)
|
72
|
+
* Fix `BakeFurtherResearch` baking with main bake script error by breaking the loop if further research sections are not present (minor)
|
73
|
+
* Rework v1 of `BakeChapterReferences` to bake references also from introduction pages (major)
|
40
74
|
* Fix for `BakeIndex` for words that start with a number to be grouped as symbols and for first letters with accent marks to be grouped with regular letters in alphabetic order (major)
|
41
75
|
|
42
76
|
## [5.0.0] - 2021-06-02
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
openstax_kitchen (
|
4
|
+
openstax_kitchen (9.0.0)
|
5
5
|
activesupport
|
6
6
|
i18n
|
7
7
|
nokogiri
|
@@ -11,7 +11,7 @@ PATH
|
|
11
11
|
GEM
|
12
12
|
remote: https://rubygems.org/
|
13
13
|
specs:
|
14
|
-
activesupport (6.1.
|
14
|
+
activesupport (6.1.4)
|
15
15
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
16
16
|
i18n (>= 1.6, < 2)
|
17
17
|
minitest (>= 5.1)
|
data/docker/rubocop
CHANGED
@@ -4,13 +4,15 @@
|
|
4
4
|
|
5
5
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
commit_range="${1:-main}"
|
8
|
+
if [ ! -z "$2" ]; then
|
9
|
+
commit_range="$commit_range..$2"
|
10
|
+
fi
|
9
11
|
|
10
|
-
echo "Checking
|
12
|
+
echo "Checking $commit_range"
|
11
13
|
|
12
14
|
# https://dev.to/scienta/get-changed-files-in-github-actions-1p36
|
13
|
-
changed_ruby_files=$(git diff --name-only --diff-filter=ACMRT $
|
15
|
+
changed_ruby_files=$(git diff --name-only --diff-filter=ACMRT $commit_range | grep -E "(lib\/|spec\/).*\.rb$" | xargs)
|
14
16
|
|
15
17
|
if [[ -z "${changed_ruby_files// }" ]]; then
|
16
18
|
echo "No files to lint with Rubocop"
|
@@ -52,14 +52,6 @@ module Kitchen
|
|
52
52
|
search("div[data-type='glossary']")
|
53
53
|
end
|
54
54
|
|
55
|
-
# Returns an enumerator for the key equations
|
56
|
-
#
|
57
|
-
# @return [ElementEnumerator]
|
58
|
-
#
|
59
|
-
def key_equations
|
60
|
-
search('section.key-equations')
|
61
|
-
end
|
62
|
-
|
63
55
|
# Returns an enumerator for the abstracts
|
64
56
|
#
|
65
57
|
# @return [ElementEnumerator]
|
@@ -43,12 +43,29 @@ module Kitchen
|
|
43
43
|
has_class?('os-index-container')
|
44
44
|
end
|
45
45
|
|
46
|
-
#
|
46
|
+
# In books we can find two types of EOB References.
|
47
|
+
#
|
48
|
+
# One of them has form similar to footnotes. There are citation links in the text that provides
|
49
|
+
# to the reference note at the end of the book.
|
50
|
+
#
|
51
|
+
# Second one is a section with references on the Introduction page that is moved to the EOB.
|
52
|
+
#
|
53
|
+
# Difference in classes is important.
|
54
|
+
|
55
|
+
# Returns true if this page is a book citation reference
|
56
|
+
#
|
57
|
+
# @return [Boolean]
|
58
|
+
#
|
59
|
+
def is_citation_reference?
|
60
|
+
has_class?('os-eob os-reference-container')
|
61
|
+
end
|
62
|
+
|
63
|
+
# Returns true if this page is a book section reference
|
47
64
|
#
|
48
65
|
# @return [Boolean]
|
49
66
|
#
|
50
|
-
def
|
51
|
-
has_class?('os-
|
67
|
+
def is_section_reference?
|
68
|
+
has_class?('os-eob os-references-container')
|
52
69
|
end
|
53
70
|
|
54
71
|
end
|
@@ -2,29 +2,43 @@
|
|
2
2
|
|
3
3
|
module Kitchen::Directions::BakeChapterGlossary
|
4
4
|
class V1
|
5
|
-
|
5
|
+
class Definition
|
6
|
+
attr_reader :element
|
7
|
+
|
8
|
+
def initialize(element)
|
9
|
+
term = Kitchen::I18nString.new(element.first('dt').text.downcase)
|
10
|
+
description = Kitchen::I18nString.new(element.first('dd').text.downcase)
|
11
|
+
@sortable = [term, description]
|
12
|
+
@element = element
|
13
|
+
end
|
14
|
+
|
15
|
+
def <=>(other)
|
16
|
+
sortable <=> other.sortable
|
17
|
+
end
|
18
|
+
|
19
|
+
protected
|
20
|
+
|
21
|
+
attr_reader :sortable
|
22
|
+
end
|
6
23
|
|
7
24
|
def bake(chapter:, metadata_source:, append_to: nil, uuid_prefix: '')
|
8
|
-
@
|
9
|
-
|
10
|
-
|
11
|
-
|
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]
|
25
|
+
@glossary = []
|
26
|
+
|
27
|
+
chapter.glossaries.search('dl').each do |definition_element|
|
28
|
+
@glossary.push(Definition.new(definition_element.cut))
|
17
29
|
end
|
18
30
|
|
19
31
|
chapter.glossaries.trash
|
20
32
|
|
21
|
-
|
22
|
-
|
23
|
-
append_to_element = append_to || chapter
|
24
|
-
@in_composite_chapter = append_to_element.is?(:composite_chapter)
|
33
|
+
content = @glossary.sort.map { |definition| definition.element.paste }.join
|
25
34
|
|
26
|
-
|
27
|
-
'
|
35
|
+
Kitchen::Directions::EocCompositePageContainer.v1(
|
36
|
+
container_key: 'glossary',
|
37
|
+
uuid_key: "#{uuid_prefix}glossary",
|
38
|
+
metadata_source: metadata_source,
|
39
|
+
content: content,
|
40
|
+
append_to: append_to || chapter
|
41
|
+
)
|
28
42
|
end
|
29
43
|
end
|
30
44
|
end
|
@@ -2,34 +2,30 @@
|
|
2
2
|
|
3
3
|
module Kitchen::Directions::BakeChapterKeyConcepts
|
4
4
|
class V1
|
5
|
-
renderable
|
6
5
|
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
|
11
|
-
|
12
6
|
key_concepts_clipboard = Kitchen::Clipboard.new
|
13
7
|
chapter.non_introduction_pages.each do |page|
|
14
8
|
key_concepts = page.key_concepts
|
15
9
|
next if key_concepts.none?
|
16
10
|
|
17
|
-
key_concepts.search('h3').trash
|
18
11
|
title = Kitchen::Directions::EocSectionTitleLinkSnippet.v1(page: page)
|
19
12
|
key_concepts.each do |key_concept|
|
13
|
+
Kitchen::Directions::RemoveSectionTitle.v1(section: key_concept)
|
20
14
|
key_concept.prepend(child: title)
|
21
15
|
key_concept.wrap("<div class='os-section-area'>")
|
22
16
|
page.search('div.os-section-area').first.cut(to: key_concepts_clipboard)
|
23
17
|
end
|
24
18
|
end
|
25
19
|
|
26
|
-
|
27
|
-
|
28
|
-
append_to_element = append_to || chapter
|
29
|
-
@in_composite_chapter = append_to_element.is?(:composite_chapter)
|
20
|
+
content = "<div class=\"os-key-concepts\"> #{key_concepts_clipboard.paste} </div>"
|
30
21
|
|
31
|
-
|
32
|
-
'
|
22
|
+
Kitchen::Directions::EocCompositePageContainer.v1(
|
23
|
+
container_key: 'key-concepts',
|
24
|
+
uuid_key: "#{uuid_prefix}key-concepts",
|
25
|
+
metadata_source: metadata_source,
|
26
|
+
content: content,
|
27
|
+
append_to: append_to || chapter
|
28
|
+
)
|
33
29
|
end
|
34
30
|
end
|
35
31
|
end
|
@@ -15,24 +15,17 @@ module Kitchen
|
|
15
15
|
end
|
16
16
|
|
17
17
|
class V1
|
18
|
-
renderable
|
19
18
|
def bake(chapter:, metadata_source:, append_to:, uuid_prefix:)
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
append_to_element = append_to || chapter
|
32
|
-
@in_composite_chapter = append_to_element.is?(:composite_chapter)
|
33
|
-
|
34
|
-
append_to_element.append(child: render(file:
|
35
|
-
'../templates/eoc_section_title_template.xhtml.erb'))
|
19
|
+
MoveCustomSectionToEocContainer.v1(
|
20
|
+
chapter: chapter,
|
21
|
+
metadata_source: metadata_source,
|
22
|
+
container_key: 'key-equations',
|
23
|
+
uuid_key: "#{uuid_prefix}key-equations",
|
24
|
+
section_selector: 'section.key-equations',
|
25
|
+
append_to: append_to
|
26
|
+
) do |section|
|
27
|
+
RemoveSectionTitle.v1(section: section)
|
28
|
+
end
|
36
29
|
end
|
37
30
|
end
|
38
31
|
end
|
@@ -2,34 +2,46 @@
|
|
2
2
|
|
3
3
|
module Kitchen::Directions::BakeChapterReferences
|
4
4
|
class V1
|
5
|
-
renderable
|
6
|
-
|
7
5
|
def bake(chapter:, metadata_source:, uuid_prefix: '.', klass: 'references')
|
8
|
-
|
9
|
-
@klass = klass
|
10
|
-
@title = I18n.t(:references)
|
11
|
-
@uuid_prefix = uuid_prefix
|
12
|
-
|
13
|
-
chapter.references.search('h3').trash
|
6
|
+
bake_page_references(page: chapter.introduction_page)
|
14
7
|
|
15
8
|
chapter.non_introduction_pages.each do |page|
|
16
|
-
|
17
|
-
next if references.none?
|
18
|
-
|
19
|
-
references.search('h3').trash
|
20
|
-
title = Kitchen::Directions::EocSectionTitleLinkSnippet.v1(page: page)
|
21
|
-
|
22
|
-
references.each do |reference|
|
23
|
-
reference.prepend(child: title)
|
24
|
-
end
|
9
|
+
bake_page_references(page: page)
|
25
10
|
end
|
26
11
|
|
27
|
-
|
12
|
+
content = chapter.pages.references.cut.paste
|
28
13
|
|
29
|
-
|
14
|
+
Kitchen::Directions::EocCompositePageContainer.v1(
|
15
|
+
container_key: klass,
|
16
|
+
uuid_key: "#{uuid_prefix}#{klass}",
|
17
|
+
metadata_source: metadata_source,
|
18
|
+
content: content,
|
19
|
+
append_to: chapter
|
20
|
+
)
|
21
|
+
end
|
30
22
|
|
31
|
-
|
32
|
-
|
23
|
+
def bake_page_references(page:)
|
24
|
+
return if page.nil?
|
25
|
+
|
26
|
+
references = page.references
|
27
|
+
return if references.none?
|
28
|
+
|
29
|
+
title = if page.is_introduction?
|
30
|
+
<<~HTML
|
31
|
+
<a href="##{page.title.id}">
|
32
|
+
<h3 data-type="document-title" id="#{page.title.copied_id}">
|
33
|
+
<span class="os-text" data-type="" itemprop="">#{page.title_text}</span>
|
34
|
+
</h3>
|
35
|
+
</a>
|
36
|
+
HTML
|
37
|
+
else
|
38
|
+
Kitchen::Directions::EocSectionTitleLinkSnippet.v1(page: page)
|
39
|
+
end
|
40
|
+
|
41
|
+
references.each do |reference|
|
42
|
+
Kitchen::Directions::RemoveSectionTitle.v1(section: reference)
|
43
|
+
reference.prepend(child: title)
|
44
|
+
end
|
33
45
|
end
|
34
46
|
end
|
35
47
|
end
|
@@ -2,14 +2,7 @@
|
|
2
2
|
|
3
3
|
module Kitchen::Directions::BakeChapterSolutions
|
4
4
|
class V1
|
5
|
-
renderable
|
6
|
-
|
7
5
|
def bake(chapter:, metadata_source:, uuid_prefix: '')
|
8
|
-
@metadata = metadata_source.children_to_keep.copy
|
9
|
-
@klass = 'solutions'
|
10
|
-
@title = I18n.t(:eoc_solutions_title)
|
11
|
-
@uuid_prefix = uuid_prefix
|
12
|
-
|
13
6
|
solutions_clipboard = Kitchen::Clipboard.new
|
14
7
|
|
15
8
|
chapter.search('section.free-response').each do |free_response_question|
|
@@ -26,12 +19,15 @@ module Kitchen::Directions::BakeChapterSolutions
|
|
26
19
|
end
|
27
20
|
end
|
28
21
|
|
29
|
-
|
30
|
-
|
31
|
-
@in_composite_chapter = false
|
22
|
+
content = solutions_clipboard.paste
|
32
23
|
|
33
|
-
|
34
|
-
'
|
24
|
+
Kitchen::Directions::EocCompositePageContainer.v1(
|
25
|
+
container_key: 'solutions',
|
26
|
+
uuid_key: "#{uuid_prefix}solutions",
|
27
|
+
metadata_source: metadata_source,
|
28
|
+
content: content,
|
29
|
+
append_to: chapter
|
30
|
+
)
|
35
31
|
end
|
36
32
|
end
|
37
33
|
end
|
@@ -15,52 +15,30 @@ module Kitchen
|
|
15
15
|
end
|
16
16
|
|
17
17
|
class V1
|
18
|
-
renderable
|
19
18
|
def bake(chapter:, metadata_source:, uuid_prefix: '.', klass: 'summary')
|
20
|
-
@metadata = metadata_source.children_to_keep.copy
|
21
|
-
@klass = klass
|
22
|
-
@title = I18n.t(:eoc_summary_title)
|
23
|
-
@uuid_prefix = uuid_prefix
|
24
|
-
|
25
19
|
summaries = Clipboard.new
|
26
20
|
|
27
|
-
# TODO: include specific page types somehow without writing it out
|
28
21
|
chapter.non_introduction_pages.each do |page|
|
29
22
|
summary = page.summary
|
30
23
|
|
31
24
|
next if summary.nil?
|
32
25
|
|
33
26
|
summary.first("[data-type='title']")&.trash # get rid of old title if exists
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
unless summary_title.children.search('span.os-number').present?
|
38
|
-
summary_title.replace_children(with:
|
39
|
-
<<~HTML
|
40
|
-
<span class="os-number">#{chapter.count_in(:book)}.#{page.count_in(:chapter)}</span>
|
41
|
-
<span class="os-divider"> </span>
|
42
|
-
<span class="os-text" data-type="" itemprop="">#{summary_title.children}</span>
|
43
|
-
HTML
|
44
|
-
)
|
45
|
-
end
|
46
|
-
|
47
|
-
summary.prepend(child:
|
48
|
-
<<~HTML
|
49
|
-
<a href="##{page.title.id}">
|
50
|
-
#{summary_title.paste}
|
51
|
-
</a>
|
52
|
-
HTML
|
53
|
-
)
|
27
|
+
title = EocSectionTitleLinkSnippet.v1(page: page)
|
28
|
+
summary.prepend(child: title)
|
29
|
+
summary.first('h3')[:itemprop] = 'name'
|
54
30
|
summary.cut(to: summaries)
|
55
31
|
end
|
56
32
|
|
57
33
|
return if summaries.none?
|
58
34
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
35
|
+
EocCompositePageContainer.v1(
|
36
|
+
container_key: klass,
|
37
|
+
uuid_key: "#{uuid_prefix}#{klass}",
|
38
|
+
metadata_source: metadata_source,
|
39
|
+
content: summaries.paste,
|
40
|
+
append_to: chapter
|
41
|
+
)
|
64
42
|
end
|
65
43
|
end
|
66
44
|
end
|