module Asciidoctor::RFC::V2::Blocks
Public Instance Methods
admonition(node)
click to toggle source
Syntax:
= Title Author :HEADER ABSTRACT NOTE: note [NOTE] .Title (in preamble) ==== Content ==== [NOTE] (in preamble) [NOTE,source=name] (in body) .Title ==== Content ====
@note admonitions within preamble are notes. Elsewhere, they are comments.
# File lib/asciidoctor/rfc/v2/blocks.rb, line 112 def admonition(node) result = [] if node.parent.context == :preamble note_attributes = { # default title provided: title is mandatory title: (node.title.nil? ? "NOTE" : node.title), } note_contents = HTMLEntities.new.decode([paragraph1(node)].flatten.join("\n")) result << noko do |xml| xml.note **attr_code(note_attributes) do |xml_note| xml_note << note_contents end end else cref_attributes = { anchor: node.id, source: node.attr("source"), } # remove all formatting: cref content is pure text cref_contents = flatten_rawtext(node) cref_contents = [cref_contents].flatten.join("\n") warn <<~WARNING_MESSAGE if node.blocks? asciidoctor: WARNING (#{node.lineno}): comment can not contain blocks of text in XML RFC:\n #{node.content} WARNING_MESSAGE result << noko do |xml| if node.parent.context !~ /table|example|paragraph|section/ xml.t do |xml_t| xml_t.cref **attr_code(cref_attributes) do |xml_cref| xml_cref << cref_contents end end else xml.cref **attr_code(cref_attributes) do |xml_cref| xml_cref << cref_contents end end end end result end
example(node)
click to toggle source
Syntax:
[[id]] .Title [align,alt,suppress-title] ==== Example ====
# File lib/asciidoctor/rfc/v2/blocks.rb, line 164 def example(node) figure_attributes = { anchor: node.id, align: node.attr("align"), alt: node.alt, title: node.title, 'suppress-title': node.attr("suppress-title"), # TODO: is 'suppress-title' the correct attribute name? } # TODO iref seen_artwork = false noko do |xml| xml.figure **attr_code(figure_attributes) do |xml_figure| node.blocks.each do |b| case b.context when :listing, :image, :literal, :stem xml_figure << send(b.context, b).join("\n") seen_artwork = true else # we want to see the para text, not its <t> container if seen_artwork xml_figure.postamble do |postamble| postamble << b.content end else xml_figure.preamble do |preamble| preamble << b.content end end end end end end end
floating_title(node)
click to toggle source
listing(node)
click to toggle source
Syntax:
.name [source,type,src=uri] (src is mutually exclusive with listing content) (v3) [source,type,src=uri,align,alt] (src is mutually exclusive with listing content) (v2) ---- code ----
# File lib/asciidoctor/rfc/v2/blocks.rb, line 206 def listing(node) sourcecode_attributes = { align: node.attr("align"), alt: node.alt, name: node.title, type: node.attr("language"), src: node.attr("src"), } # NOTE: html escaping is performed by Nokogiri sourcecode_content = sourcecode_attributes[:src].nil? ? "\n" + node.lines.join("\n") + "\n" : "" noko do |xml| if node.parent.context != :example figure_attributes = { anchor: node.id, } xml.figure **attr_code(figure_attributes) do |xml_figure| # xml_figure.artwork sourcecode_content, **attr_code(sourcecode_attributes) xml_figure.artwork **attr_code(sourcecode_attributes) do |a| a.cdata sourcecode_content end end else # xml.artwork sourcecode_content, **attr_code(sourcecode_attributes) xml.artwork **attr_code(sourcecode_attributes) do |a| a.cdata sourcecode_content end end end end
literal(node)
click to toggle source
Syntax:
[[id]] .Name [align=left|center|right,alt=alt_text,type] (optional) .... literal ....
# File lib/asciidoctor/rfc/v2/blocks.rb, line 24 def literal(node) artwork_attributes = { align: node.attr("align"), type: node.attr("type"), name: node.title, alt: node.attr("alt"), } # NOTE: html escaping is performed by Nokogiri artwork_content = "\n" + node.lines.join("\n") + "\n" ret = noko do |xml| if node.parent.context != :example figure_attributes = { anchor: node.id, } xml.figure **attr_code(figure_attributes) do |xml_figure| # xml_figure.artwork artwork_content, **attr_code(artwork_attributes) xml_figure.artwork **attr_code(artwork_attributes) do |a| a.cdata artwork_content end end else # xml.artwork artwork_content, **attr_code(artwork_attributes) xml.artwork **attr_code(artwork_attributes) do |a| a.cdata artwork_content end end end ret end
quote(node)
click to toggle source
# File lib/asciidoctor/rfc/v2/blocks.rb, line 240 def quote(node) result = [] if node.blocks? node.blocks.each do |b| result << send(b.context, b) end else result = paragraph(node) end if node.attr("citetitle") || node.attr("attribution") cite = node.attr("attribution") || "" cite += ", " if node.attr("citetitle") && node.attr("attribution") cite += (node.attr("citetitle") || "") cite = "-- " + cite result << "<t>#{cite}</t>" end result end
stem(node)
click to toggle source
stem is treated as literal, but with center alignment
# File lib/asciidoctor/rfc/v2/blocks.rb, line 57 def stem(node) artwork_attributes = { align: node.attr("align") || "center", type: node.attr("type"), name: node.title, alt: node.attr("alt"), } # NOTE: html escaping is performed by Nokogiri artwork_content = "\n" + node.lines.join("\n") + "\n" ret = noko do |xml| if node.parent.context != :example figure_attributes = { anchor: node.id, } xml.figure **attr_code(figure_attributes) do |xml_figure| # xml_figure.artwork artwork_content, **attr_code(artwork_attributes) xml_figure.artwork **attr_code(artwork_attributes) do |a| a.cdata artwork_content end end else # xml.artwork artwork_content, **attr_code(artwork_attributes) xml.artwork **attr_code(artwork_attributes) do |a| a.cdata artwork_content end end end ret end