skypager-project
Version:
skypager project framework
667 lines (544 loc) • 21.2 kB
JavaScript
module.exports =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmory imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmory exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 146);
/******/ })
/************************************************************************/
/******/ ({
/***/ "./src/markdown-ast-interface.js":
/***/ function(module, exports, __webpack_require__) {
;
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.decorateNode = undefined;
var _typeof2 = __webpack_require__(23);
var _typeof3 = _interopRequireDefault(_typeof2);
var _toConsumableArray2 = __webpack_require__(5);
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _promise = __webpack_require__(6);
var _promise2 = _interopRequireDefault(_promise);
var _keys = __webpack_require__(13);
var _keys2 = _interopRequireDefault(_keys);
var _assign = __webpack_require__(1);
var _assign2 = _interopRequireDefault(_assign);
exports.isNode = isNode;
exports.createBlock = createBlock;
var _string = __webpack_require__(15);
var _cloneDeep = __webpack_require__(121);
var _cloneDeep2 = _interopRequireDefault(_cloneDeep);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = function (doc) {
var ast = doc.ast;
if (!doc.ast) {
console.log('Could not find', doc);
}
doc.ast = (0, _assign2.default)(ast, {
children: ast.children.map(function (node) {
return _decorateNode(doc, node);
})
});
if (!doc.chain) {
Object.defineProperty(doc, 'chain', {
enumerable: false,
get: function get() {
return require('lodash').chain(doc);
}
});
}
return (0, _assign2.default)(doc, {
decorateNode: function decorateNode(node) {
return _decorateNode(doc, node);
},
createTree: function createTree() {
var headings = doc.createHeadingsMap('headingPath');
var tree = {};
(0, _keys2.default)(headings).forEach(function (headingPath) {
var treePath = headingPath.split('/').map(function (v) {
return (0, _string.camelCase)((0, _string.kebabCase)(v));
});
lodash.set(tree, treePath, headings[headingPath]);
});
return tree;
},
createHeadingsMap: function createHeadingsMap() {
var keyBy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'accessor';
var stayChained = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var obj = doc.chain.invoke('selectHeadingNodes').map(function (heading) {
heading.accessorMethod = (0, _string.camelCase)((0, _string.snakeCase)(heading.textContent()));
heading.headingPath = heading.getHeadingPath();
heading.accessors = heading.headingPath.split('/').map(function (i) {
return (0, _string.camelCase)((0, _string.snakeCase)(i));
});
heading.accessor = (0, _string.camelCase)((0, _string.snakeCase)(heading.headingPath.replace(/\//g, '_')));
return heading;
}).keyBy(keyBy);
return stayChained ? obj : obj.value();
},
stringifyNode: function stringifyNode(node) {
return __webpack_require__(14)(node);
},
getSourceForNode: function getSourceForNode(node) {
return __webpack_require__(18)(node);
},
headingRange: function headingRange(test) {
var ast = doc.ast;
return new _promise2.default(function (resolve, reject) {
try {
__webpack_require__(16)(ast, test, function (startNode, nodes, endNode) {
resolve({ startNode: startNode, nodes: nodes, endNode: endNode });
});
} catch (error) {
reject(error);
}
});
},
documentTitle: function documentTitle() {
var titleNode = doc.titleNode();
if (!titleNode) {
return doc.get('frontmatter.title', doc.variations.humanized);
} else {
return titleNode.textContent();
}
},
introParagraphs: function introParagraphs() {
var until = doc.selectHeadingNodes()[1] || doc.finalNode();
if (!until) {
return doc.selectNodes('paragraph');
} else {
var _children = until.getNodesBefore(function (node) {
return ['paragraph'].indexOf(node.type) >= 0;
}).reverse();
return __webpack_require__(14)({ type: 'root', children: _children });
}
},
withoutNodeIndexes: function withoutNodeIndexes() {
var indexList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var ast = this.ast;
return {
type: 'root',
children: children.filter(function (node) {
return indexList.indexOf(node.index) === -1;
}),
data: ast.data
};
},
createAST: function createAST() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var newAST = {
type: options.type || 'root',
children: options.children || [],
data: options.data || {}
};
return newAST;
},
extractSectionNodes: function extractSectionNodes(node) {
return node.headingRange().then(function (_ref) {
var nodes = _ref.nodes;
return nodes;
});
},
inspectOutline: function inspectOutline() {
var headings = this.selectHeadingNodes();
return headings.map(function (headingNode) {
var content = '- ' + headingNode.textContent();
return lodash.padStart(content, content.length + (headingNode.depth - 1) * 2);
}).join("\n");
},
headingIndexes: function headingIndexes(depth) {
return this.chain.invoke('selectHeadingNodes', depth && '[depth=' + depth + ']').sortBy(function (node) {
return node.position ? node.position.start.line : node.index;
}).map(function (node) {
return node.index;
}).value();
},
references: function references() {
return (0, _assign2.default)({}, this.referenceImages(), this.referenceLinks());
},
referenceImages: function referenceImages() {
return this.chain.invoke('selectNodes', 'imageReference').keyBy('identifier').mapValues(function (refLink, identifier) {
var definitionNodes = doc.definitionNodes();
return (0, _assign2.default)(refLink, {
definitionNode: function definitionNode() {
return definitionNodes[identifier];
},
get definition() {
return lodash.pick(definitionNodes[identifier], 'title', 'url', 'identifier');
}
});
}).value();
},
imageNodes: function imageNodes() {
return this.selectNodes('image');
},
referenceLinks: function referenceLinks() {
return this.chain.invoke('selectNodes', 'linkReference').keyBy('identifier').mapValues(function (refLink, identifier) {
var definitionNodes = doc.definitionNodes();
return (0, _assign2.default)(refLink, {
definitionNode: function definitionNode() {
return definitionNodes[identifier];
},
get definition() {
return lodash.pick(definitionNodes[identifier], 'title', 'url', 'identifier');
}
});
}).value();
},
definitionNodes: function definitionNodes() {
return this.chain.invoke('selectNodes', 'definition').keyBy('identifier').value();
},
selectHeadingsByDepth: function selectHeadingsByDepth() {
var depth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
return this.selectHeadingNodes('[depth=' + depth + ']');
},
selectOneNode: function selectOneNode(selector) {
return __webpack_require__(4)(this.ast)(selector)[0];
},
selectNodes: function selectNodes() {
var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '*';
var testFn = arguments[1];
var results = __webpack_require__(4)(this.ast)(selector);
return typeof testFn === 'function' ? results.filter(function (r) {
return testFn.call(doc, r);
}) : results;
},
selectHeadingNodes: function selectHeadingNodes() {
var enhance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
return doc.selectNodes(('heading' + enhance).trim());
},
selectCodeBlocks: function selectCodeBlocks() {
var lang = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'javascript';
var enhance = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
return doc.selectNodes(('code[lang=' + lang + ']' + enhance).trim());
},
findNodeAfter: function findNodeAfter(node) {
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
return __webpack_require__(24).apply(undefined, [this.ast, node].concat((0, _toConsumableArray3.default)(args)));
},
findAllNodesAfter: function findAllNodesAfter(node) {
for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
return __webpack_require__(25).apply(undefined, [this.ast, node].concat((0, _toConsumableArray3.default)(args)));
},
findAllNodesBefore: function findAllNodesBefore(node) {
for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
args[_key3 - 1] = arguments[_key3];
}
return __webpack_require__(26).apply(undefined, [this.ast, node].concat((0, _toConsumableArray3.default)(args)));
},
nodesIndexedByPosition: function nodesIndexedByPosition() {
return doc.chain.get('ast.children').keyBy(function (node) {
return parseInt(node.position.start.line);
}).value();
},
introNodes: function introNodes() {
var f = this.selectNodes('heading');
var m = f.find(function (n) {
return n.depth > 1;
});
var nodes = m ? m.getNodesBefore().reverse() : this.ast.children;
return nodes.filter(function (n) {
return n.type !== 'yaml';
});
},
finalHeading: function finalHeading() {
return this.selectNodes('heading:last-of-type');
},
titleNode: function titleNode() {
return this.selectOneNode('heading[depth=1]') || this.selectOneNode('heading:first-of-type');
},
firstSectionHeadingNode: function firstSectionHeadingNode() {
return this.selectOneNode('heading[depth=2]');
},
sectionHeadingNodes: function sectionHeadingNodes() {
return this.selectNodes('heading[depth=2]');
},
articleHeadingNodes: function articleHeadingNodes() {
return this.selectNodes('heading[depth=3]');
},
subarticleHeadingNodes: function subarticleHeadingNodes() {
return this.selectNodes('heading').filter(function (n) {
return n.depth >= 4;
});
},
getNodesBetweenPositions: function getNodesBetweenPositions(alpha, bravo) {
var start = isNode(alpha) ? alpha.position.start.line : parseInt(alpha);
var end = isNode(bravo) ? bravo.position.start.line : parseInt(bravo);
return doc.chain.get('ast.children').filter(function (node) {
var line = node.position.start.line;
return line > start && line < end;
});
},
firstNode: function firstNode() {
return this.chain.get('ast.children', []).first().value();
},
finalNode: function finalNode() {
return this.chain.get('ast.children', []).last().value();
}
});
};
function _decorateNode(doc, node) {
var _original = (0, _cloneDeep2.default)(node);
return (0, _assign2.default)(node, {
original: function original() {
return _original;
},
slug: function slug() {
return (0, _string.kebabCase)(this.textContent());
},
textContent: function textContent() {
return __webpack_require__(14)(node) || '';
},
getHeadingPath: function getHeadingPath() {
if (node.type !== 'heading') {
var prev = node.previousHeading();
return prev && prev.getHeadingPath();
}
var textContent = (0, _string.kebabCase)(node.textContent().toLowerCase());
var prevSuperior = node.getPreviousSuperior();
var previousPath = typeof prevSuperior === 'undefined' ? '' : prevSuperior.depth >= 2 && prevSuperior.getHeadingPath() || '';
return [previousPath, textContent].filter(function (i) {
return i && i.length > 0;
}).join('/');
},
headingRangeSync: function headingRangeSync() {
var alpha = node;
var bravo = node.getFinalHeading() || doc.finalNode();
return doc.getNodesBetweenPositions(alpha, bravo || 50000).value();
},
headingRange: function headingRange() {
var test = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : node.textContent();
var ast = doc.ast;
return new _promise2.default(function (resolve, reject) {
try {
__webpack_require__(16)(ast, test, function (startNode, nodes, endNode) {
resolve({ startNode: startNode, nodes: nodes, endNode: endNode });
});
} catch (error) {
reject(error);
}
});
},
getFinalHeading: function getFinalHeading() {
return doc.findAllNodesAfter(node, function (n) {
return n.type === 'heading' && n.depth <= node.depth;
})[0];
},
getPreviousSuperior: function getPreviousSuperior() {
return node && node.getNodesBefore && node.getNodesBefore(function (n) {
return n.type === 'heading' && n.depth < node.depth;
})[0];
},
previousHeading: function previousHeading() {
return node.getNodesBefore(function (n) {
return n.type === 'heading';
}).shift();
},
nextHeading: function nextHeading() {
return node.type === 'heading' ? node.getNextNode(function (n) {
return n.type === 'heading' && n.depth >= node.depth;
}) : node.getNextNode(function (n) {
return n.type === 'heading';
});
},
getNextNode: function getNextNode() {
for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
args[_key4] = arguments[_key4];
}
return doc.findNodeAfter.apply(doc, [node].concat((0, _toConsumableArray3.default)(args)));
},
getNodesAfter: function getNodesAfter() {
for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
args[_key5] = arguments[_key5];
}
return doc.findAllNodesAfter.apply(doc, [node].concat((0, _toConsumableArray3.default)(args)));
},
getNodesBefore: function getNodesBefore() {
for (var _len6 = arguments.length, args = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
args[_key6] = arguments[_key6];
}
return doc.findAllNodesBefore.apply(doc, [node].concat((0, _toConsumableArray3.default)(args)));
},
selectChildren: function selectChildren(selector, testFn) {
if (node.type === 'heading') {
return node.selectHeadingChildren(selector, testFn);
}
var results = __webpack_require__(4)(node)(selector);
return typeof testFn === 'function' ? results.filter(function (r) {
return testFn.call(doc, r);
}) : results;
},
virtualAST: function virtualAST() {
return {
type: 'root',
children: node.headingRangeSync().map(function (n) {
return n.original();
}).map(function (n, i) {
n.index = i;
return n;
})
};
},
selectHeadingChildrenSync: function selectHeadingChildrenSync() {
var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '*';
var testFn = arguments[1];
var results = __webpack_require__(4)(node.virtualAST())(selector);
results = typeof testFn === 'function' ? results.filter(function (r) {
return testFn.call(doc, r);
}) : results;
return results;
},
selectHeadingChildren: function selectHeadingChildren() {
var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '*';
var testFn = arguments[1];
return node.headingRange().then(function (_ref2) {
var nodes = _ref2.nodes;
var base = {
type: 'root',
children: nodes
};
return __webpack_require__(4)(base)(selector);
}).then(function (results) {
return typeof testFn === 'function' ? results.filter(function (r) {
return testFn.call(doc, r);
}) : results;
});
}
});
}
exports.decorateNode = _decorateNode;
function isNode(obj) {
return (typeof obj === 'undefined' ? 'undefined' : (0, _typeof3.default)(obj)) === 'object' && typeof obj.type === 'string' && obj.position;
}
function createBlock(contents) {
var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
return ["```" + lang, contents, "```"].join("\n");
}
/***/ },
/***/ 1:
/***/ function(module, exports) {
module.exports = require("babel-runtime/core-js/object/assign");
/***/ },
/***/ 121:
/***/ function(module, exports) {
module.exports = require("lodash/cloneDeep");
/***/ },
/***/ 13:
/***/ function(module, exports) {
module.exports = require("babel-runtime/core-js/object/keys");
/***/ },
/***/ 14:
/***/ function(module, exports) {
module.exports = require("mdast-util-to-string");
/***/ },
/***/ 146:
/***/ function(module, exports, __webpack_require__) {
module.exports = __webpack_require__("./src/markdown-ast-interface.js");
/***/ },
/***/ 15:
/***/ function(module, exports) {
module.exports = require("skypager-util/lib/string");
/***/ },
/***/ 16:
/***/ function(module, exports) {
module.exports = require("mdast-util-heading-range");
/***/ },
/***/ 18:
/***/ function(module, exports) {
module.exports = require("unist-util-source");
/***/ },
/***/ 23:
/***/ function(module, exports) {
module.exports = require("babel-runtime/helpers/typeof");
/***/ },
/***/ 24:
/***/ function(module, exports) {
module.exports = require("unist-util-find-after");
/***/ },
/***/ 25:
/***/ function(module, exports) {
module.exports = require("unist-util-find-all-after");
/***/ },
/***/ 26:
/***/ function(module, exports) {
module.exports = require("unist-util-find-all-before");
/***/ },
/***/ 4:
/***/ function(module, exports) {
module.exports = require("unist-util-select");
/***/ },
/***/ 5:
/***/ function(module, exports) {
module.exports = require("babel-runtime/helpers/toConsumableArray");
/***/ },
/***/ 6:
/***/ function(module, exports) {
module.exports = require("babel-runtime/core-js/promise");
/***/ }
/******/ });
//# sourceMappingURL=markdown-ast-interface.js.map