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