paranormal
Version:
Phenomenal Code Examples
132 lines (98 loc) • 4.1 kB
JavaScript
;
exports.__esModule = true;
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _promise = require('babel-runtime/core-js/promise');
var _promise2 = _interopRequireDefault(_promise);
var _stringify = require('babel-runtime/core-js/json/stringify');
var _stringify2 = _interopRequireDefault(_stringify);
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _fs = require('./utils/fs');
var fs = _interopRequireWildcard(_fs);
var _Example = require('./Example');
var _Example2 = _interopRequireDefault(_Example);
var _stripIndent = require('strip-indent');
var _stripIndent2 = _interopRequireDefault(_stripIndent);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var App = function () {
function App(opts) {
(0, _classCallCheck3.default)(this, App);
this.tempDir = opts.tempDir;
this.indexPath = _path2.default.join(this.tempDir, 'index.html');
this.entriesPath = _path2.default.join(this.tempDir, 'entries.html');
}
App.prototype.build = function () {
var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(examples) {
var _this = this;
var EXAMPLES_DATA, links, indexContent, entriesContent;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
EXAMPLES_DATA = examples.map(function (example) {
return {
title: example.title,
href: _path2.default.relative(_this.tempDir, example.htmlPath)
};
});
links = [];
links.push(_path2.default.relative(this.tempDir, this.indexPath));
examples.forEach(function (example) {
links.push(_path2.default.relative(_this.tempDir, example.htmlPath), _path2.default.relative(_this.tempDir, example.txtPath), _path2.default.relative(_this.tempDir, example.jsPath));
});
indexContent = (0, _stripIndent2.default)(`
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>👻 Paranormal</title>
</head>
<body>
<div id="root"></div>
<script>
window.EXAMPLES_DATA = ${(0, _stringify2.default)(EXAMPLES_DATA)};
</script>
<script src="${require.resolve('../app/index.js')}"></script>
<a hidden href="./entries.html"></a>
</body>
</html>
`).trim();
entriesContent = (0, _stripIndent2.default)(`
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>👻 Paranormal</title>
</head>
<body>
<ul>
${links.map(function (link) {
return `<li><a href="${link}">${link}</a></li>`;
}).join('')}
</ul>
</body>
</html>
`).trim();
_context.next = 8;
return _promise2.default.all([fs.writeFile(this.indexPath, indexContent), fs.writeFile(this.entriesPath, entriesContent)]);
case 8:
case 'end':
return _context.stop();
}
}
}, _callee, this);
}));
function build(_x) {
return _ref.apply(this, arguments);
}
return build;
}();
return App;
}();
exports.default = App;