asciidoctor-revealjs 2.0.1 → 3.0.0.pre.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,10 @@
1
1
  if RUBY_ENGINE == 'opal'
2
2
  require 'asciidoctor-revealjs/converter'
3
3
  require 'asciidoctor-revealjs/version'
4
+ require 'asciidoctor-revealjs/highlightjs'
4
5
  else
5
6
  require 'asciidoctor' unless defined? Asciidoctor::Converter
6
7
  require_relative 'asciidoctor-revealjs/converter'
7
8
  require_relative 'asciidoctor-revealjs/version'
9
+ require_relative 'asciidoctor-revealjs/highlightjs'
8
10
  end
@@ -137,7 +137,7 @@ class Asciidoctor::Revealjs::Converter < ::Asciidoctor::Converter::Base
137
137
  #------------------------------- End of Helpers -------------------------------#
138
138
 
139
139
 
140
- register_for "revealjs"
140
+ register_for "revealjs", "reveal.js"
141
141
 
142
142
  def initialize(backend, opts = {})
143
143
  super
@@ -347,7 +347,52 @@ class Asciidoctor::Revealjs::Converter < ::Asciidoctor::Converter::Base
347
347
  node.extend(Helpers)
348
348
  node.instance_eval do
349
349
  converter.set_local_variables(binding, opts) unless opts.empty?
350
- _buf = ''; _buf << ("<!--This CSS is generated by the Asciidoctor-Reveal.js converter to further integrate AsciiDoc's existing semantic with Reveal.js--><style type=\"text/css\">.reveal div.right {\n float: right;\n}\n\n/* callouts */\n.conum[data-value] {display:inline-block;color:#fff!important;background-color:rgba(50,150,50,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:\"Open Sans\",\"DejaVu Sans\",sans-serif;font-style:normal;font-weight:bold}\n.conum[data-value] *{color:#fff!important}\n.conum[data-value]+b{display:none}\n.conum[data-value]:after{content:attr(data-value)}\npre .conum[data-value]{position:relative;top:-.125em}\nb.conum *{color:inherit!important}\n.conum:not([data-value]):empty{display:none}</style>".freeze);
350
+ _buf = ''; _buf << ("<!--This CSS is generated by the Asciidoctor-Reveal.js converter to further integrate AsciiDoc's existing semantic with Reveal.js--><style type=\"text/css\">.reveal div.right {\n float: right;\n}\n\n.reveal .listingblock.stretch > .content {\n height: 100%;\n}\n\n.reveal .listingblock.stretch > .content > pre {\n height: 100%;\n}\n\n.reveal .listingblock.stretch > .content > pre > code {\n height: 100%;\n max-height: 100%;\n}\n\n/* tables */\ntable{border-collapse:collapse;border-spacing:0}\ntable{margin-bottom:1.25em;border:solid 1px #dedede}\ntable thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;text-align:left}\ntable tr th,table tr td{padding:.5625em .625em;font-size:inherit}\ntable thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}\ntd.tableblock>.content{margin-bottom:1.25em}\ntd.tableblock>.content>:last-child{margin-bottom:-1.25em}\ntable.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}\ntable.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}\ntable.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}\ntable.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}\ntable.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}\ntable.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}\ntable.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}\ntable.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}\ntable.frame-all{border-width:1px}\ntable.frame-sides{border-width:0 1px}\ntable.frame-topbot,table.frame-ends{border-width:1px 0}\n.reveal table th.halign-left,.reveal table td.halign-left{text-align:left}\n.reveal table th.halign-right,.reveal table td.halign-right{text-align:right}\n.reveal table th.halign-center,.reveal table td.halign-center{text-align:center}\n.reveal table th.valign-top,.reveal table td.valign-top{vertical-align:top}\n.reveal table th.valign-bottom,.reveal table td.valign-bottom{vertical-align:bottom}\n.reveal table th.valign-middle,.reveal table td.valign-middle{vertical-align:middle}\ntable thead th,table tfoot th{font-weight:bold}\ntbody tr th{display:table-cell;line-height:1.6}\ntbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{font-weight:bold}\nthead{display:table-header-group}\n\n.reveal table.grid-none th,.reveal table.grid-none td{border-bottom:0!important}\n\n/* callouts */\n.conum[data-value] {display:inline-block;color:#fff!important;background-color:rgba(50,150,50,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:\"Open Sans\",\"DejaVu Sans\",sans-serif;font-style:normal;font-weight:bold}\n.conum[data-value] *{color:#fff!important}\n.conum[data-value]+b{display:none}\n.conum[data-value]:after{content:attr(data-value)}\npre .conum[data-value]{position:relative;top:-.125em}\nb.conum *{color:inherit!important}\n.conum:not([data-value]):empty{display:none}</style>".freeze);
351
+ ;
352
+ ;
353
+ ;
354
+ ;
355
+ ;
356
+ ;
357
+ ;
358
+ ;
359
+ ;
360
+ ;
361
+ ;
362
+ ;
363
+ ;
364
+ ;
365
+ ;
366
+ ;
367
+ ;
368
+ ;
369
+ ;
370
+ ;
371
+ ;
372
+ ;
373
+ ;
374
+ ;
375
+ ;
376
+ ;
377
+ ;
378
+ ;
379
+ ;
380
+ ;
381
+ ;
382
+ ;
383
+ ;
384
+ ;
385
+ ;
386
+ ;
387
+ ;
388
+ ;
389
+ ;
390
+ ;
391
+ ;
392
+ ;
393
+ ;
394
+ ;
395
+ ;
351
396
  ;
352
397
  ;
353
398
  ;
@@ -535,7 +580,8 @@ class Asciidoctor::Revealjs::Converter < ::Asciidoctor::Converter::Base
535
580
  ; [:description, :keywords, :author, :copyright].each do |key|;
536
581
  ; if attr? key;
