anchor.diff:  
   === BlockMacroProcessor
   
  -Block macros processors are registered using the function `blockmacro`.
  +Block macros processors are registered using the function `block_macro`.
   It requires the option `name` that defines the macro name.
   There is also the long form taking the option map and the short form that only takes the name.
   
   [source,groovy]
   ----
  -blockmacro (name: 'gist') {
  +block_macro (name: 'gist') {
       parent, target, attributes ->
       String content = """<div class="content"> 
   <script src="https://gist.github.com/${target}.js"></script> 
  
positive.code: [source,groovy]
  ----
  @GrabConfig(systemClassLoader=true)
  @Grab(group='org.asciidoctor', module='asciidoctorj-groovy-dsl', version='1.0.0.preview1') // <1>
  import org.asciidoctor.groovydsl.AsciidoctorExtensions
  import org.asciidoctor.Asciidoctor
  
  
negative.code: }
  ----
  
  === DocinfoProcessor
  
  DocinfoProcessor extensions are registered using the function `docinfo_processor`.
  
  The following example adds a meta tag to the HTML head element to allow robots to follow links.
  
  [source, groovy]
  ----
  docinfo_processor {
      document -> '<meta name="robots" content="index,follow">'
  }
  ----