class Asciidoctor::DocTest::Asciidoc::ExamplesSuite
Subclass of {BaseExamplesSuite} for reference input examples.
@example Format of the example’s header
// .example-name // Any text that is not the example's name or an option is considered // as a description. // :option_1: value 1 // :option_2: value 1 // :option_2: value 2 // :boolean_option: The example's content in *AsciiDoc*. NOTE: The trailing new line (below this) will be removed.
Public Class Methods
new(file_ext: '.adoc', **kwargs)
click to toggle source
Calls superclass method
# File lib/asciidoctor/doctest/asciidoc/examples_suite.rb, line 27 def initialize(file_ext: '.adoc', **kwargs) super end
Public Instance Methods
parse(input, group_name)
click to toggle source
# File lib/asciidoctor/doctest/asciidoc/examples_suite.rb, line 31 def parse(input, group_name) examples = [] current = create_example(nil) input.each_line do |line| case line.chomp! when %r{^//\s*\.([^ \n]+)} local_name = $1 current.content.chomp! examples << (current = create_example([group_name, local_name])) when %r{^//\s*:([^:]+):(.*)} current[$1.to_sym] = $2.blank? ? true : $2.strip when %r{^//\s*(.*)\s*$} (current.desc ||= '').concat!($1, "\n") else current.content.concat!(line, "\n") end end examples end
serialize(examples)
click to toggle source
# File lib/asciidoctor/doctest/asciidoc/examples_suite.rb, line 53 def serialize(examples) Array(examples).map { |exmpl| Array.new.push(".#{exmpl.local_name}") .push(*exmpl.desc.lines.map(&:chomp)) .push(*format_options(exmpl.opts)) .map_send(:prepend, '// ') .push(exmpl.content.presence) .compact .join("\n") .concat("\n") }.join("\n") end