module Asciidoctor::DocTest::Generator
Public Class Methods
generate!(output_suite, input_suite, renderer, pattern: '*:*', rewrite: false, log_os: $stdout)
click to toggle source
Generates missing, or rewrite existing output examples from the input examples converted using the renderer
.
@param output_suite [BaseExamplesSuite] an instance of
{BaseExamplesSuite} subclass to read and generate the output examples.
@param input_suite [BaseExamplesSuite] an instance of
{BaseExamplesSuite} subclass to read the reference input examples.
@param renderer [#convert]
@param pattern [String] glob-like pattern to select examples to
(re)generate (see {BaseExample#name_match?}).
@param rewrite [Boolean] whether to rewrite an already existing
example.
@param log_os [#<<] output stream where to write log messages.
# File lib/asciidoctor/doctest/generator.rb, line 32 def self.generate!(output_suite, input_suite, renderer, pattern: '*:*', rewrite: false, log_os: $stdout) updated = [] input_suite.pair_with(output_suite).each do |input, output| next unless input.name_match? pattern log = ->(msg, color = :default) do log_os << " --> #{(msg % input.name).color(color)}\n" if log_os end if input.empty? log["Unknown %s, doesn't exist in input examples!"] else rendered = output_suite.convert_example(input, output.opts, renderer) rendered.desc = output.desc if output.empty? log['Generating %s', :magenta] updated << rendered elsif rendered == output log['Unchanged %s', :green] elsif rewrite log['Rewriting %s', :red] updated << rendered else log['Skipping %s', :yellow] end end end output_suite.update_examples updated unless updated.empty? end