text: // This file contains code to start up pages on the site, and other code that
  // is not directly related to parsing and display of regular expressions.
  //
  // Since the code in this is executed immediately, it is all but impossible to
  // test. Therefore, this code is kept as simple as possible to reduce the need
  // to run it through automated tests.
  
  import _ from 'lodash';
  import '../sass/main.scss';
  import Parser from './parser/javascript.js';
  import Regexper from './regexper.js';
  import util from './util.js';
  
  (function () {
    // Initialize the main page of the site. Functionality is kept in the
    // [Regexper class](./regexper.html).
    if (document.body.querySelector('#content .application')) {
      let regexper = new Regexper(document.body);
  
      regexper.detectBuggyHash();
      regexper.bindListeners();
  
      util.tick().then(() => {
        window.dispatchEvent(util.customEvent('hashchange'));
      });
    }
  
    // Initialize other pages on the site (specifically the documentation page).
    // Any element with a `data-expr` attribute will contain a rendering of the
    // provided regular expression.
    _.each(document.querySelectorAll('[data-expr]'), (element) => {
      new Parser(element, { keepContent: true })
        .parse(element.getAttribute('data-expr'))
        .then((parser) => {
          parser.render();
        })
        .catch(util.exposeError);
    });
  })();
  