You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ct...@apache.org on 2018/09/20 17:28:58 UTC
[7/7] lucene-solr:jira/solr-12746: Add templates for better semantic
html & simplify page outline in layouts
Add templates for better semantic html & simplify page outline in layouts
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/661e29e7
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/661e29e7
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/661e29e7
Branch: refs/heads/jira/solr-12746
Commit: 661e29e7328f82e98cd55ccafde7e7e7f2fafa9f
Parents: e93dcdd
Author: Cassandra Targett <ct...@apache.org>
Authored: Mon Sep 10 08:55:49 2018 -0500
Committer: Cassandra Targett <ct...@apache.org>
Committed: Thu Sep 20 12:28:30 2018 -0500
----------------------------------------------------------------------
.../src/_includes/google_analytics.html | 6 -
solr/solr-ref-guide/src/_includes/head.html | 4 +-
.../src/_includes/head_print.html | 6 +-
solr/solr-ref-guide/src/_includes/toc.html | 2 +-
solr/solr-ref-guide/src/_layouts/default.html | 10 +-
solr/solr-ref-guide/src/_layouts/page.html | 41 +-
.../src/_templates/_attribution.html.slim | 4 +
.../src/_templates/_footer.html.slim | 8 +
.../src/_templates/_footnotes.html.slim | 11 +
.../src/_templates/_hdlist.html.slim | 20 +
.../src/_templates/_header.html.slim | 27 +
.../src/_templates/_qanda.html.slim | 12 +
.../src/_templates/admonition.html.slim | 12 +
.../src/_templates/colist.html.slim | 4 +
.../src/_templates/dlist.html.slim | 13 +
.../src/_templates/document.html.slim | 30 +
.../src/_templates/example.html.slim | 3 +
solr/solr-ref-guide/src/_templates/helpers.rb | 672 +++++++++++++++++++
.../src/_templates/image.html.slim | 3 +
.../src/_templates/inline_anchor.html.slim | 12 +
.../src/_templates/inline_break.html.slim | 2 +
.../src/_templates/inline_button.html.slim | 1 +
.../src/_templates/inline_callout.html.slim | 1 +
.../src/_templates/inline_footnote.html.slim | 9 +
.../src/_templates/inline_image.html.slim | 10 +
.../src/_templates/inline_indexterm.html.slim | 2 +
.../src/_templates/inline_kbd.html.slim | 7 +
.../src/_templates/inline_menu.html.slim | 15 +
.../src/_templates/inline_quoted.html.slim | 29 +
.../src/_templates/listing.html.slim | 15 +
.../src/_templates/literal.html.slim | 2 +
.../src/_templates/olist.html.slim | 4 +
.../src/_templates/open.html.slim | 7 +
.../src/_templates/pass.html.slim | 1 +
.../src/_templates/quote.html.slim | 6 +
.../src/_templates/section.html.slim | 13 +
.../src/_templates/sidebar.html.slim | 4 +
.../src/_templates/table.html.slim | 39 ++
.../src/_templates/thematic_break.html.slim | 1 +
.../solr-ref-guide/src/_templates/toc.html.slim | 11 +
.../src/_templates/ulist.html.slim | 11 +
solr/solr-ref-guide/src/css/bootstrap.min.css | 6 +
.../tools/CheckLinksAndAnchors.java | 28 +-
43 files changed, 1055 insertions(+), 69 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_includes/google_analytics.html
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_includes/google_analytics.html b/solr/solr-ref-guide/src/_includes/google_analytics.html
deleted file mode 100755
index 56b2ee8..0000000
--- a/solr/solr-ref-guide/src/_includes/google_analytics.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<!-- the google_analytics_id gets auto inserted from the config file -->
-
-{% if site.google_analytics %}
-
-<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create','{{site.google_analytics}}','auto');ga('require','displayfeatures');ga('send','pageview');</script>
-{% endif %}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_includes/head.html
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_includes/head.html b/solr/solr-ref-guide/src/_includes/head.html
index 60d6e5d..b95c28a 100755
--- a/solr/solr-ref-guide/src/_includes/head.html
+++ b/solr/solr-ref-guide/src/_includes/head.html
@@ -8,7 +8,7 @@
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<!--<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">-->
-<link rel="stylesheet" href="{{ "css/lavish-bootstrap.css" }}">
+<link rel="stylesheet" href="{{ "css/bootstrap.min.css" }}">
<link rel="stylesheet" href="{{ "css/customstyles.css" }}">
<link rel="stylesheet" href="{{ "css/theme-solr.css" }}">
<link rel="stylesheet" href="{{ "css/ref-guide.css" }}">
@@ -17,7 +17,7 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
<script src="{{ "js/jquery.navgoco.min.js" }}"></script>
-<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/2.0.0/anchor.min.js"></script>
<script src="{{ "js/toc.js" }}"></script>
<script src="{{ "js/customscripts.js" }}"></script>
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_includes/head_print.html
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_includes/head_print.html b/solr/solr-ref-guide/src/_includes/head_print.html
index 8f10c28..6823c5d 100755
--- a/solr/solr-ref-guide/src/_includes/head_print.html
+++ b/solr/solr-ref-guide/src/_includes/head_print.html
@@ -18,7 +18,7 @@
<script>
Prince.addScriptFunc("datestamp", function() {
- return "PDF last generated: {{ site.time | date: '%B %d, %Y' }}";
+ return "Page last generated: {{ site.time | date: '%B %d, %Y' }}";
});
</script>
@@ -27,7 +27,3 @@
return "{{site.print_title}} User Guide";
});
</script>
-
-
-
-
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_includes/toc.html
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_includes/toc.html b/solr/solr-ref-guide/src/_includes/toc.html
index faa4701..ab00317 100755
--- a/solr/solr-ref-guide/src/_includes/toc.html
+++ b/solr/solr-ref-guide/src/_includes/toc.html
@@ -6,4 +6,4 @@
// based on page variables, build up the list of headers for the top level toc (and any sub-section tocs)
do_tocs({{ page.toclevels | default:2 }})
</script>
-<div id="toc" class="toc toc-{{ page.tocclass | default:'normal' }}"></div>
+<nav id="toc" class="toc toc-{{ page.tocclass | default:'normal' }}"></nav>
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_layouts/default.html
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_layouts/default.html b/solr/solr-ref-guide/src/_layouts/default.html
index d553b2a..dd8a85a 100755
--- a/solr/solr-ref-guide/src/_layouts/default.html
+++ b/solr/solr-ref-guide/src/_layouts/default.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!DOCTYPE html lang="en">
{% comment %}NOTE: page_id is also definied in page.html{% endcomment %}
{% assign page_id = page.url | split: '/' | last | remove: '.html' %}
<head>
@@ -41,13 +41,13 @@
<!-- Content Row -->
<div class="row">
<!-- Sidebar Column -->
- <div class="col-md-3">
+ <nav class="col-md-3">
{% include sidebar.html %}
- </div>
+ </nav>
<!-- Content Column -->
- <div class="col-md-9">
+ <article class="col-md-9 post-content">
{{content}}
- </div>
+ </article>
<!-- /.row -->
</div>
<!-- /.container -->
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_layouts/page.html
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_layouts/page.html b/solr/solr-ref-guide/src/_layouts/page.html
index 2627d1f..b930854 100755
--- a/solr/solr-ref-guide/src/_layouts/page.html
+++ b/solr/solr-ref-guide/src/_layouts/page.html
@@ -3,44 +3,15 @@ layout: default
---
{% comment %}NOTE: page_id is also definied in default.html{% endcomment %}
{% assign page_id = page.url | split: '/' | last | remove: '.html' %}
-<div class="post-header">
+<header class="header">
<h1 class="post-title-main">{{ page.title }}</h1>
-</div>
-
-<!-- This adds a workflow map, to a page
- See http://idratherbewriting.com/documentation-theme-jekyll/mydoc_workflow_maps.html
- Leaving it here commented out in case we want to implement this in the future
-{% if page.simple_map == true %}
-<script>
- $(document).ready ( function(){
- $('.box{{page.box_number}}').addClass('active');
- });
-</script>
-{% include custom/{{page.map_name}}.html %}
-{% elsif page.complex_map == true %}
-<script>
- $(document).ready ( function(){
- $('.modalButton{{page.box_number}}').addClass('active');
- });
-</script>
-{% include custom/{{page.map_name}}.html %}
-{% endif %} -->
-
-<div class="post-content">
-
- {% if page.summary %}
- <div class="summary">{{ page.summary }}</div>
- {% endif %}
+</header>
{% unless page.toc == false %}
{% include toc.html %}
{% endunless %}
-<div class="main-content">
-<!-- nothing goes here -->
-</div>
-
-<section id="content">
+<section class="content">
{{content}}
</section>
@@ -60,16 +31,14 @@ layout: default
<!-- Adds nav links on each page -->
{% assign scrollnav = site.data.scrollnav[page_id] %}
{% if scrollnav %}
- <div class="scrollnav row">
+ <nav class="scrollnav row">
{% if scrollnav.prev %}
<a class="btn btn-primary prev" href="{{ scrollnav.prev.url }}">{{ scrollnav.prev.title }}</a>
{% endif %}
{% if scrollnav.next %}
<a class="btn btn-primary next" href="{{ scrollnav.next.url }}">{{ scrollnav.next.title }}</a>
{% endif %}
- </div>
+ </nav>
{% endif %}
-</div>
-
{% include footer.html %}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/_attribution.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/_attribution.html.slim b/solr/solr-ref-guide/src/_templates/_attribution.html.slim
new file mode 100644
index 0000000..cecaaa7
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/_attribution.html.slim
@@ -0,0 +1,4 @@
+footer
+ '—
+ cite
+ =[(attr :attribution), (attr :citetitle)].compact.join(', ')
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/_footer.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/_footer.html.slim b/solr/solr-ref-guide/src/_templates/_footer.html.slim
new file mode 100644
index 0000000..36f69fc
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/_footer.html.slim
@@ -0,0 +1,8 @@
+#footer-text
+ - if attr? :revnumber
+ | #{attr 'version-label'} #{attr :revnumber}
+ - if attr? 'last-update-label'
+ br
+ | #{attr 'last-update-label'} #{attr :docdatetime}
+- unless (docinfo_content = (docinfo :footer)).empty?
+ =docinfo_content
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/_footnotes.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/_footnotes.html.slim b/solr/solr-ref-guide/src/_templates/_footnotes.html.slim
new file mode 100644
index 0000000..13a164e
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/_footnotes.html.slim
@@ -0,0 +1,11 @@
+section.footnotes aria-label='Footnotes' role='doc-endnotes'
+ hr
+ ol.footnotes
+ - footnotes.each do |fn|
+ li.footnote id=(footnote_id fn.index) role='doc-endnote'
+ ="#{fn.text} "
+ a.footnote-backref [
+ href="##{footnoteref_id fn.index}"
+ role='doc-backlink'
+ title='Jump to the first occurrence in the text' ]
+ | ↩
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/_hdlist.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/_hdlist.html.slim b/solr/solr-ref-guide/src/_templates/_hdlist.html.slim
new file mode 100644
index 0000000..43d0394
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/_hdlist.html.slim
@@ -0,0 +1,20 @@
+= block_with_title :class=>'hdlist'
+ table
+ - if (attr? :labelwidth) || (attr? :itemwidth)
+ colgroup
+ col style=style_value(width: [(attr :labelwidth), '%'])
+ col style=style_value(width: [(attr :itemwidth), '%'])
+ - items.each do |terms, dd|
+ tr
+ th.hdlist1 class=('strong' if option? 'strong')
+ - terms = [*terms]
+ - terms.each_with_index do |dt, idx|
+ =dt.text
+ - unless idx >= terms.count - 1
+ br
+ td.hdlist2
+ - unless dd.nil?
+ - if dd.text?
+ p =dd.text
+ - if dd.blocks?
+ =dd.content
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/_header.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/_header.html.slim b/solr/solr-ref-guide/src/_templates/_header.html.slim
new file mode 100644
index 0000000..3a48864
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/_header.html.slim
@@ -0,0 +1,27 @@
+- if has_header?
+ - unless notitle
+ h1 =header.title
+ - if [:author, :revnumber, :revdate, :revremark].any? {|a| attr? a }
+ .details
+ - if attr? :author
+ span.author#author =(attr :author)
+ br
+ - if attr? :email
+ span.email#email =sub_macros(attr :email)
+ br
+ - if (authorcount = (attr :authorcount).to_i) > 1
+ - (2..authorcount).each do |idx|
+ span.author id="author#{idx}" =(attr "author_#{idx}")
+ br
+ - if attr? "email_#{idx}"
+ span.email id="email#{idx}" =sub_macros(attr "email_#{idx}")
+ - if attr? :revnumber
+ span#revnumber #{((attr 'version-label') || '').downcase} #{attr :revnumber}#{',' if attr? :revdate}
+ '
+ - if attr? :revdate
+ time#revdate datetime=revdate_iso =(attr :revdate)
+ - if attr? :revremark
+ br
+ span#revremark =(attr :revremark)
+- if (attr? :toc) && (attr? 'toc-placement', 'auto')
+ include _toc.html
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/_qanda.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/_qanda.html.slim b/solr/solr-ref-guide/src/_templates/_qanda.html.slim
new file mode 100644
index 0000000..2cf70cb
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/_qanda.html.slim
@@ -0,0 +1,12 @@
+= block_with_title :class=>'qlist qanda', :role=>'doc-qna'
+ dl.qanda
+ - items.each do |questions, answer|
+ - [*questions].each do |question|
+ dt.qanda-question =question.text
+ - unless answer.nil?
+ dd.qanda-answer
+ - if answer.text?
+ = html_tag_if answer.blocks?, :p
+ =answer.text
+ - if answer.blocks?
+ =answer.content
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/admonition.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/admonition.html.slim b/solr/solr-ref-guide/src/_templates/admonition.html.slim
new file mode 100644
index 0000000..80af180
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/admonition.html.slim
@@ -0,0 +1,12 @@
+- capture
+ h6.block-title class=('label-only' unless title?)
+ span.title-label ="#{local_attr :textlabel}: "
+ =title
+ = html_tag_if !blocks?, :p
+ =content
+- if admonition_aside?
+ aside.admonition-block id=id class=[(attr :name), role] role=admonition_aria
+ - yield_capture
+- else
+ section.admonition-block id=id class=[(attr :name), role] role=admonition_aria
+ - yield_capture
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/colist.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/colist.html.slim b/solr/solr-ref-guide/src/_templates/colist.html.slim
new file mode 100644
index 0000000..41276d2
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/colist.html.slim
@@ -0,0 +1,4 @@
+/ Note: We ignore title on callout list here.
+ol.callout-list id=id class=[style, role]
+ - items.each do |item|
+ li =item.text
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/dlist.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/dlist.html.slim b/solr/solr-ref-guide/src/_templates/dlist.html.slim
new file mode 100644
index 0000000..bd7698d
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/dlist.html.slim
@@ -0,0 +1,13 @@
+- case style
+- when 'qanda'
+ include _qanda.html
+- when 'horizontal'
+ include _hdlist.html
+- else
+ = block_with_title :class=>['dlist', style]
+ dl
+ - items.each do |terms, dd|
+ - [*terms].each do |dt|
+ dt =dt.text
+ - unless dd.nil?
+ dd =(print_item_content dd)
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/document.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/document.html.slim b/solr/solr-ref-guide/src/_templates/document.html.slim
new file mode 100644
index 0000000..2390a8b
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/document.html.slim
@@ -0,0 +1,30 @@
+doctype 5
+html lang=(attr :lang, 'en' unless attr? :nolang)
+ head
+ meta charset=(attr :encoding, 'UTF-8')
+ /[if IE]
+ meta http-equiv="X-UA-Compatible" content="IE=edge"
+ meta name='viewport' content='width=device-width, initial-scale=1.0'
+ meta name='generator' content="Asciidoctor #{attr 'asciidoctor-version'}"
+ = html_meta_if 'application-name', (attr 'app-name')
+ = html_meta_if 'author', (attr :authors)
+ = html_meta_if 'copyright', (attr :copyright)
+ = html_meta_if 'description', (attr :description)
+ = html_meta_if 'keywords', (attr :keywords)
+ title=((doctitle sanitize: true) || (attr 'untitled-label'))
+ = styles_and_scripts
+ - unless (docinfo_content = docinfo).empty?
+ =docinfo_content
+ body [
+ id=id
+ class=[(attr :doctype), ("#{attr 'toc-class'} toc-#{attr 'toc-position', 'left'}" if (attr? 'toc-class') && (attr? :toc) && (attr? 'toc-placement', 'auto'))]
+ style=style_value(max_width: (attr 'max-width')) ]
+ - unless noheader
+ header
+ include _header.html
+ #content =content
+ - unless !footnotes? || (attr? :nofootnotes)
+ include _footnotes.html
+ - unless nofooter
+ footer
+ include _footer.html
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/example.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/example.html.slim b/solr/solr-ref-guide/src/_templates/example.html.slim
new file mode 100644
index 0000000..cf838f3
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/example.html.slim
@@ -0,0 +1,3 @@
+= block_with_caption :top, :class=>'example-block'
+ .example
+ =content
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/helpers.rb
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/helpers.rb b/solr/solr-ref-guide/src/_templates/helpers.rb
new file mode 100644
index 0000000..2d31b82
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/helpers.rb
@@ -0,0 +1,672 @@
+require 'asciidoctor/html5s'
+require 'asciidoctor/html5s/logger'
+require 'date' unless RUBY_PLATFORM == 'opal'
+
+# Add custom functions to this module that you want to use in your Slim
+# templates. Within the template you can invoke them as top-level functions
+# just like in Haml.
+module Slim::Helpers
+
+ # URIs of external assets.
+ FONT_AWESOME_URI = '//cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css'
+ HIGHLIGHTJS_BASE_URI = '//cdn.jsdelivr.net/gh/highlightjs/cdn-release@9.12.0/build/'
+ KATEX_CSS_URI = '//cdn.jsdelivr.net/npm/katex@0.8.3/dist/katex.min.css'
+ KATEX_JS_URI = '//cdn.jsdelivr.net/npm/katex@0.8.3/dist/katex.min.js'
+
+ # Defaults
+ DEFAULT_HIGHLIGHTJS_THEME = 'github'
+ DEFAULT_SECTNUMLEVELS = 3
+ DEFAULT_TOCLEVELS = 2
+
+ KATEX_RENDER_CODE = <<-JS.gsub(/\s+/, ' ')
+ document.addEventListener("DOMContentLoaded", function() {
+ var elements = document.getElementsByClassName("math");
+ for (var i = 0; i < elements.length; i++) {
+ var el = elements[i];
+ if (el.getAttribute("data-lang") !== "tex") {
+ continue;
+ }
+ katex.render(el.textContent.slice(2, -2), el, {
+ "displayMode": el.nodeName.toUpperCase() !== "SPAN",
+ "throwOnError": false,
+ });
+ }
+ });
+ JS
+
+ VOID_ELEMENTS = %w(area base br col command embed hr img input keygen link
+ meta param source track wbr)
+
+
+ # @return [Logger]
+ def log
+ @_html5s_logger ||= ::Asciidoctor::Html5s::Logging.default_logger
+ end
+
+ ##
+ # Captures the given block for later yield.
+ #
+ # @example Basic capture usage.
+ # - capture
+ # img src=image_uri
+ # - if title?
+ # figure.image
+ # - yield_capture
+ # figcaption =captioned_title
+ # - else
+ # - yield_capture
+ #
+ # @example Capture with passing parameters.
+ # - capture do |id|
+ # img src=image_uri
+ # - if title?
+ # figure id=@id
+ # - yield_capture
+ # figcaption =caption
+ # - else
+ # - yield_capture @id
+ #
+ # @see yield_capture
+ def capture(&block)
+ @_html5s_capture = block
+ nil
+ end
+
+ ##
+ # Yields the captured block (see {#capture}).
+ #
+ # @param *params parameters to pass to the block.
+ # @return A content of the captured block.
+ # @see capture
+ def yield_capture(*params)
+ @_html5s_capture.call(*params) if @_html5s_capture
+ end
+
+ ##
+ # Creates an HTML tag with the given name and optionally attributes. Can take
+ # a block that will run between the opening and closing tags.
+ #
+ # @param name [#to_s] the name of the tag.
+ # @param attributes [Hash] (default: {})
+ # @param content [#to_s] the content; +nil+ to call the block. (default: nil).
+ # @yield The block of Slim/HTML code within the tag (optional).
+ # @return [String] a rendered HTML element.
+ #
+ def html_tag(name, attributes = {}, content = nil)
+ attrs = attributes.inject([]) do |attrs, (k, v)|
+ next attrs if !v || v.nil_or_empty?
+ v = v.compact.join(' ') if v.is_a? Array
+ attrs << (v == true ? k : %(#{k}="#{v}"))
+ end
+ attrs_str = attrs.empty? ? '' : ' ' + attrs.join(' ')
+
+ if VOID_ELEMENTS.include? name.to_s
+ %(<#{name}#{attrs_str}>)
+ else
+ content ||= yield if block_given?
+ %(<#{name}#{attrs_str}>#{content}</#{name}>)
+ end
+ end
+
+ ##
+ # Conditionally wraps a block in an element. If condition is +true+ then it
+ # renders the specified tag with optional attributes and the given
+ # block inside, otherwise it just renders the block.
+ #
+ # For example:
+ #
+ # = html_tag_if link?, 'a', {class: 'image', href: (attr :link)}
+ # img src='./img/tux.png'
+ #
+ # will produce:
+ #
+ # <a href="http://example.org" class="image">
+ # <img src="./img/tux.png">
+ # </a>
+ #
+ # if +link?+ is truthy, and just
+ #
+ # <img src="./img/tux.png">
+ #
+ # otherwise.
+ #
+ # @param condition [Boolean] the condition to test to determine whether to
+ # render the enclosing tag.
+ # @param name (see #html_tag)
+ # @param attributes (see #html_tag)
+ # @param content (see #html_tag)
+ # @yield (see #html_tag)
+ # @return [String] a rendered HTML fragment.
+ #
+ def html_tag_if(condition, name, attributes = {}, content = nil, &block)
+ if condition
+ html_tag name, attributes, content, &block
+ else
+ content || yield
+ end
+ end
+
+ ##
+ # Wraps a block in a div element with the specified class and optionally
+ # the node's +id+ and +role+(s). If the node's +title+ is not empty, then a
+ # nested div with the class "title" and the title's content is added as well.
+ #
+ # @example When @id, @role and @title attributes are set.
+ # = block_with_title :class=>['quote-block', 'center']
+ # blockquote =content
+ #
+ # <section id="myid" class="quote-block center myrole1 myrole2">
+ # <h6>Block Title</h6>
+ # <blockquote>Lorem ipsum</blockquote>
+ # </section>
+ #
+ # @example When @id, @role and @title attributes are empty.
+ # = block_with_title :class=>'quote-block center', :style=>style_value(float: 'left')
+ # blockquote =content
+ #
+ # <div class="quote-block center" style="float: left;">
+ # <blockquote>Lorem ipsum</blockquote>
+ # </div>
+ #
+ # @example When shorthand style for class attribute is used.
+ # = block_with_title 'quote-block center'
+ # blockquote =content
+ #
+ # <div class="quote-block center">
+ # <blockquote>Lorem ipsum</blockquote>
+ # </div>
+ #
+ # @param attrs [Hash, String] the tag's attributes as Hash),
+ # or the tag's class if it's not a Hash.
+ # @param title [String, nil] the title.
+ # @yield The block of Slim/HTML code within the tag (optional).
+ # @return [String] a rendered HTML fragment.
+ #
+ def block_with_title(attrs = {}, title = @title, &block)
+ if (klass = attrs[:class]).is_a? String
+ klass = klass.split(' ')
+ end
+ attrs[:class] = [klass, role].flatten.uniq
+ attrs[:id] = id
+
+ if title.nil_or_empty?
+ # XXX quick hack
+ nested = is_a?(::Asciidoctor::List) &&
+ (parent.is_a?(::Asciidoctor::ListItem) || parent.is_a?(::Asciidoctor::List))
+ html_tag_if !nested, :div, attrs, yield
+ else
+ html_tag :section, attrs do
+ [html_tag(:h6, {class: 'block-title'}, title), yield].join("\n")
+ end
+ end
+ end
+
+ def block_with_caption(position = :bottom, attrs = {}, &block)
+ if (klass = attrs[:class]).is_a? String
+ klass = klass.split(' ')
+ end
+ attrs[:class] = [klass, role].flatten.uniq
+ attrs[:id] = id
+
+ if title.nil_or_empty?
+ html_tag :div, attrs, yield
+ else
+ html_tag :figure, attrs do
+ ary = [yield, html_tag(:figcaption) { captioned_title }]
+ ary.reverse! if position == :top
+ ary.compact.join("\n")
+ end
+ end
+ end
+
+ ##
+ # Delimite the given equation as a STEM of the specified type.
+ #
+ # Note: This is not needed nor used for KaTeX, but keep this for the case
+ # user wants to use a different method.
+ #
+ # @param equation [String] the equation to delimite.
+ # @param type [#to_sym] the type of the STEM renderer (latexmath, or asciimath).
+ # @return [String] the delimited equation.
+ #
+ def delimit_stem(equation, type)
+ if (@_html5s_stem_type ||= document.attr('html5s-force-stem-type'))
+ type = @_html5s_stem_type
+ end
+
+ if is_a? ::Asciidoctor::Block
+ open, close = ::Asciidoctor::BLOCK_MATH_DELIMITERS[type.to_sym]
+ else
+ open, close = ::Asciidoctor::INLINE_MATH_DELIMITERS[type.to_sym]
+ end
+
+ if !equation.start_with?(open) || !equation.end_with?(close)
+ equation = [open, equation, close].join
+ end
+ equation
+ end
+
+ ##
+ # Formats the given hash as CSS declarations for an inline style.
+ #
+ # @example
+ # style_value(text_align: 'right', float: 'left')
+ # => "text-align: right; float: left;"
+ #
+ # style_value(text_align: nil, float: 'left')
+ # => "float: left;"
+ #
+ # style_value(width: [90, '%'], height: '50px')
+ # => "width: 90%; height: 50px;"
+ #
+ # style_value(width: ['120px', 'px'])
+ # => "width: 90px;"
+ #
+ # style_value(width: [nil, 'px'])
+ # => nil
+ #
+ # @param declarations [Hash]
+ # @return [String, nil]
+ #
+ def style_value(declarations)
+ decls = []
+
+ declarations.each do |prop, value|
+ next if value.nil?
+
+ if value.is_a? Array
+ value, unit = value
+ next if value.nil?
+ value = value.to_s + unit unless value.end_with? unit
+ end
+ prop = prop.to_s.gsub('_', '-')
+ decls << "#{prop}: #{value}"
+ end
+
+ decls.empty? ? nil : decls.join('; ') + ';'
+ end
+
+ def urlize(*segments)
+ path = segments * '/'
+ if path.start_with? '//'
+ @_html5s_uri_scheme ||= document.attr('asset-uri-scheme', 'https')
+ path = "#{@_html5s_uri_scheme}:#{path}" unless @_html5s_uri_scheme.empty?
+ end
+ normalize_web_path path
+ end
+
+
+ ##
+ # Gets the value of the specified attribute in this node.
+ #
+ # This is just an alias for +attr+ method with disabled _inherit_ to make it
+ # more clear.
+ #
+ # @param name [String, Symbol] the name of the attribute to lookup.
+ # @param default_val the value to return if the attribute is not found.
+ # @return value of the attribute or +default_val+ if not found.
+ #
+ def local_attr(name, default_val = nil)
+ attr(name, default_val, false)
+ end
+
+ ##
+ # Checks if the attribute is defined on this node, optionally performing
+ # a comparison of its value if +expect_val+ is not nil.
+ #
+ # This is just an alias for +attr?+ method with disabled _inherit_ to make it
+ # more clear.
+ #
+ # @param name [String, Symbol] the name of the attribute to lookup.
+ # @param default_val the expected value of the attribute.
+ # @return [Boolean] whether the attribute exists and, if +expect_val+ is
+ # specified, whether the value of the attribute matches the +expect_val+.
+ #
+ def local_attr?(name, expect_val = nil)
+ attr?(name, expect_val, false)
+ end
+
+ ##
+ # @param index [Integer] the footnote's index.
+ # @return [String] footnote id to be used in a link.
+ def footnote_id(index = local_attr(:index))
+ "_footnote_#{index}"
+ end
+
+ ##
+ # @param index (see #footnote_id)
+ # @return [String] footnoteref id to be used in a link.
+ def footnoteref_id(index = local_attr(:index))
+ "_footnoteref_#{index}"
+ end
+
+ def nowrap?
+ 'nowrap' if !document.attr?(:prewrap) || option?('nowrap')
+ end
+
+ def print_item_content(item)
+ wrap = item.blocks? && !item.blocks.all? { |b| b.is_a? ::Asciidoctor::List }
+ [ (html_tag_if(wrap, :p) { item.text } if item.text?), item.content ].join
+ end
+
+ ##
+ # Returns corrected section level.
+ #
+ # @param sec [Asciidoctor::Section] the section node (default: self).
+ # @return [Integer]
+ #
+ def section_level(sec = self)
+ (sec.level == 0 && sec.special) ? 1 : sec.level
+ end
+
+ ##
+ # Returns the captioned section's title, optionally numbered.
+ #
+ # @param sec [Asciidoctor::Section] the section node (default: self).
+ # @return [String]
+ #
+ def section_title(sec = self)
+ sectnumlevels = document.attr(:sectnumlevels, DEFAULT_SECTNUMLEVELS).to_i
+
+ if sec.numbered && !sec.caption && sec.level <= sectnumlevels
+ [sec.sectnum, sec.captioned_title].join(' ')
+ else
+ sec.captioned_title
+ end
+ end
+
+ ##
+ # @return [String] language of STEM block or inline node (tex or asciimath).
+ def stem_lang
+ value = (inline? ? type : style).to_s
+ value == 'latexmath' ? 'tex' : value
+ end
+
+ def link_rel
+ 'noopener' if option?('noopener') || attr(:window) == '_blank'
+ end
+
+ #--------------------------------------------------------
+ # block_admonition
+ #
+
+ ##
+ # @return [Boolean] should be this admonition wrapped in aside element?
+ def admonition_aside?
+ %w[note tip].include? attr(:name)
+ end
+
+ ##
+ # @return [String, nil] WAI-ARIA role of this admonition.
+ def admonition_aria
+ case attr(:name)
+ when 'note'
+ 'note' # https://www.w3.org/TR/wai-aria/roles#note
+ when 'tip'
+ 'doc-tip' # https://www.w3.org/TR/dpub-aria-1.0/#doc-tip
+ when 'caution', 'important', 'warning'
+ 'doc-notice' # https://www.w3.org/TR/dpub-aria-1.0/#doc-notice
+ end
+ end
+
+ #--------------------------------------------------------
+ # block_listing
+ #
+
+ ##
+ # @return [String] a canonical name of the source-highlighter to be used as
+ # a style class.
+ def highlighter
+ @_html5s_highlighter ||=
+ case (highlighter = document.attr('source-highlighter'))
+ when 'coderay'; 'CodeRay'
+ when 'highlight.js'; 'highlightjs'
+ else highlighter
+ end
+ end
+
+ ##
+ # Returns the callout list attached to this listing node, or +nil+ if none.
+ #
+ # Note: This variable is set by extension
+ # {Asciidoctor::Html5s::AttachedColistTreeprocessor}.
+ #
+ # @return [Asciidoctor::List, nil]
+ def callout_list
+ @html5s_colist
+ end
+
+ def source_lang
+ local_attr :language, false
+ end
+
+ #--------------------------------------------------------
+ # block_open
+ #
+
+ ##
+ # Returns +true+ if an abstract block is allowed in this document type,
+ # otherwise prints warning and returns +false+.
+ def abstract_allowed?
+ if result = (parent == document && document.doctype == 'book')
+ log.warn 'asciidoctor: WARNING: abstract block cannot be used in a document
+without a title when doctype is book. Excluding block content.'
+ end
+ !result
+ end
+
+ ##
+ # Returns +true+ if a partintro block is allowed in this context, otherwise
+ # prints warning and returns +false+.
+ def partintro_allowed?
+ if result = (level != 0 || parent.context != :section || document.doctype != 'book')
+ log.warn "asciidoctor: ERROR: partintro block can only be used when doctype
+is book and it's a child of a book part. Excluding block content."
+ end
+ !result
+ end
+
+ #--------------------------------------------------------
+ # block_table
+ #
+
+ def autowidth?
+ option? :autowidth
+ end
+
+ def spread?
+ if !autowidth? || local_attr?('width')
+ 'spread' if attr? :tablepcwidth, 100
+ end
+ end
+
+ #--------------------------------------------------------
+ # block_video
+ #
+
+ # @return [Boolean] +true+ if the video should be embedded in an iframe.
+ def video_iframe?
+ ['vimeo', 'youtube'].include? attr(:poster)
+ end
+
+ def video_uri
+ case attr(:poster, '').to_sym
+ when :vimeo
+ params = {
+ autoplay: (1 if option? 'autoplay'),
+ loop: (1 if option? 'loop')
+ }
+ start_anchor = "#at=#{attr :start}" if attr? :start
+ "//player.vimeo.com/video/#{attr :target}#{start_anchor}#{url_query params}"
+
+ when :youtube
+ video_id, list_id = attr(:target).split('/', 2)
+ params = {
+ rel: 0,
+ start: (attr :start),
+ end: (attr :end),
+ list: (attr :list, list_id),
+ autoplay: (1 if option? 'autoplay'),
+ loop: (1 if option? 'loop'),
+ controls: (0 if option? 'nocontrols')
+ }
+ "//www.youtube.com/embed/#{video_id}#{url_query params}"
+ else
+ anchor = [attr(:start), attr(:end)].join(',').chomp(',')
+ anchor = '#t=' + anchor unless anchor.empty?
+ media_uri "#{attr :target}#{anchor}"
+ end
+ end
+
+ # Formats URL query parameters.
+ def url_query(params)
+ str = params.map { |k, v|
+ next if v.nil? || v.to_s.empty?
+ [k, v] * '='
+ }.compact.join('&')
+
+ '?' + str unless str.empty?
+ end
+
+ #--------------------------------------------------------
+ # document
+ #
+
+ ##
+ # @return [String, nil] the revision date in ISO 8601, or nil if not
+ # available or in invalid format.
+ def revdate_iso
+ ::Date.parse(revdate).iso8601 if defined? ::Date
+ rescue ArgumentError
+ nil
+ end
+
+ ##
+ # Returns HTML meta tag if the given +content+ is not +nil+.
+ #
+ # @param name [#to_s] the name for the metadata.
+ # @param content [#to_s, nil] the value of the metadata, or +nil+.
+ # @return [String, nil] the meta tag, or +nil+ if the +content+ is +nil+.
+ #
+ def html_meta_if(name, content)
+ %(<meta name="#{name}" content="#{content}">) if content
+ end
+
+ # Returns formatted style/link and script tags for header.
+ def styles_and_scripts
+ scripts = []
+ styles = []
+ tags = []
+
+ stylesheet = attr :stylesheet
+ stylesdir = attr :stylesdir, ''
+ default_style = ::Asciidoctor::DEFAULT_STYLESHEET_KEYS.include? stylesheet
+ linkcss = attr?(:linkcss) || safe >= ::Asciidoctor::SafeMode::SECURE
+ ss = ::Asciidoctor::Stylesheets.instance
+
+ if linkcss
+ path = default_style ? ::Asciidoctor::DEFAULT_STYLESHEET_NAME : stylesheet
+ styles << { href: [stylesdir, path] }
+ elsif default_style
+ styles << { text: ss.primary_stylesheet_data }
+ else
+ styles << { text: read_asset(normalize_system_path(stylesheet, stylesdir), true) }
+ end
+
+ if attr? :icons, 'font'
+ if attr? 'iconfont-remote'
+ styles << { href: attr('iconfont-cdn', FONT_AWESOME_URI) }
+ else
+ styles << { href: [stylesdir, "#{attr 'iconfont-name', 'font-awesome'}.css"] }
+ end
+ end
+
+ if attr? 'stem'
+ styles << { href: KATEX_CSS_URI }
+ scripts << { src: KATEX_JS_URI }
+ scripts << { text: KATEX_RENDER_CODE }
+ end
+
+ case attr 'source-highlighter'
+ when 'coderay'
+ if attr('coderay-css', 'class') == 'class'
+ if linkcss
+ styles << { href: [stylesdir, ss.coderay_stylesheet_name] }
+ else
+ styles << { text: ss.coderay_stylesheet_data }
+ end
+ end
+
+ when 'highlightjs'
+ hjs_base = attr :highlightjsdir, HIGHLIGHTJS_BASE_URI
+ hjs_theme = attr 'highlightjs-theme', DEFAULT_HIGHLIGHTJS_THEME
+
+ scripts << { src: [hjs_base, 'highlight.min.js'] }
+ scripts << { text: 'hljs.initHighlightingOnLoad()' }
+ styles << { href: [hjs_base, "styles/#{hjs_theme}.min.css"] }
+ end
+
+ styles.each do |item|
+ if item.key?(:text)
+ tags << html_tag(:style) { item[:text] }
+ else
+ tags << html_tag(:link, rel: 'stylesheet', href: urlize(*item[:href]))
+ end
+ end
+
+ scripts.each do |item|
+ if item.key? :text
+ tags << html_tag(:script, type: item[:type]) { item[:text] }
+ else
+ tags << html_tag(:script, type: item[:type], src: urlize(*item[:src]))
+ end
+ end
+
+ tags.join("\n")
+ end
+
+ #--------------------------------------------------------
+ # inline_anchor
+ #
+
+ # @return [String] text of the xref anchor.
+ def xref_text
+ str =
+ if text
+ text
+ elsif (path = local_attr :path)
+ path
+ elsif document.respond_to? :catalog # Asciidoctor >=1.5.6
+ ref = document.catalog[:refs][attr :refid]
+ if ref.kind_of? Asciidoctor::AbstractNode
+ ref.xreftext((@_html5s_xrefstyle ||= document.attributes['xrefstyle']))
+ end
+ else # Asciidoctor < 1.5.6
+ document.references[:ids][attr :refid || target]
+ end
+ (str || "[#{attr :refid}]").tr_s("\n", ' ')
+ end
+
+ # @return [String, nil] text of the bibref anchor, or +nil+ if not found.
+ def bibref_text
+ if document.respond_to? :catalog # Asciidoctor >=1.5.6
+ # NOTE: Technically it should be `reftext`, but subs have already been applied to text.
+ text
+ else
+ "[#{target}]"
+ end
+ end
+
+ #--------------------------------------------------------
+ # inline_image
+ #
+
+ # @return [Array] style classes for a Font Awesome icon.
+ def icon_fa_classes
+ [ "fa fa-#{target}",
+ ("fa-#{attr :size}" if attr? :size),
+ ("fa-rotate-#{attr :rotate}" if attr? :rotate),
+ ("fa-flip-#{attr :flip}" if attr? :flip)
+ ].compact
+ end
+end
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/image.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/image.html.slim b/solr/solr-ref-guide/src/_templates/image.html.slim
new file mode 100644
index 0000000..c2b0310
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/image.html.slim
@@ -0,0 +1,3 @@
+= block_with_caption(:bottom, :class=>'image-block', :style=>style_value(text_align: (attr :align), float: (attr :float)))
+ = html_tag_if(attr?(:link), :a, :class=>'image', :href=>(attr :link), :target=>(attr :window), :rel=>link_rel)
+ img src=image_uri(attr :target) alt=(attr :alt) width=(attr :width) height=(attr :height)
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/inline_anchor.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/inline_anchor.html.slim b/solr/solr-ref-guide/src/_templates/inline_anchor.html.slim
new file mode 100644
index 0000000..0e9e8c3
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/inline_anchor.html.slim
@@ -0,0 +1,12 @@
+- case type
+- when :xref
+ a href=target =xref_text
+- when :ref
+ / "target" is for backward compat. with Asciidoctor <1.5.6
+ a id=(id || target) aria-hidden='true'
+- when :bibref
+ / "target" is for backward compat. with Asciidoctor <1.5.6
+ a id=(id || target) aria-hidden='true'
+ =bibref_text
+- else
+ a id=id class=role href=target target=(attr :window) rel=link_rel title=(attr :title) =text
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/inline_break.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/inline_break.html.slim b/solr/solr-ref-guide/src/_templates/inline_break.html.slim
new file mode 100644
index 0000000..b2bf490
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/inline_break.html.slim
@@ -0,0 +1,2 @@
+=text
+br
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/inline_button.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/inline_button.html.slim b/solr/solr-ref-guide/src/_templates/inline_button.html.slim
new file mode 100644
index 0000000..5ab5b06
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/inline_button.html.slim
@@ -0,0 +1 @@
+b.button =text
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/inline_callout.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/inline_callout.html.slim b/solr/solr-ref-guide/src/_templates/inline_callout.html.slim
new file mode 100644
index 0000000..ebd38af
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/inline_callout.html.slim
@@ -0,0 +1 @@
+b.conum =text
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/inline_footnote.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/inline_footnote.html.slim b/solr/solr-ref-guide/src/_templates/inline_footnote.html.slim
new file mode 100644
index 0000000..e7bdaff
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/inline_footnote.html.slim
@@ -0,0 +1,9 @@
+- if (index = local_attr :index)
+ a.footnote-ref [
+ id=(footnoteref_id unless type == :xref)
+ href="##{footnote_id}"
+ title="View footnote #{index}"
+ role='doc-noteref' ]
+ | [#{index}]
+- else
+ a.footnote-ref.broken title="Unresolved footnote reference." [#{text}]
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/inline_image.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/inline_image.html.slim b/solr/solr-ref-guide/src/_templates/inline_image.html.slim
new file mode 100644
index 0000000..4575cd9
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/inline_image.html.slim
@@ -0,0 +1,10 @@
+= html_tag_if((attr? :link), :a, :class=>'image', :href=>(attr :link), :target=>(attr :window), :rel=>link_rel)
+ - if type == 'icon' && (document.attr? :icons, 'font')
+ i class=[*icon_fa_classes, role] title=(attr :title)
+ - elsif type == 'icon' && !(document.attr? :icons)
+ b class=['icon', role] title=(attr :title)
+ | [#{attr :alt}]
+ - else
+ img (src=(type == 'icon' ? (icon_uri target) : (image_uri target))
+ alt=(attr :alt) width=(attr :width) height=(attr :height) title=(attr :title)
+ class=[(type if type != 'image'), role] style=style_value(float: (attr :float)))
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/inline_indexterm.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/inline_indexterm.html.slim b/solr/solr-ref-guide/src/_templates/inline_indexterm.html.slim
new file mode 100644
index 0000000..a9a3902
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/inline_indexterm.html.slim
@@ -0,0 +1,2 @@
+- if type == :visible
+ =text
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/inline_kbd.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/inline_kbd.html.slim b/solr/solr-ref-guide/src/_templates/inline_kbd.html.slim
new file mode 100644
index 0000000..bf05e46
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/inline_kbd.html.slim
@@ -0,0 +1,7 @@
+- if (keys = attr 'keys').size == 1
+ kbd =keys.first
+- else
+ kbd.keyseq
+ - keys.each_with_index do |key, idx|
+ ="+" unless idx.zero?
+ kbd =key
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/inline_menu.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/inline_menu.html.slim b/solr/solr-ref-guide/src/_templates/inline_menu.html.slim
new file mode 100644
index 0000000..ba98b61
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/inline_menu.html.slim
@@ -0,0 +1,15 @@
+- if local_attr :menuitem
+ - capture
+ |  
+ b.caret ›
+ span.menuseq
+ b.menu
+ =(attr :menu)
+ - yield_capture
+ - (attr 'submenus').each do |submenu|
+ b.submenu
+ =submenu
+ - yield_capture
+ b.menuitem =(local_attr :menuitem)
+- else
+ b.menuref =(attr :menu)
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/inline_quoted.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/inline_quoted.html.slim b/solr/solr-ref-guide/src/_templates/inline_quoted.html.slim
new file mode 100644
index 0000000..aecb877
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/inline_quoted.html.slim
@@ -0,0 +1,29 @@
+- unless id.nil?
+ a id=id aria-hidden='true'
+- case type
+- when :emphasis
+ em class=role =text
+- when :strong
+ strong class=role =text
+- when :monospaced
+ code class=role =text
+- when :superscript
+ sup class=role =text
+- when :subscript
+ sub class=role =text
+- when :mark
+ mark class=role =text
+- when :double
+ = html_tag_if role?, :span, :class=>role
+ | “#{text}”
+- when :single
+ = html_tag_if role?, :span, :class=>role
+ | ‘#{text}’
+- when :asciimath, :latexmath
+ span.math data-lang=stem_lang =(delimit_stem text, type)
+- else
+ - if role == 'line-through' || role == 'del'
+ del =text
+ - else
+ = html_tag_if role?, :span, :class=>role
+ =text
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/listing.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/listing.html.slim b/solr/solr-ref-guide/src/_templates/listing.html.slim
new file mode 100644
index 0000000..85dea99
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/listing.html.slim
@@ -0,0 +1,15 @@
+= block_with_caption :top, :class=>'listing-block'
+ - if style == 'source'
+ - if highlighter == 'html-pipeline'
+ pre: code data-lang=source_lang =content
+ - else
+ - unless highlighter == 'CodeRay'
+ - code_class = "language-#{source_lang}" if source_lang
+ pre class=[highlighter, 'highlight', ('linenums' if attr? :linenums), nowrap?]
+ code class=code_class data-lang=source_lang =content
+ - else
+ pre class=nowrap? =content
+ / Note: This is a hack to embed callout list into the listing element.
+ / See asciidoctor/html5s/attached_colist_treeprocessor.rb.
+ - if callout_list
+ = converter.convert callout_list, 'colist'
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/literal.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/literal.html.slim b/solr/solr-ref-guide/src/_templates/literal.html.slim
new file mode 100644
index 0000000..5f3287b
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/literal.html.slim
@@ -0,0 +1,2 @@
+= block_with_title :class=>'literal-block'
+ pre class=nowrap? =content
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/olist.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/olist.html.slim b/solr/solr-ref-guide/src/_templates/olist.html.slim
new file mode 100644
index 0000000..15bbfba
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/olist.html.slim
@@ -0,0 +1,4 @@
+= block_with_title :class=>['olist', style]
+ ol class=style start=(attr :start) type=list_marker_keyword reversed=(option? 'reversed')
+ - items.each do |item|
+ li =(print_item_content item)
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/open.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/open.html.slim b/solr/solr-ref-guide/src/_templates/open.html.slim
new file mode 100644
index 0000000..aaa372d
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/open.html.slim
@@ -0,0 +1,7 @@
+- if style == 'abstract'
+ - if abstract_allowed?
+ = block_with_title :class=>'quote-block abstract'
+ blockquote =content
+- elsif style != 'partintro' || partintro_allowed?
+ = block_with_title :class=>['open-block', (style if style != 'open')]
+ .content =content
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/pass.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/pass.html.slim b/solr/solr-ref-guide/src/_templates/pass.html.slim
new file mode 100644
index 0000000..7125c22
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/pass.html.slim
@@ -0,0 +1 @@
+=content
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/quote.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/quote.html.slim b/solr/solr-ref-guide/src/_templates/quote.html.slim
new file mode 100644
index 0000000..70ca1d5
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/quote.html.slim
@@ -0,0 +1,6 @@
+= block_with_title :class=>'quote-block'
+ blockquote
+ = html_tag_if !blocks?, :p
+ =content
+ - if attr?(:attribution) || attr?(:citetitle)
+ include _attribution.html
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/section.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/section.html.slim b/solr/solr-ref-guide/src/_templates/section.html.slim
new file mode 100644
index 0000000..b8776f5
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/section.html.slim
@@ -0,0 +1,13 @@
+- sect0 = section_level == 0
+= html_tag_if !sect0, :section, class: [%(sect#{section_level}), role]
+ *{tag: %(h#{section_level + 1}), id: id, class: ('sect0' if sect0)}
+ - if id
+ - if document.attr? :sectanchors
+ a.anchor href="##{id}" aria-hidden='true'
+ - if document.attr? :sectlinks
+ a.link href="##{id}" =section_title
+ - else
+ =section_title
+ - else
+ =section_title
+ =content
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/sidebar.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/sidebar.html.slim b/solr/solr-ref-guide/src/_templates/sidebar.html.slim
new file mode 100644
index 0000000..3aa6769
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/sidebar.html.slim
@@ -0,0 +1,4 @@
+aside.sidebar id=id class=role
+ - if title?
+ h6.block-title =title
+ =content
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/table.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/table.html.slim b/solr/solr-ref-guide/src/_templates/table.html.slim
new file mode 100644
index 0000000..c47bb46
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/table.html.slim
@@ -0,0 +1,39 @@
+= block_with_caption :top, :class=>'table-block'
+ table [
+ class=["frame-#{attr :frame, 'all'}", "grid-#{attr :grid, 'all'}", spread?]
+ style=style_value(width: ("#{attr :tablepcwidth}%" if !autowidth? && !spread? || (local_attr :width)),
+ float: (attr :float)) ]
+ - unless (attr :rowcount).zero?
+ colgroup
+ - if autowidth?
+ - columns.each do
+ col
+ - else
+ - columns.each do |col|
+ col style="width: #{col.attr :colpcwidth}%;"
+ - [:head, :foot, :body].reject { |tblsec| rows[tblsec].empty? }.each do |tblsec|
+ <t#{tblsec}>
+ - rows[tblsec].each do |row|
+ tr
+ - row.each do |cell|
+ = html_tag(tblsec == :head || cell.style == :header ? 'th' : 'td',
+ :class=>["halign-#{cell.attr :halign}", "valign-#{cell.attr :valign}"],
+ :colspan=>cell.colspan,
+ :rowspan=>cell.rowspan,
+ :style=>style_value(background_color: (document.attr :cellbgcolor)))
+ - if tblsec == :head
+ =cell.text
+ - else
+ - case cell.style
+ - when :asciidoc
+ =cell.content
+ - when :verse
+ .verse: pre =cell.text
+ - when :literal
+ .literal: pre =cell.text
+ - else
+ - if cell.content.one?
+ =cell.content.first
+ - else
+ - cell.content.each do |text|
+ p =text
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/thematic_break.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/thematic_break.html.slim b/solr/solr-ref-guide/src/_templates/thematic_break.html.slim
new file mode 100644
index 0000000..fcb5e9c
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/thematic_break.html.slim
@@ -0,0 +1 @@
+hr
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/toc.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/toc.html.slim b/solr/solr-ref-guide/src/_templates/toc.html.slim
new file mode 100644
index 0000000..ec17b27
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/toc.html.slim
@@ -0,0 +1,11 @@
+/ This template is used only for toc::[] macro; for document and preamble TOC
+/ see document.html, preamble.html and _toc.html.
+- if document.attr?(:toc) && document.sections?
+ - toc_id = id || ('toc' if document.embedded? || !document.attr?('toc-placement'))
+ nav id=toc_id class=(attr :role, (document.attr 'toc-class', 'toc')) role='doc-toc'
+ h level=(level + 2) id=("#{toc_id}-title" if toc_id)
+ =(title || (document.attr 'toc-title'))
+ / Renders outline.html.
+ = converter.convert document, 'outline', :toclevels=>((attr :levels).to_i if attr? :levels)
+- else
+ /! toc disabled
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/661e29e7/solr/solr-ref-guide/src/_templates/ulist.html.slim
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/_templates/ulist.html.slim b/solr/solr-ref-guide/src/_templates/ulist.html.slim
new file mode 100644
index 0000000..23bdb9c
--- /dev/null
+++ b/solr/solr-ref-guide/src/_templates/ulist.html.slim
@@ -0,0 +1,11 @@
+- checklist = 'task-list' if option? 'checklist'
+= block_with_title :class=>['ulist', style]
+ ul class=(checklist || style)
+ - items.each do |item|
+ - if checklist && (item.attr? :checkbox)
+ li.task-list-item
+ input.task-list-item-checkbox type='checkbox' disabled=true checked=(item.attr? :checked)
+ =<item.text
+ - else
+ li
+ =(print_item_content item)