module Asciidoctor

def self.debug

def self.debug
  puts yield if self.show_debug_output?
end

def self.puts_indented(level, *args)

def self.puts_indented(level, *args)
  indentation = " " * level * 2
  args.each do |arg|
    self.debug { "#{indentation}#{arg}" }
  end
end

def self.require_library(name)

returns nothing

name - the String name of the library to require.

manual require if running in a threaded environment.
Internal: Prior to invoking Kernel#require, issues a warning urging a
def self.require_library(name)
  if Thread.list.size > 1
    main_script = "#{name}.rb"
    main_script_path_segment = "/#{name}.rb"
    if !$LOADED_FEATURES.detect {|p| p == main_script || p.end_with?(main_script_path_segment) }.nil?
      return
    else
      warn "WARN: asciidoctor is autoloading '#{name}' in threaded environment. " +
         "The use of an explicit require '#{name}' statement is recommended."
    end
  end
  require name
  nil
end

def self.set_debug(value)

def self.set_debug(value)
  @show_debug = value
end

def self.show_debug_output?

def self.show_debug_output?
  @show_debug || (ENV['DEBUG'] == 'true' && ENV['SUPPRESS_DEBUG'] != 'true')
end