537
582
  ; _buf << ("<meta".freeze); _slim_codeattributes2 = key; if _slim_codeattributes2; if _slim_codeattributes2 == true; _buf << (" name".freeze); else; _buf << (" name=\"".freeze); _buf << ((_slim_codeattributes2).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes3 = (attr key); if _slim_codeattributes3; if _slim_codeattributes3 == true; _buf << (" content".freeze); else; _buf << (" content=\"".freeze); _buf << ((_slim_codeattributes3).to_s); _buf << ("\"".freeze); end; end; _buf << (">".freeze);
538
- ; end; end; _buf << ("<title>".freeze); _buf << (((doctitle sanitize: true, use_fallback: true)).to_s);
583
+ ; end; end; linkcss = (attr? 'linkcss');
584
+ ; _buf << ("<title>".freeze); _buf << (((doctitle sanitize: true, use_fallback: true)).to_s);
539
585
  ; _buf << ("</title><meta content=\"yes\" name=\"apple-mobile-web-app-capable\"><meta content=\"black-translucent\" name=\"apple-mobile-web-app-status-bar-style\"><meta content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui\" name=\"viewport\"><link href=\"".freeze);
540
586
  ;
541
587
  ;
@@ -545,7 +591,52 @@ class Asciidoctor::Revealjs::Converter < ::Asciidoctor::Converter::Base
545
591
  ; _buf << ("<link rel=\"stylesheet\"".freeze); _slim_codeattributes4 = (attr :revealjs_customtheme); if _slim_codeattributes4; if _slim_codeattributes4 == true; _buf << (" href".freeze); else; _buf << (" href=\"".freeze); _buf << ((_slim_codeattributes4).to_s); _buf << ("\"".freeze); end; end; _buf << (" id=\"theme\">".freeze);
546
592
  ; else;
547
593
  ; _buf << ("<link rel=\"stylesheet\" href=\"".freeze); _buf << ((revealjsdir).to_s); _buf << ("/css/theme/".freeze); _buf << ((attr 'revealjs_theme', 'black').to_s); _buf << (".css\" id=\"theme\">".freeze);
548
- ; end; _buf << ("<!--This CSS is generated by the Asciidoctor-Reveal.js converter to further integrate AsciiDoc's existing semantic with Reveal.js--><style type=\"text/css\">.reveal div.right {\n float: right;\n}\n\n/* callouts */\n.conum[data-value] {display:inline-block;color:#fff!important;background-color:rgba(50,150,50,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:\"Open Sans\",\"DejaVu Sans\",sans-serif;font-style:normal;font-weight:bold}\n.conum[data-value] *{color:#fff!important}\n.conum[data-value]+b{display:none}\n.conum[data-value]:after{content:attr(data-value)}\npre .conum[data-value]{position:relative;top:-.125em}\nb.conum *{color:inherit!important}\n.conum:not([data-value]):empty{display:none}</style>".freeze);
594
+ ; end; _buf << ("<!--This CSS is generated by the Asciidoctor-Reveal.js converter to further integrate AsciiDoc's existing semantic with Reveal.js--><style type=\"text/css\">.reveal div.right {\n float: right;\n}\n\n.reveal .listingblock.stretch > .content {\n height: 100%;\n}\n\n.reveal .listingblock.stretch > .content > pre {\n height: 100%;\n}\n\n.reveal .listingblock.stretch > .content > pre > code {\n height: 100%;\n max-height: 100%;\n}\n\n/* tables */\ntable{border-collapse:collapse;border-spacing:0}\ntable{margin-bottom:1.25em;border:solid 1px #dedede}\ntable thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;text-align:left}\ntable tr th,table tr td{padding:.5625em .625em;font-size:inherit}\ntable thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}\ntd.tableblock>.content{margin-bottom:1.25em}\ntd.tableblock>.content>:last-child{margin-bottom:-1.25em}\ntable.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}\ntable.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}\ntable.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}\ntable.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}\ntable.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}\ntable.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}\ntable.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}\ntable.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}\ntable.frame-all{border-width:1px}\ntable.frame-sides{border-width:0 1px}\ntable.frame-topbot,table.frame-ends{border-width:1px 0}\n.reveal table th.halign-left,.reveal table td.halign-left{text-align:left}\n.reveal table th.halign-right,.reveal table td.halign-right{text-align:right}\n.reveal table th.halign-center,.reveal table td.halign-center{text-align:center}\n.reveal table th.valign-top,.reveal table td.valign-top{vertical-align:top}\n.reveal table th.valign-bottom,.reveal table td.valign-bottom{vertical-align:bottom}\n.reveal table th.valign-middle,.reveal table td.valign-middle{vertical-align:middle}\ntable thead th,table tfoot th{font-weight:bold}\ntbody tr th{display:table-cell;line-height:1.6}\ntbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{font-weight:bold}\nthead{display:table-header-group}\n\n.reveal table.grid-none th,.reveal table.grid-none td{border-bottom:0!important}\n\n/* callouts */\n.conum[data-value] {display:inline-block;color:#fff!important;background-color:rgba(50,150,50,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:\"Open Sans\",\"DejaVu Sans\",sans-serif;font-style:normal;font-weight:bold}\n.conum[data-value] *{color:#fff!important}\n.conum[data-value]+b{display:none}\n.conum[data-value]:after{content:attr(data-value)}\npre .conum[data-value]{position:relative;top:-.125em}\nb.conum *{color:inherit!important}\n.conum:not([data-value]):empty{display:none}</style>".freeze);
595
+ ;
596
+ ;
597
+ ;
598
+ ;
599
+ ;
600
+ ;
601
+ ;
602
+ ;
603
+ ;
604
+ ;
605
+ ;
606
+ ;
607
+ ;
608
+ ;
609
+ ;
610
+ ;
611
+ ;
612
+ ;
613
+ ;
614
+ ;
615
+ ;
616
+ ;
617
+ ;
618
+ ;
619
+ ;
620
+ ;
621
+ ;
622
+ ;
623
+ ;
624
+ ;
625
+ ;
626
+ ;
627
+ ;
628
+ ;
629
+ ;
630
+ ;
631
+ ;
632
+ ;
633
+ ;
634
+ ;
635
+ ;
636
+ ;
637
+ ;
638
+ ;
639
+ ;
549
640
  ;
550
641
  ;
551
642
  ;
@@ -561,8 +652,9 @@ class Asciidoctor::Revealjs::Converter < ::Asciidoctor::Converter::Base
561
652
  ;
562
653
  ;
563
654
  ; if attr? :icons, 'font';
655
+ ;
564
656
  ; if attr? 'iconfont-remote';
565
- ; _buf << ("<link rel=\"stylesheet\"".freeze); _slim_codeattributes5 = (attr 'iconfont-cdn', %(#{cdn_base}/font-awesome/4.3.0/css/font-awesome.min.css)); if _slim_codeattributes5; if _slim_codeattributes5 == true; _buf << (" href".freeze); else; _buf << (" href=\"".freeze); _buf << ((_slim_codeattributes5).to_s); _buf << ("\"".freeze); end; end; _buf << (">".freeze);
657
+ ; _buf << ("<link rel=\"stylesheet\"".freeze); _slim_codeattributes5 = (attr 'iconfont-cdn', %(#{cdn_base}/font-awesome/5.8.2/css/all.min.css)); if _slim_codeattributes5; if _slim_codeattributes5 == true; _buf << (" href".freeze); else; _buf << (" href=\"".freeze); _buf << ((_slim_codeattributes5).to_s); _buf << ("\"".freeze); end; end; _buf << (">".freeze);
566
658
  ; else;
567
659
  ; _buf << ("<link rel=\"stylesheet\"".freeze); _slim_codeattributes6 = (normalize_web_path %(#{attr 'iconfont-name', 'font-awesome'}.css), (attr 'stylesdir', ''), false); if _slim_codeattributes6; if _slim_codeattributes6 == true; _buf << (" href".freeze); else; _buf << (" href=\"".freeze); _buf << ((_slim_codeattributes6).to_s); _buf << ("\"".freeze); end; end; _buf << (">".freeze);
568
660
  ; end; end; if attr? :stem;
@@ -583,24 +675,10 @@ class Asciidoctor::Revealjs::Converter < ::Asciidoctor::Converter::Base
583
675
  ; _buf << ((eqnums_opt).to_s); _buf << ("}\n});</script><script src=\"".freeze);
584
676
  ;
585
677
  ; _buf << ((cdn_base).to_s); _buf << ("/mathjax/2.4.0/MathJax.js?config=TeX-MML-AM_HTMLorMML\"></script>".freeze);
586
- ; end; case document.attr 'source-highlighter';
587
- ; when 'coderay';
588
- ; if (attr 'coderay-css', 'class') == 'class';
589
- ; if @safe >= Asciidoctor::SafeMode::SECURE || (attr? :linkcss);
590
- ; _buf << ("<link rel=\"stylesheet\"".freeze); _slim_codeattributes7 = normalize_web_path('asciidoctor-coderay.css', (attr :stylesdir, '')); if _slim_codeattributes7; if _slim_codeattributes7 == true; _buf << (" href".freeze); else; _buf << (" href=\"".freeze); _buf << ((_slim_codeattributes7).to_s); _buf << ("\"".freeze); end; end; _buf << (">".freeze);
591
- ; else;
592
- ; _buf << ("<style>".freeze); _buf << ((Asciidoctor::Stylesheets.instance.coderay_stylesheet_data).to_s);
593
- ; _buf << ("</style>".freeze); end; end; when 'pygments';
594
- ; if (attr 'pygments-css', 'class') == 'class';
595
- ; if @safe >= Asciidoctor::SafeMode::SECURE || (attr? :linkcss);
596
- ; _buf << ("<link rel=\"stylesheet\"".freeze); _slim_codeattributes8 = normalize_web_path('asciidoctor-pygments.css', (attr :stylesdir, '')); if _slim_codeattributes8; if _slim_codeattributes8 == true; _buf << (" href".freeze); else; _buf << (" href=\"".freeze); _buf << ((_slim_codeattributes8).to_s); _buf << ("\"".freeze); end; end; _buf << (">".freeze);
597
- ; else;
598
- ; _buf << ("<style>".freeze); _buf << ((Asciidoctor::Stylesheets.instance.pygments_stylesheet_data(attr 'pygments-style')).to_s);
599
- ; _buf << ("</style>".freeze); end; end;
600
- ; end; if attr? 'highlightjs-theme';
601
- ; _buf << ("<link".freeze); _slim_codeattributes9 = (attr 'highlightjs-theme'); if _slim_codeattributes9; if _slim_codeattributes9 == true; _buf << (" href".freeze); else; _buf << (" href=\"".freeze); _buf << ((_slim_codeattributes9).to_s); _buf << ("\"".freeze); end; end; _buf << (" rel=\"stylesheet\">".freeze);
602
- ; else;
603
- ; _buf << ("<link href=\"".freeze); _buf << ((revealjsdir).to_s); _buf << ("/lib/css/zenburn.css\" rel=\"stylesheet\">".freeze);
678
+ ;
679
+ ; end; syntax_hl = self.syntax_highlighter;
680
+ ; if syntax_hl && (syntax_hl.docinfo? :head);
681
+ ; _buf << ((syntax_hl.docinfo :head, self, cdn_base_url: cdn_base, linkcss: linkcss, self_closing_tag_slash: '/').to_s);
604
682
  ;
605
683
  ; end; _buf << ("<script>var link = document.createElement( 'link' );\nlink.rel = 'stylesheet';\nlink.type = 'text/css';\nlink.href = window.location.search.match( /print-pdf/gi ) ? \"".freeze);
606
684
  ;
@@ -613,7 +691,7 @@ class Asciidoctor::Revealjs::Converter < ::Asciidoctor::Converter::Base
613
691
  ; unless (docinfo_content = docinfo :header, '.html').empty?;
614
692
  ; _buf << ((docinfo_content).to_s);
615
693
  ; end; if attr? :customcss;
616
- ; _buf << ("<link rel=\"stylesheet\"".freeze); _slim_codeattributes10 = ((customcss = attr :customcss).empty? ? 'asciidoctor-revealjs.css' : customcss); if _slim_codeattributes10; if _slim_codeattributes10 == true; _buf << (" href".freeze); else; _buf << (" href=\"".freeze); _buf << ((_slim_codeattributes10).to_s); _buf << ("\"".freeze); end; end; _buf << (">".freeze);
694
+ ; _buf << ("<link rel=\"stylesheet\"".freeze); _slim_codeattributes7 = ((customcss = attr :customcss).empty? ? 'asciidoctor-revealjs.css' : customcss); if _slim_codeattributes7; if _slim_codeattributes7 == true; _buf << (" href".freeze); else; _buf << (" href=\"".freeze); _buf << ((_slim_codeattributes7).to_s); _buf << ("\"".freeze); end; end; _buf << (">".freeze);
617
695
  ; end; _buf << ("</head><body><div class=\"reveal\"><div class=\"slides\">".freeze);
618
696
  ;
619
697
  ;
@@ -635,7 +713,8 @@ class Asciidoctor::Revealjs::Converter < ::Asciidoctor::Converter::Base
635
713
  ;
636
714
  ;
637
715
  ;
638
- ; _buf << ("<section".freeze); _temple_html_attributeremover1 = ''; _temple_html_attributemerger1 = []; _temple_html_attributemerger1[0] = "title"; _temple_html_attributemerger1[1] = ''; _slim_codeattributes11 = role; if Array === _slim_codeattributes11; _slim_codeattributes11 = _slim_codeattributes11.flatten; _slim_codeattributes11.map!(&:to_s); _slim_codeattributes11.reject!(&:empty?); _temple_html_attributemerger1[1] << ((_slim_codeattributes11.join(" ")).to_s); else; _temple_html_attributemerger1[1] << ((_slim_codeattributes11).to_s); end; _temple_html_attributemerger1[1]; _temple_html_attributeremover1 << ((_temple_html_attributemerger1.reject(&:empty?).join(" ")).to_s); _temple_html_attributeremover1; if !_temple_html_attributeremover1.empty?; _buf << (" class=\"".freeze); _buf << ((_temple_html_attributeremover1).to_s); _buf << ("\"".freeze); end; _buf << (" data-state=\"title\"".freeze); _slim_codeattributes12 = (attr 'title-slide-transition'); if _slim_codeattributes12; if _slim_codeattributes12 == true; _buf << (" data-transition".freeze); else; _buf << (" data-transition=\"".freeze); _buf << ((_slim_codeattributes12).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes13 = (attr 'title-slide-transition-speed'); if _slim_codeattributes13; if _slim_codeattributes13 == true; _buf << (" data-transition-speed".freeze); else; _buf << (" data-transition-speed=\"".freeze); _buf << ((_slim_codeattributes13).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes14 = (attr 'title-slide-background'); if _slim_codeattributes14; if _slim_codeattributes14 == true; _buf << (" data-background".freeze); else; _buf << (" data-background=\"".freeze); _buf << ((_slim_codeattributes14).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes15 = (attr 'title-slide-background-size'); if _slim_codeattributes15; if _slim_codeattributes15 == true; _buf << (" data-background-size".freeze); else; _buf << (" data-background-size=\"".freeze); _buf << ((_slim_codeattributes15).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes16 = bg_image; if _slim_codeattributes16; if _slim_codeattributes16 == true; _buf << (" data-background-image".freeze); else; _buf << (" data-background-image=\"".freeze); _buf << ((_slim_codeattributes16).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes17 = bg_video; if _slim_codeattributes17; if _slim_codeattributes17 == true; _buf << (" data-background-video".freeze); else; _buf << (" data-background-video=\"".freeze); _buf << ((_slim_codeattributes17).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes18 = (attr 'title-slide-background-video-loop'); if _slim_codeattributes18; if _slim_codeattributes18 == true; _buf << (" data-background-video-loop".freeze); else; _buf << (" data-background-video-loop=\"".freeze); _buf << ((_slim_codeattributes18).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes19 = (attr 'title-slide-background-video-muted'); if _slim_codeattributes19; if _slim_codeattributes19 == true; _buf << (" data-background-video-muted".freeze); else; _buf << (" data-background-video-muted=\"".freeze); _buf << ((_slim_codeattributes19).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes20 = (attr 'title-slide-background-iframe'); if _slim_codeattributes20; if _slim_codeattributes20 == true; _buf << (" data-background-iframe".freeze); else; _buf << (" data-background-iframe=\"".freeze); _buf << ((_slim_codeattributes20).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes21 = (attr 'title-slide-background-color'); if _slim_codeattributes21; if _slim_codeattributes21 == true; _buf << (" data-background-color".freeze); else; _buf << (" data-background-color=\"".freeze); _buf << ((_slim_codeattributes21).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes22 = (attr 'title-slide-background-repeat'); if _slim_codeattributes22; if _slim_codeattributes22 == true; _buf << (" data-background-repeat".freeze); else; _buf << (" data-background-repeat=\"".freeze); _buf << ((_slim_codeattributes22).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes23 = (attr 'title-slide-background-position'); if _slim_codeattributes23; if _slim_codeattributes23 == true; _buf << (" data-background-position".freeze); else; _buf << (" data-background-position=\"".freeze); _buf << ((_slim_codeattributes23).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes24 = (attr 'title-slide-background-transition'); if _slim_codeattributes24; if _slim_codeattributes24 == true; _buf << (" data-background-transition".freeze); else; _buf << (" data-background-transition=\"".freeze); _buf << ((_slim_codeattributes24).to_s); _buf << ("\"".freeze); end; end; _buf << (">".freeze);
716
+ ;
717
+ ; _buf << ("<section".freeze); _temple_html_attributeremover1 = ''; _temple_html_attributemerger1 = []; _temple_html_attributemerger1[0] = "title"; _temple_html_attributemerger1[1] = ''; _slim_codeattributes8 = role; if Array === _slim_codeattributes8; _slim_codeattributes8 = _slim_codeattributes8.flatten; _slim_codeattributes8.map!(&:to_s); _slim_codeattributes8.reject!(&:empty?); _temple_html_attributemerger1[1] << ((_slim_codeattributes8.join(" ")).to_s); else; _temple_html_attributemerger1[1] << ((_slim_codeattributes8).to_s); end; _temple_html_attributemerger1[1]; _temple_html_attributeremover1 << ((_temple_html_attributemerger1.reject(&:empty?).join(" ")).to_s); _temple_html_attributeremover1; if !_temple_html_attributeremover1.empty?; _buf << (" class=\"".freeze); _buf << ((_temple_html_attributeremover1).to_s); _buf << ("\"".freeze); end; _buf << (" data-state=\"title\"".freeze); _slim_codeattributes9 = (attr 'title-slide-transition'); if _slim_codeattributes9; if _slim_codeattributes9 == true; _buf << (" data-transition".freeze); else; _buf << (" data-transition=\"".freeze); _buf << ((_slim_codeattributes9).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes10 = (attr 'title-slide-transition-speed'); if _slim_codeattributes10; if _slim_codeattributes10 == true; _buf << (" data-transition-speed".freeze); else; _buf << (" data-transition-speed=\"".freeze); _buf << ((_slim_codeattributes10).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes11 = (attr 'title-slide-background'); if _slim_codeattributes11; if _slim_codeattributes11 == true; _buf << (" data-background".freeze); else; _buf << (" data-background=\"".freeze); _buf << ((_slim_codeattributes11).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes12 = (attr 'title-slide-background-size'); if _slim_codeattributes12; if _slim_codeattributes12 == true; _buf << (" data-background-size".freeze); else; _buf << (" data-background-size=\"".freeze); _buf << ((_slim_codeattributes12).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes13 = bg_image; if _slim_codeattributes13; if _slim_codeattributes13 == true; _buf << (" data-background-image".freeze); else; _buf << (" data-background-image=\"".freeze); _buf << ((_slim_codeattributes13).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes14 = bg_video; if _slim_codeattributes14; if _slim_codeattributes14 == true; _buf << (" data-background-video".freeze); else; _buf << (" data-background-video=\"".freeze); _buf << ((_slim_codeattributes14).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes15 = (attr 'title-slide-background-video-loop'); if _slim_codeattributes15; if _slim_codeattributes15 == true; _buf << (" data-background-video-loop".freeze); else; _buf << (" data-background-video-loop=\"".freeze); _buf << ((_slim_codeattributes15).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes16 = (attr 'title-slide-background-video-muted'); if _slim_codeattributes16; if _slim_codeattributes16 == true; _buf << (" data-background-video-muted".freeze); else; _buf << (" data-background-video-muted=\"".freeze); _buf << ((_slim_codeattributes16).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes17 = (attr "background-opacity"); if _slim_codeattributes17; if _slim_codeattributes17 == true; _buf << (" data-background-opacity".freeze); else; _buf << (" data-background-opacity=\"".freeze); _buf << ((_slim_codeattributes17).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes18 = (attr 'title-slide-background-iframe'); if _slim_codeattributes18; if _slim_codeattributes18 == true; _buf << (" data-background-iframe".freeze); else; _buf << (" data-background-iframe=\"".freeze); _buf << ((_slim_codeattributes18).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes19 = (attr 'title-slide-background-color'); if _slim_codeattributes19; if _slim_codeattributes19 == true; _buf << (" data-background-color".freeze); else; _buf << (" data-background-color=\"".freeze); _buf << ((_slim_codeattributes19).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes20 = (attr 'title-slide-background-repeat'); if _slim_codeattributes20; if _slim_codeattributes20 == true; _buf << (" data-background-repeat".freeze); else; _buf << (" data-background-repeat=\"".freeze); _buf << ((_slim_codeattributes20).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes21 = (attr 'title-slide-background-position'); if _slim_codeattributes21; if _slim_codeattributes21 == true; _buf << (" data-background-position".freeze); else; _buf << (" data-background-position=\"".freeze); _buf << ((_slim_codeattributes21).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes22 = (attr 'title-slide-background-transition'); if _slim_codeattributes22; if _slim_codeattributes22 == true; _buf << (" data-background-transition".freeze); else; _buf << (" data-background-transition=\"".freeze); _buf << ((_slim_codeattributes22).to_s); _buf << ("\"".freeze); end; end; _buf << (">".freeze);
639
718
  ; if (_title_obj = doctitle partition: true, use_fallback: true).subtitle?;
640
719
  ; _buf << ("<h1>".freeze); _buf << ((slice_text _title_obj.title, (_slice = header.option? :slice)).to_s);
641
720
  ; _buf << ("</h1><h2>".freeze); _buf << ((slice_text _title_obj.subtitle, _slice).to_s);
@@ -764,7 +843,13 @@ class Asciidoctor::Revealjs::Converter < ::Asciidoctor::Converter::Base
764
843
  ;
765
844
  ;
766
845
  ; _buf << ((attr 'revealjs_minscale', 0.2).to_s); _buf << (",\n maxScale: ".freeze);
767
- ; _buf << ((attr 'revealjs_maxscale', 1.5).to_s); _buf << (",\n\n // Optional libraries used to extend on reveal.js\n dependencies: [\n { src: '".freeze);
846
+ ; _buf << ((attr 'revealjs_maxscale', 1.5).to_s); _buf << (",\n\n // PDF Export Options\n // Put each fragment on a separate page\n pdfSeparateFragments: ".freeze);
847
+ ;
848
+ ;
849
+ ;
850
+ ; _buf << ((to_boolean(attr 'revealjs_pdfseparatefragments', true)).to_s); _buf << (",\n // For slides that do not fit on a page, max number of pages\n pdfMaxPagesPerSlide: ".freeze);
851
+ ;
852
+ ; _buf << ((attr 'revealjs_pdfmaxpagesperslide', 1).to_s); _buf << (",\n\n // Optional libraries used to extend on reveal.js\n dependencies: [\n { src: '".freeze);
768
853
  ;
769
854
  ;
770
855
  ;
@@ -781,7 +866,10 @@ class Asciidoctor::Revealjs::Converter < ::Asciidoctor::Converter::Base
781
866
  ; _buf << (((attr? 'revealjs_plugins_configuration') ? File.read(attr('revealjs_plugins_configuration', '')) : "").to_s);
782
867
  ; _buf << ("\n\n});</script>".freeze);
783
868
  ;
784
- ; unless (docinfo_content = (docinfo :footer, '.html')).empty?;
869
+ ; if syntax_hl && (syntax_hl.docinfo? :footer);
870
+ ; _buf << ((syntax_hl.docinfo :footer, self, cdn_base_url: cdn_base, linkcss: linkcss, self_closing_tag_slash: '/').to_s);
871
+ ;
872
+ ; end; unless (docinfo_content = (docinfo :footer, '.html')).empty?;
785
873
  ; _buf << ((docinfo_content).to_s);
786
874
  ; end; _buf << ("</body></html>".freeze); _buf
787
875
  end
@@ -968,42 +1056,26 @@ class Asciidoctor::Revealjs::Converter < ::Asciidoctor::Converter::Base
968
1056
  node.extend(Helpers)
969
1057
  node.instance_eval do
970
1058
  converter.set_local_variables(binding, opts) unless opts.empty?
971
- _buf = ''; if title?;
972
- ; _buf << ("<div class=\"title\">".freeze); _buf << ((captioned_title).to_s);
973
- ; _buf << ("</div>".freeze); end; nowrap = !(@document.attr? :prewrap) || (option? 'nowrap');
974
- ;
975
- ;
976
- ; if @style == 'source' || (@style == 'listing' && attributes[1] != 'listing');
977
- ; language = attr :language;
978
- ; code_class = language ? [language, "language-#{language}"] : nil;
979
- ; pre_class = ['highlight'];
980
- ; pre_lang = nil;
981
- ; code_noescape = false;
982
- ; case document.attr 'source-highlighter';
983
- ; when 'coderay';
984
- ; pre_class = ['CodeRay'];
985
- ; when 'pygments';
986
- ; pre_class = ['pygments','highlight'];
987
- ; when 'prettify';
988
- ; pre_class = ['prettyprint'];
989
- ; pre_class << 'linenums' if attr? :linenums;
990
- ; pre_class << language if language;
991
- ; pre_class << "language-#{language}" if language;
992
- ; code_class = nil;
993
- ; when 'html-pipeline';
994
- ; pre_lang = language;
995
- ; pre_class = code_class = nil;
996
- ; nowrap = false;
997
- ; when 'highlightjs', 'highlight.js';
998
- ; code_noescape=true;
999
- ; end; pre_class << 'nowrap' if nowrap;
1000
- ; pre_class << 'listingblock';
1001
- ; pre_class << role if role;
1002
- ; _buf << ("<pre".freeze); _temple_html_attributeremover1 = ''; _slim_codeattributes1 = pre_class; if Array === _slim_codeattributes1; _slim_codeattributes1 = _slim_codeattributes1.flatten; _slim_codeattributes1.map!(&:to_s); _slim_codeattributes1.reject!(&:empty?); _temple_html_attributeremover1 << ((_slim_codeattributes1.join(" ")).to_s); else; _temple_html_attributeremover1 << ((_slim_codeattributes1).to_s); end; _temple_html_attributeremover1; if !_temple_html_attributeremover1.empty?; _buf << (" class=\"".freeze); _buf << ((_temple_html_attributeremover1).to_s); _buf << ("\"".freeze); end; _slim_codeattributes2 = pre_lang; if _slim_codeattributes2; if _slim_codeattributes2 == true; _buf << (" lang".freeze); else; _buf << (" lang=\"".freeze); _buf << ((_slim_codeattributes2).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes3 = @id; if _slim_codeattributes3; if _slim_codeattributes3 == true; _buf << (" id".freeze); else; _buf << (" id=\"".freeze); _buf << ((_slim_codeattributes3).to_s); _buf << ("\"".freeze); end; end; _buf << ("><code".freeze);
1003
- ; _slim_codeattributes4 = code_noescape; if _slim_codeattributes4; if _slim_codeattributes4 == true; _buf << (" data-noescape".freeze); else; _buf << (" data-noescape=\"".freeze); _buf << ((_slim_codeattributes4).to_s); _buf << ("\"".freeze); end; end; _temple_html_attributeremover2 = ''; _slim_codeattributes5 = code_class; if Array === _slim_codeattributes5; _slim_codeattributes5 = _slim_codeattributes5.flatten; _slim_codeattributes5.map!(&:to_s); _slim_codeattributes5.reject!(&:empty?); _temple_html_attributeremover2 << ((_slim_codeattributes5.join(" ")).to_s); else; _temple_html_attributeremover2 << ((_slim_codeattributes5).to_s); end; _temple_html_attributeremover2; if !_temple_html_attributeremover2.empty?; _buf << (" class=\"".freeze); _buf << ((_temple_html_attributeremover2).to_s); _buf << ("\"".freeze); end; _buf << (">".freeze); _buf << ((content).to_s);
1004
- ; _buf << ("</code></pre>".freeze); else;
1005
- ; _buf << ("<pre".freeze); _temple_html_attributeremover3 = ''; _slim_codeattributes6 = (nowrap ? 'nowrap' : nil); if Array === _slim_codeattributes6; _slim_codeattributes6 = _slim_codeattributes6.flatten; _slim_codeattributes6.map!(&:to_s); _slim_codeattributes6.reject!(&:empty?); _temple_html_attributeremover3 << ((_slim_codeattributes6.join(" ")).to_s); else; _temple_html_attributeremover3 << ((_slim_codeattributes6).to_s); end; _temple_html_attributeremover3; if !_temple_html_attributeremover3.empty?; _buf << (" class=\"".freeze); _buf << ((_temple_html_attributeremover3).to_s); _buf << ("\"".freeze); end; _buf << (">".freeze); _buf << ((content).to_s);
1006
- ; _buf << ("</pre>".freeze); end; _buf
1059
+ _buf = ''; nowrap = (option? 'nowrap') || !(document.attr? 'prewrap');
1060
+ ; syntax_hl = document.syntax_highlighter;
1061
+ ; if @style == 'source';
1062
+ ; lang = attr :language;
1063
+ ; if syntax_hl;
1064
+ ; doc_attrs = document.attributes;
1065
+ ; css_mode = (doc_attrs[%(#{syntax_hl.name}-css)] || :class).to_sym;
1066
+ ; style = doc_attrs[%(#{syntax_hl.name}-style)];
1067
+ ; opts = syntax_hl.highlight? ? { css_mode: css_mode, style: style } : {};
1068
+ ; opts[:nowrap] = nowrap;
1069
+ ; else;
1070
+ ; pre_open = %(<pre class="highlight#{nowrap ? ' nowrap' : ''}"><code#{lang ? %[ class="language-#{lang}" data-lang="#{lang}"] : ''}>);
1071
+ ; pre_close = '</code></pre>';
1072
+ ; end; else;
1073
+ ; pre_open = %(<pre#{nowrap ? ' class="nowrap"' : ''}>);
1074
+ ; pre_close = '</pre>';
1075
+ ; end; id_attribute = id ? %( id="#{id}") : '';
1076
+ ; title_element = title? ? %(<div class="title">#{captioned_title}</div>\n) : '';
1077
+ ; _buf << ((%(<div#{id_attribute} class="listingblock#{(role = self.role) ? " #{role}" : ''}">#{title_element}<div class="content">#{syntax_hl ? (syntax_hl.format self, lang, opts) : pre_open + (content || '') + pre_close}</div></div>)).to_s);
1078
+ ; _buf
1007
1079
  end
1008
1080
  end
1009
1081
 
@@ -1037,7 +1109,7 @@ class Asciidoctor::Revealjs::Converter < ::Asciidoctor::Converter::Base
1037
1109
  ;
1038
1110
  ;
1039
1111
  ; data_background_image, data_background_size, data_background_repeat,
1040
- data_background_transition = nil;
1112
+ data_background_position, data_background_transition = nil;
1041
1113
  ;
1042
1114
  ;
1043
1115
  ; section_images = blocks.map do |block|;
@@ -1053,6 +1125,7 @@ class Asciidoctor::Revealjs::Converter < ::Asciidoctor::Converter::Base
1053
1125
  ; data_background_size = bg_image.attr 'size';
1054
1126
  ; data_background_repeat = bg_image.attr 'repeat';
1055
1127
  ; data_background_transition = bg_image.attr 'transition';
1128
+ ; data_background_position = bg_image.attr 'position';
1056
1129
  ;
1057
1130
  ;
1058
1131
  ; end; if attr? 'background-image';
@@ -1079,7 +1152,9 @@ class Asciidoctor::Revealjs::Converter < ::Asciidoctor::Converter::Base
1079
1152
  ;
1080
1153
  ;
1081
1154
  ;
1082
- ; _slim_codeattributes1 = (titleless ? nil : id); if _slim_codeattributes1; if _slim_codeattributes1 == true; _buf << (" id".freeze); else; _buf << (" id=\"".freeze); _buf << ((_slim_codeattributes1).to_s); _buf << ("\"".freeze); end; end; _temple_html_attributeremover1 = ''; _slim_codeattributes2 = roles; if Array === _slim_codeattributes2; _slim_codeattributes2 = _slim_codeattributes2.flatten; _slim_codeattributes2.map!(&:to_s); _slim_codeattributes2.reject!(&:empty?); _temple_html_attributeremover1 << ((_slim_codeattributes2.join(" ")).to_s); else; _temple_html_attributeremover1 << ((_slim_codeattributes2).to_s); end; _temple_html_attributeremover1; if !_temple_html_attributeremover1.empty?; _buf << (" class=\"".freeze); _buf << ((_temple_html_attributeremover1).to_s); _buf << ("\"".freeze); end; _slim_codeattributes3 = (attr 'transition'); if _slim_codeattributes3; if _slim_codeattributes3 == true; _buf << (" data-transition".freeze); else; _buf << (" data-transition=\"".freeze); _buf << ((_slim_codeattributes3).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes4 = (attr 'transition-speed'); if _slim_codeattributes4; if _slim_codeattributes4 == true; _buf << (" data-transition-speed".freeze); else; _buf << (" data-transition-speed=\"".freeze); _buf << ((_slim_codeattributes4).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes5 = data_background_color; if _slim_codeattributes5; if _slim_codeattributes5 == true; _buf << (" data-background-color".freeze); else; _buf << (" data-background-color=\"".freeze); _buf << ((_slim_codeattributes5).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes6 = data_background_image; if _slim_codeattributes6; if _slim_codeattributes6 == true; _buf << (" data-background-image".freeze); else; _buf << (" data-background-image=\"".freeze); _buf << ((_slim_codeattributes6).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes7 = (data_background_size || attr('background-size')); if _slim_codeattributes7; if _slim_codeattributes7 == true; _buf << (" data-background-size".freeze); else; _buf << (" data-background-size=\"".freeze); _buf << ((_slim_codeattributes7).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes8 = (data_background_repeat || attr('background-repeat')); if _slim_codeattributes8; if _slim_codeattributes8 == true; _buf << (" data-background-repeat".freeze); else; _buf << (" data-background-repeat=\"".freeze); _buf << ((_slim_codeattributes8).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes9 = (data_background_transition || attr('background-transition')); if _slim_codeattributes9; if _slim_codeattributes9 == true; _buf << (" data-background-transition".freeze); else; _buf << (" data-background-transition=\"".freeze); _buf << ((_slim_codeattributes9).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes10 = (attr "background-iframe"); if _slim_codeattributes10; if _slim_codeattributes10 == true; _buf << (" data-background-iframe".freeze); else; _buf << (" data-background-iframe=\"".freeze); _buf << ((_slim_codeattributes10).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes11 = (attr "background-video"); if _slim_codeattributes11; if _slim_codeattributes11 == true; _buf << (" data-background-video".freeze); else; _buf << (" data-background-video=\"".freeze); _buf << ((_slim_codeattributes11).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes12 = ((attr? 'background-video-loop') || (option? 'loop')); if _slim_codeattributes12; if _slim_codeattributes12 == true; _buf << (" data-background-video-loop".freeze); else; _buf << (" data-background-video-loop=\"".freeze); _buf << ((_slim_codeattributes12).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes13 = ((attr? 'background-video-muted') || (option? 'muted')); if _slim_codeattributes13; if _slim_codeattributes13 == true; _buf << (" data-background-video-muted".freeze); else; _buf << (" data-background-video-muted=\"".freeze); _buf << ((_slim_codeattributes13).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes14 = (attr 'state'); if _slim_codeattributes14; if _slim_codeattributes14 == true; _buf << (" data-state".freeze); else; _buf << (" data-state=\"".freeze); _buf << ((_slim_codeattributes14).to_s); _buf << ("\"".freeze); end; end; _buf << (">".freeze);
1155
+ ;
1156
+ ;
1157
+ ; _slim_codeattributes1 = (titleless ? nil : id); if _slim_codeattributes1; if _slim_codeattributes1 == true; _buf << (" id".freeze); else; _buf << (" id=\"".freeze); _buf << ((_slim_codeattributes1).to_s); _buf << ("\"".freeze); end; end; _temple_html_attributeremover1 = ''; _slim_codeattributes2 = roles; if Array === _slim_codeattributes2; _slim_codeattributes2 = _slim_codeattributes2.flatten; _slim_codeattributes2.map!(&:to_s); _slim_codeattributes2.reject!(&:empty?); _temple_html_attributeremover1 << ((_slim_codeattributes2.join(" ")).to_s); else; _temple_html_attributeremover1 << ((_slim_codeattributes2).to_s); end; _temple_html_attributeremover1; if !_temple_html_attributeremover1.empty?; _buf << (" class=\"".freeze); _buf << ((_temple_html_attributeremover1).to_s); _buf << ("\"".freeze); end; _slim_codeattributes3 = (attr 'transition'); if _slim_codeattributes3; if _slim_codeattributes3 == true; _buf << (" data-transition".freeze); else; _buf << (" data-transition=\"".freeze); _buf << ((_slim_codeattributes3).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes4 = (attr 'transition-speed'); if _slim_codeattributes4; if _slim_codeattributes4 == true; _buf << (" data-transition-speed".freeze); else; _buf << (" data-transition-speed=\"".freeze); _buf << ((_slim_codeattributes4).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes5 = data_background_color; if _slim_codeattributes5; if _slim_codeattributes5 == true; _buf << (" data-background-color".freeze); else; _buf << (" data-background-color=\"".freeze); _buf << ((_slim_codeattributes5).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes6 = data_background_image; if _slim_codeattributes6; if _slim_codeattributes6 == true; _buf << (" data-background-image".freeze); else; _buf << (" data-background-image=\"".freeze); _buf << ((_slim_codeattributes6).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes7 = (data_background_size || attr('background-size')); if _slim_codeattributes7; if _slim_codeattributes7 == true; _buf << (" data-background-size".freeze); else; _buf << (" data-background-size=\"".freeze); _buf << ((_slim_codeattributes7).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes8 = (data_background_repeat || attr('background-repeat')); if _slim_codeattributes8; if _slim_codeattributes8 == true; _buf << (" data-background-repeat".freeze); else; _buf << (" data-background-repeat=\"".freeze); _buf << ((_slim_codeattributes8).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes9 = (data_background_transition || attr('background-transition')); if _slim_codeattributes9; if _slim_codeattributes9 == true; _buf << (" data-background-transition".freeze); else; _buf << (" data-background-transition=\"".freeze); _buf << ((_slim_codeattributes9).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes10 = (data_background_position || attr('background-position')); if _slim_codeattributes10; if _slim_codeattributes10 == true; _buf << (" data-background-position".freeze); else; _buf << (" data-background-position=\"".freeze); _buf << ((_slim_codeattributes10).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes11 = (attr "background-iframe"); if _slim_codeattributes11; if _slim_codeattributes11 == true; _buf << (" data-background-iframe".freeze); else; _buf << (" data-background-iframe=\"".freeze); _buf << ((_slim_codeattributes11).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes12 = (attr "background-video"); if _slim_codeattributes12; if _slim_codeattributes12 == true; _buf << (" data-background-video".freeze); else; _buf << (" data-background-video=\"".freeze); _buf << ((_slim_codeattributes12).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes13 = ((attr? 'background-video-loop') || (option? 'loop')); if _slim_codeattributes13; if _slim_codeattributes13 == true; _buf << (" data-background-video-loop".freeze); else; _buf << (" data-background-video-loop=\"".freeze); _buf << ((_slim_codeattributes13).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes14 = ((attr? 'background-video-muted') || (option? 'muted')); if _slim_codeattributes14; if _slim_codeattributes14 == true; _buf << (" data-background-video-muted".freeze); else; _buf << (" data-background-video-muted=\"".freeze); _buf << ((_slim_codeattributes14).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes15 = (attr "background-opacity"); if _slim_codeattributes15; if _slim_codeattributes15 == true; _buf << (" data-background-opacity".freeze); else; _buf << (" data-background-opacity=\"".freeze); _buf << ((_slim_codeattributes15).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes16 = (attr 'state'); if _slim_codeattributes16; if _slim_codeattributes16 == true; _buf << (" data-state".freeze); else; _buf << (" data-state=\"".freeze); _buf << ((_slim_codeattributes16).to_s); _buf << ("\"".freeze); end; end; _buf << (">".freeze);
1083
1158
  ;
1084
1159
  ; unless hide_title;
1085
1160
  ; _buf << ("<h2>".freeze); _buf << ((title).to_s);
@@ -1108,7 +1183,9 @@ class Asciidoctor::Revealjs::Converter < ::Asciidoctor::Converter::Base
1108
1183
  ;
1109
1184
  ;
1110
1185
  ;
1111
- ; _buf << ("<section".freeze); _slim_codeattributes15 = (titleless ? nil : id); if _slim_codeattributes15; if _slim_codeattributes15 == true; _buf << (" id".freeze); else; _buf << (" id=\"".freeze); _buf << ((_slim_codeattributes15).to_s); _buf << ("\"".freeze); end; end; _temple_html_attributeremover2 = ''; _slim_codeattributes16 = roles; if Array === _slim_codeattributes16; _slim_codeattributes16 = _slim_codeattributes16.flatten; _slim_codeattributes16.map!(&:to_s); _slim_codeattributes16.reject!(&:empty?); _temple_html_attributeremover2 << ((_slim_codeattributes16.join(" ")).to_s); else; _temple_html_attributeremover2 << ((_slim_codeattributes16).to_s); end; _temple_html_attributeremover2; if !_temple_html_attributeremover2.empty?; _buf << (" class=\"".freeze); _buf << ((_temple_html_attributeremover2).to_s); _buf << ("\"".freeze); end; _slim_codeattributes17 = (attr 'transition'); if _slim_codeattributes17; if _slim_codeattributes17 == true; _buf << (" data-transition".freeze); else; _buf << (" data-transition=\"".freeze); _buf << ((_slim_codeattributes17).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes18 = (attr 'transition-speed'); if _slim_codeattributes18; if _slim_codeattributes18 == true; _buf << (" data-transition-speed".freeze); else; _buf << (" data-transition-speed=\"".freeze); _buf << ((_slim_codeattributes18).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes19 = data_background_color; if _slim_codeattributes19; if _slim_codeattributes19 == true; _buf << (" data-background-color".freeze); else; _buf << (" data-background-color=\"".freeze); _buf << ((_slim_codeattributes19).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes20 = data_background_image; if _slim_codeattributes20; if _slim_codeattributes20 == true; _buf << (" data-background-image".freeze); else; _buf << (" data-background-image=\"".freeze); _buf << ((_slim_codeattributes20).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes21 = (data_background_size || attr('background-size')); if _slim_codeattributes21; if _slim_codeattributes21 == true; _buf << (" data-background-size".freeze); else; _buf << (" data-background-size=\"".freeze); _buf << ((_slim_codeattributes21).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes22 = (data_background_repeat || attr('background-repeat')); if _slim_codeattributes22; if _slim_codeattributes22 == true; _buf << (" data-background-repeat".freeze); else; _buf << (" data-background-repeat=\"".freeze); _buf << ((_slim_codeattributes22).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes23 = (data_background_transition || attr('background-transition')); if _slim_codeattributes23; if _slim_codeattributes23 == true; _buf << (" data-background-transition".freeze); else; _buf << (" data-background-transition=\"".freeze); _buf << ((_slim_codeattributes23).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes24 = (attr "background-iframe"); if _slim_codeattributes24; if _slim_codeattributes24 == true; _buf << (" data-background-iframe".freeze); else; _buf << (" data-background-iframe=\"".freeze); _buf << ((_slim_codeattributes24).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes25 = (attr "background-video"); if _slim_codeattributes25; if _slim_codeattributes25 == true; _buf << (" data-background-video".freeze); else; _buf << (" data-background-video=\"".freeze); _buf << ((_slim_codeattributes25).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes26 = ((attr? 'background-video-loop') || (option? 'loop')); if _slim_codeattributes26; if _slim_codeattributes26 == true; _buf << (" data-background-video-loop".freeze); else; _buf << (" data-background-video-loop=\"".freeze); _buf << ((_slim_codeattributes26).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes27 = ((attr? 'background-video-muted') || (option? 'muted')); if _slim_codeattributes27; if _slim_codeattributes27 == true; _buf << (" data-background-video-muted".freeze); else; _buf << (" data-background-video-muted=\"".freeze); _buf << ((_slim_codeattributes27).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes28 = (attr 'state'); if _slim_codeattributes28; if _slim_codeattributes28 == true; _buf << (" data-state".freeze); else; _buf << (" data-state=\"".freeze); _buf << ((_slim_codeattributes28).to_s); _buf << ("\"".freeze); end; end; _buf << (">".freeze);
1186
+ ;
1187
+ ;
1188
+ ; _buf << ("<section".freeze); _slim_codeattributes17 = (titleless ? nil : id); if _slim_codeattributes17; if _slim_codeattributes17 == true; _buf << (" id".freeze); else; _buf << (" id=\"".freeze); _buf << ((_slim_codeattributes17).to_s); _buf << ("\"".freeze); end; end; _temple_html_attributeremover2 = ''; _slim_codeattributes18 = roles; if Array === _slim_codeattributes18; _slim_codeattributes18 = _slim_codeattributes18.flatten; _slim_codeattributes18.map!(&:to_s); _slim_codeattributes18.reject!(&:empty?); _temple_html_attributeremover2 << ((_slim_codeattributes18.join(" ")).to_s); else; _temple_html_attributeremover2 << ((_slim_codeattributes18).to_s); end; _temple_html_attributeremover2; if !_temple_html_attributeremover2.empty?; _buf << (" class=\"".freeze); _buf << ((_temple_html_attributeremover2).to_s); _buf << ("\"".freeze); end; _slim_codeattributes19 = (attr 'transition'); if _slim_codeattributes19; if _slim_codeattributes19 == true; _buf << (" data-transition".freeze); else; _buf << (" data-transition=\"".freeze); _buf << ((_slim_codeattributes19).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes20 = (attr 'transition-speed'); if _slim_codeattributes20; if _slim_codeattributes20 == true; _buf << (" data-transition-speed".freeze); else; _buf << (" data-transition-speed=\"".freeze); _buf << ((_slim_codeattributes20).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes21 = data_background_color; if _slim_codeattributes21; if _slim_codeattributes21 == true; _buf << (" data-background-color".freeze); else; _buf << (" data-background-color=\"".freeze); _buf << ((_slim_codeattributes21).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes22 = data_background_image; if _slim_codeattributes22; if _slim_codeattributes22 == true; _buf << (" data-background-image".freeze); else; _buf << (" data-background-image=\"".freeze); _buf << ((_slim_codeattributes22).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes23 = (data_background_size || attr('background-size')); if _slim_codeattributes23; if _slim_codeattributes23 == true; _buf << (" data-background-size".freeze); else; _buf << (" data-background-size=\"".freeze); _buf << ((_slim_codeattributes23).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes24 = (data_background_repeat || attr('background-repeat')); if _slim_codeattributes24; if _slim_codeattributes24 == true; _buf << (" data-background-repeat".freeze); else; _buf << (" data-background-repeat=\"".freeze); _buf << ((_slim_codeattributes24).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes25 = (data_background_transition || attr('background-transition')); if _slim_codeattributes25; if _slim_codeattributes25 == true; _buf << (" data-background-transition".freeze); else; _buf << (" data-background-transition=\"".freeze); _buf << ((_slim_codeattributes25).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes26 = (data_background_position || attr('background-position')); if _slim_codeattributes26; if _slim_codeattributes26 == true; _buf << (" data-background-position".freeze); else; _buf << (" data-background-position=\"".freeze); _buf << ((_slim_codeattributes26).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes27 = (attr "background-iframe"); if _slim_codeattributes27; if _slim_codeattributes27 == true; _buf << (" data-background-iframe".freeze); else; _buf << (" data-background-iframe=\"".freeze); _buf << ((_slim_codeattributes27).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes28 = (attr "background-video"); if _slim_codeattributes28; if _slim_codeattributes28 == true; _buf << (" data-background-video".freeze); else; _buf << (" data-background-video=\"".freeze); _buf << ((_slim_codeattributes28).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes29 = ((attr? 'background-video-loop') || (option? 'loop')); if _slim_codeattributes29; if _slim_codeattributes29 == true; _buf << (" data-background-video-loop".freeze); else; _buf << (" data-background-video-loop=\"".freeze); _buf << ((_slim_codeattributes29).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes30 = ((attr? 'background-video-muted') || (option? 'muted')); if _slim_codeattributes30; if _slim_codeattributes30 == true; _buf << (" data-background-video-muted".freeze); else; _buf << (" data-background-video-muted=\"".freeze); _buf << ((_slim_codeattributes30).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes31 = (attr "background-opacity"); if _slim_codeattributes31; if _slim_codeattributes31 == true; _buf << (" data-background-opacity".freeze); else; _buf << (" data-background-opacity=\"".freeze); _buf << ((_slim_codeattributes31).to_s); _buf << ("\"".freeze); end; end; _slim_codeattributes32 = (attr 'state'); if _slim_codeattributes32; if _slim_codeattributes32 == true; _buf << (" data-state".freeze); else; _buf << (" data-state=\"".freeze); _buf << ((_slim_codeattributes32).to_s); _buf << ("\"".freeze); end; end; _buf << (">".freeze);
1112
1189
  ;
1113
1190
  ; unless hide_title;
1114
1191
  ; _buf << ("<h2>".freeze); _buf << ((title).to_s);
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+ module Asciidoctor
3
+ module Revealjs
4
+ module SyntaxHighlighter
5
+ # Override the built-in highlight.js syntax highlighter
6
+ class HighlightJsAdapter < Asciidoctor::SyntaxHighlighter::Base
7
+ register_for 'highlightjs', 'highlight.js'
8
+
9
+ def initialize *args
10
+ super
11
+ @name = @pre_class = 'highlightjs'
12
+ end
13
+
14
+ def format node, lang, opts
15
+ super node, lang, (opts.merge transform: proc { |_, code|
16
+ code['class'] = %(language-#{lang || 'none'} hljs)
17
+ code['data-noescape'] = true
18
+ })
19
+ end
20
+
21
+ def docinfo? location
22
+ location == :footer
23
+ end
24
+
25
+ def docinfo location, doc, opts
26
+ if RUBY_ENGINE == 'opal' && JAVASCRIPT_PLATFORM == 'node'
27
+ revealjsdir = (doc.attr :revealjsdir, 'node_modules/reveal.js')
28
+ else
29
+ revealjsdir = (doc.attr :revealjsdir, 'reveal.js')
30
+ end
31
+ if doc.attr? 'highlightjs-theme'
32
+ theme_href = doc.attr 'highlightjs-theme'
33
+ else
34
+ theme_href = "#{revealjsdir}/lib/css/zenburn.css"
35
+ end
36
+ %(<link rel="stylesheet" href="#{theme_href}"#{opts[:self_closing_tag_slash]}>)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,5 +1,5 @@
1
1
  module Asciidoctor
2
2
  module Revealjs
3
- VERSION = '2.0.1'
3
+ VERSION = '3.0.0-rc1'
4
4
  end
5
5
  end
@@ -4,6 +4,51 @@ css:
4
4
  float: right;
5
5
  }
6
6
 
7
+ .reveal .listingblock.stretch > .content {
8
+ height: 100%;
9
+ }
10
+
11
+ .reveal .listingblock.stretch > .content > pre {
12
+ height: 100%;
13
+ }
14
+
15
+ .reveal .listingblock.stretch > .content > pre > code {
16
+ height: 100%;
17
+ max-height: 100%;
18
+ }
19
+
20
+ /* tables */
21
+ table{border-collapse:collapse;border-spacing:0}
22
+ table{margin-bottom:1.25em;border:solid 1px #dedede}
23
+ table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;text-align:left}
24
+ table tr th,table tr td{padding:.5625em .625em;font-size:inherit}
25
+ table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
26
+ td.tableblock>.content{margin-bottom:1.25em}
27
+ td.tableblock>.content>:last-child{margin-bottom:-1.25em}
28
+ table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
29
+ table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
30
+ table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
31
+ table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
32
+ table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
33
+ table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
34
+ table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
35
+ table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
36
+ table.frame-all{border-width:1px}
37
+ table.frame-sides{border-width:0 1px}
38
+ table.frame-topbot,table.frame-ends{border-width:1px 0}
39
+ .reveal table th.halign-left,.reveal table td.halign-left{text-align:left}
40
+ .reveal table th.halign-right,.reveal table td.halign-right{text-align:right}
41
+ .reveal table th.halign-center,.reveal table td.halign-center{text-align:center}
42
+ .reveal table th.valign-top,.reveal table td.valign-top{vertical-align:top}
43
+ .reveal table th.valign-bottom,.reveal table td.valign-bottom{vertical-align:bottom}
44
+ .reveal table th.valign-middle,.reveal table td.valign-middle{vertical-align:middle}
45
+ table thead th,table tfoot th{font-weight:bold}
46
+ tbody tr th{display:table-cell;line-height:1.6}
47
+ tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{font-weight:bold}
48
+ thead{display:table-header-group}
49
+
50
+ .reveal table.grid-none th,.reveal table.grid-none td{border-bottom:0!important}
51
+
7
52
  /* callouts */
8
53
  .conum[data-value] {display:inline-block;color:#fff!important;background-color:rgba(50,150,50,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
9
54
  .conum[data-value] *{color:#fff!important}
@@ -12,6 +12,7 @@ html lang=(attr :lang, 'en' unless attr? :nolang)
12
12
  - [:description, :keywords, :author, :copyright].each do |key|
13
13
  - if attr? key
14
14
  meta name=key content=(attr key)
15
+ - linkcss = (attr? 'linkcss')
15
16
  title=(doctitle sanitize: true, use_fallback: true)
16
17
  meta content="yes" name="apple-mobile-web-app-capable"
17
18
  meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"
@@ -24,8 +25,9 @@ html lang=(attr :lang, 'en' unless attr? :nolang)
24
25
  link rel='stylesheet' href='#{revealjsdir}/css/theme/#{attr 'revealjs_theme', 'black'}.css' id='theme'
25
26
  include asciidoctor_revealjs.css.slim
26
27
  - if attr? :icons, 'font'
28
+ / iconfont-remote is implicitly set by Asciidoctor core. See https://github.com/asciidoctor/asciidoctor.org/issues/361
27
29
  - if attr? 'iconfont-remote'
28
- link rel='stylesheet' href=(attr 'iconfont-cdn', %(#{cdn_base}/font-awesome/4.3.0/css/font-awesome.min.css))
30
+ link rel='stylesheet' href=(attr 'iconfont-cdn', %(#{cdn_base}/font-awesome/5.8.2/css/all.min.css))
29
31
  - else
30
32
  link rel='stylesheet' href=(normalize_web_path %(#{attr 'iconfont-name', 'font-awesome'}.css), (attr 'stylesdir', ''), false)
31
33
  - if attr? :stem
@@ -46,24 +48,10 @@ html lang=(attr :lang, 'en' unless attr? :nolang)
46
48
  TeX: {#{eqnums_opt}}
47
49
  });
48
50
  script src='#{cdn_base}/mathjax/2.4.0/MathJax.js?config=TeX-MML-AM_HTMLorMML'
49
- - case document.attr 'source-highlighter'
50
- - when 'coderay'
51
- - if (attr 'coderay-css', 'class') == 'class'
52
- - if @safe >= Asciidoctor::SafeMode::SECURE || (attr? :linkcss)
53
- link rel='stylesheet' href=normalize_web_path('asciidoctor-coderay.css', (attr :stylesdir, ''))
54
- - else
55
- style=Asciidoctor::Stylesheets.instance.coderay_stylesheet_data
56
- - when 'pygments'
57
- - if (attr 'pygments-css', 'class') == 'class'
58
- - if @safe >= Asciidoctor::SafeMode::SECURE || (attr? :linkcss)
59
- link rel='stylesheet' href=normalize_web_path('asciidoctor-pygments.css', (attr :stylesdir, ''))
60
- - else
61
- style=Asciidoctor::Stylesheets.instance.pygments_stylesheet_data(attr 'pygments-style')
62
- / For syntax highlighting
63
- - if attr? 'highlightjs-theme'
64
- link href=(attr 'highlightjs-theme') rel="stylesheet"
65
- - else
66
- link href="#{revealjsdir}/lib/css/zenburn.css" rel="stylesheet"
51
+
52
+ - syntax_hl = self.syntax_highlighter
53
+ - if syntax_hl && (syntax_hl.docinfo? :head)
54
+ =syntax_hl.docinfo :head, self, cdn_base_url: cdn_base, linkcss: linkcss, self_closing_tag_slash: '/'
67
55
  / If the query includes 'print-pdf', use the PDF print sheet
68
56
  javascript:
69
57
  var link = document.createElement( 'link' );
@@ -94,6 +82,7 @@ html lang=(attr :lang, 'en' unless attr? :nolang)
94
82
  data-background-video=bg_video
95
83
  data-background-video-loop=(attr 'title-slide-background-video-loop')
96
84
  data-background-video-muted=(attr 'title-slide-background-video-muted')
85
+ data-background-opacity=(attr "background-opacity")
97
86
  data-background-iframe=(attr 'title-slide-background-iframe')
98
87
  data-background-color=(attr 'title-slide-background-color')
99
88
  data-background-repeat=(attr 'title-slide-background-repeat')
@@ -229,6 +218,12 @@ html lang=(attr :lang, 'en' unless attr? :nolang)
229
218
  minScale: #{attr 'revealjs_minscale', 0.2},
230
219
  maxScale: #{attr 'revealjs_maxscale', 1.5},
231
220
 
221
+ // PDF Export Options
222
+ // Put each fragment on a separate page
223
+ pdfSeparateFragments: #{to_boolean(attr 'revealjs_pdfseparatefragments', true)},
224
+ // For slides that do not fit on a page, max number of pages
225
+ pdfMaxPagesPerSlide: #{attr 'revealjs_pdfmaxpagesperslide', 1},
226
+
232
227
  // Optional libraries used to extend on reveal.js
233
228
  dependencies: [
234
229
  { src: '#{revealjsdir}/lib/js/classList.js', condition: function() { return !document.body.classList; } },
@@ -244,5 +239,8 @@ html lang=(attr :lang, 'en' unless attr? :nolang)
244
239
  #{(attr? 'revealjs_plugins_configuration') ? File.read(attr('revealjs_plugins_configuration', '')) : ""}
245
240
 
246
241
  });
242
+ - if syntax_hl && (syntax_hl.docinfo? :footer)
243
+ =syntax_hl.docinfo :footer, self, cdn_base_url: cdn_base, linkcss: linkcss, self_closing_tag_slash: '/'
244
+
247
245
  - unless (docinfo_content = (docinfo :footer, '.html')).empty?
248
246
  =docinfo_content