summaryrefslogtreecommitdiff
path: root/docs/modules/extend/examples
diff options
context:
space:
mode:
authorDan Allen <dan.j.allen@gmail.com>2022-05-11 01:11:45 -0600
committerDan Allen <dan.j.allen@gmail.com>2022-05-11 01:19:42 -0600
commite8831a5f9c82f82dc463a24b2d02b07270d607bd (patch)
treed29f24febffc0d1d2c942633ae209af70f1bc3f7 /docs/modules/extend/examples
parent96d57921a328fbaa2f077fe6cd597c4458611d67 (diff)
update extended converter that avoids a page break after a heading and use it in the test case
Diffstat (limited to 'docs/modules/extend/examples')
-rw-r--r--docs/modules/extend/examples/pdf-converter-avoid-break-after-heading.rb32
-rw-r--r--docs/modules/extend/examples/pdf-converter-avoid-break-after-section-title.rb26
2 files changed, 32 insertions, 26 deletions
diff --git a/docs/modules/extend/examples/pdf-converter-avoid-break-after-heading.rb b/docs/modules/extend/examples/pdf-converter-avoid-break-after-heading.rb
new file mode 100644
index 00000000..a024cdf3
--- /dev/null
+++ b/docs/modules/extend/examples/pdf-converter-avoid-break-after-heading.rb
@@ -0,0 +1,32 @@
+class PDFConverterAvoidBreakAfterSectionTitle < (Asciidoctor::Converter.for 'pdf')
+ register_for 'pdf'
+
+ def arrange_heading node, title, opts
+ return if y >= page_height / 3 # <1>
+ orphaned = nil
+ dry_run single_page: true do # <2>
+ start_page = page
+ theme_font :heading, level: opts[:level] do
+ if opts[:part]
+ ink_part_title node, title, opts # <3>
+ elsif opts[:chapterlike]
+ ink_chapter_title node, title, opts # <3>
+ else
+ ink_general_heading node, title, opts # <3>
+ end
+ end
+ if page == start_page
+ page.tare_content_stream
+ orphaned = stop_if_first_page_empty do # <4>
+ if node.context == :section
+ traverse node
+ else # discrete heading
+ convert (siblings = node.parent.blocks)[(siblings.index node).next]
+ end
+ end
+ end
+ end
+ start_new_page if orphaned # <5>
+ nil
+ end
+end
diff --git a/docs/modules/extend/examples/pdf-converter-avoid-break-after-section-title.rb b/docs/modules/extend/examples/pdf-converter-avoid-break-after-section-title.rb
deleted file mode 100644
index 28f01c78..00000000
--- a/docs/modules/extend/examples/pdf-converter-avoid-break-after-section-title.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-class PDFConverterAvoidBreakAfterSectionTitle < (Asciidoctor::Converter.for 'pdf')
- register_for 'pdf'
-
- def arrange_section sect, title, opts = {}
- return if @y >= (@margin_box.absolute_top / 3) # <1>
- orphaned = nil
- dry_run single_page: true do # <2>
- start_page = page
- theme_font :heading, level: opts[:level] do
- if opts[:part]
- ink_part_title sect, title, opts # <3>
- elsif opts[:chapterlike]
- ink_chapter_title sect, title, opts # <3>
- else
- ink_general_heading sect, title, opts # <3>
- end
- end
- if page == start_page
- page.tare_content_stream
- orphaned = stop_if_first_page_empty { traverse sect } # <4>
- end
- end
- start_new_page if orphaned # <5>
- nil
- end
-end