39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
// 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 util from './util.js';
|
|
import Regexper from './regexper.js';
|
|
import Parser from './parser/javascript.js';
|
|
import _ from 'lodash';
|
|
|
|
(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);
|
|
});
|
|
}());
|