anchor.diff:  
   To build *asciidoctor.js*, you need some tools :
   
  -* Npm and Node
  +* NPM and Node
   * Bower
   * Rake and Bundle
   
  
positive.code: 
  If you choose, you may use the Asciidoctor class that Opal generates directly from Ruby.
  
  All Opal-compiled classes are stored under the Opal namespace.
  Ruby variables and methods on a class or object get prefixed with +$+.
  Thus, where you would execute +Asciidoctor.render+ in Ruby, you execute +Opal.Asciidoctor.$render+ in JavaScript.
  
negative.code: ----
  Opal.hash2(['attributes'], {'attributes': ['notitle!']})
  ----
  
  === Back-end development
  
  For back-end development, we use *NPM*.
  
  Start by install *asciidoctor.js* module:
  
  [source, javascript]
  ----
  npm install asciidoctor.js --save
  ----
  
  You need to load file into your application. For instance, in a Javascript file, add these line :
  [source, javascript]
  ----
  var asciidoctorObject = require('asciidoctor.js')();
  
  // You can get Opal
  var opal = asciidoctorObject.Opal;
  
  // You can get Asciidoctor with Extensions ...
  var asciidoctorWithExtensions = asciidoctorObject.Asciidoctor(true);
  // ... or without extensions
  var asciidoctorWithoutExtensions = asciidoctorObject.Asciidoctor();
  
  // Now you can use it
  var html = Asciidoctor.$convert('== Test', opal.hash2(['attributes'], {'attributes': ['notitle!']}));
  
  // And for example log it
  console.log(html);
  
  /*
  // Should return
  <div class="sect1">
  <h2 id="_test">Test</h2>
  <div class="sectionbody">
  
  </div>
  </div>
  */
  ----
  
  
  == Changes to Asciidoctor (from upstream)
  
  