3335 lines
77 KiB
JavaScript
3335 lines
77 KiB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
|
||
if(typeof exports === 'object' && typeof module === 'object')
|
||
module.exports = factory();
|
||
else if(typeof define === 'function' && define.amd)
|
||
define("NotebookLab", [], factory);
|
||
else if(typeof exports === 'object')
|
||
exports["NotebookLab"] = factory();
|
||
else
|
||
root["NotebookLab"] = factory();
|
||
})(this, function() {
|
||
return /******/ (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 harmony imports with the correct context
|
||
/******/ __webpack_require__.i = function(value) { return value; };
|
||
/******/
|
||
/******/ // define getter function for harmony exports
|
||
/******/ __webpack_require__.d = function(exports, name, getter) {
|
||
/******/ if(!__webpack_require__.o(exports, name)) {
|
||
/******/ 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 = 30);
|
||
/******/ })
|
||
/************************************************************************/
|
||
/******/ ([
|
||
/* 0 */
|
||
/***/ (function(module, exports) {
|
||
|
||
module.exports = function normalizeComponent (
|
||
rawScriptExports,
|
||
compiledTemplate,
|
||
scopeId,
|
||
cssModules
|
||
) {
|
||
var esModule
|
||
var scriptExports = rawScriptExports = rawScriptExports || {}
|
||
|
||
// ES6 modules interop
|
||
var type = typeof rawScriptExports.default
|
||
if (type === 'object' || type === 'function') {
|
||
esModule = rawScriptExports
|
||
scriptExports = rawScriptExports.default
|
||
}
|
||
|
||
// Vue.extend constructor export interop
|
||
var options = typeof scriptExports === 'function'
|
||
? scriptExports.options
|
||
: scriptExports
|
||
|
||
// render functions
|
||
if (compiledTemplate) {
|
||
options.render = compiledTemplate.render
|
||
options.staticRenderFns = compiledTemplate.staticRenderFns
|
||
}
|
||
|
||
// scopedId
|
||
if (scopeId) {
|
||
options._scopeId = scopeId
|
||
}
|
||
|
||
// inject cssModules
|
||
if (cssModules) {
|
||
var computed = Object.create(options.computed || null)
|
||
Object.keys(cssModules).forEach(function (key) {
|
||
var module = cssModules[key]
|
||
computed[key] = function () { return module }
|
||
})
|
||
options.computed = computed
|
||
}
|
||
|
||
return {
|
||
esModule: esModule,
|
||
exports: scriptExports,
|
||
options: options
|
||
}
|
||
}
|
||
|
||
|
||
/***/ }),
|
||
/* 1 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var Component = __webpack_require__(0)(
|
||
/* script */
|
||
__webpack_require__(11),
|
||
/* template */
|
||
__webpack_require__(27),
|
||
/* scopeId */
|
||
null,
|
||
/* cssModules */
|
||
null
|
||
)
|
||
Component.options.__file = "/Users/phil/Projects/notebooklab/src/cells/prompt.vue"
|
||
if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key !== "__esModule"})) {console.error("named exports are not supported in *.vue files.")}
|
||
if (Component.options.functional) {console.error("[vue-loader] prompt.vue: functional components are not supported with templates, they should use render functions.")}
|
||
|
||
/* hot reload */
|
||
if (false) {(function () {
|
||
var hotAPI = require("vue-hot-reload-api")
|
||
hotAPI.install(require("vue"), false)
|
||
if (!hotAPI.compatible) return
|
||
module.hot.accept()
|
||
if (!module.hot.data) {
|
||
hotAPI.createRecord("data-v-4f6bf458", Component.options)
|
||
} else {
|
||
hotAPI.reload("data-v-4f6bf458", Component.options)
|
||
}
|
||
})()}
|
||
|
||
module.exports = Component.exports
|
||
|
||
|
||
/***/ }),
|
||
/* 2 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var Component = __webpack_require__(0)(
|
||
/* script */
|
||
__webpack_require__(6),
|
||
/* template */
|
||
__webpack_require__(29),
|
||
/* scopeId */
|
||
null,
|
||
/* cssModules */
|
||
null
|
||
)
|
||
Component.options.__file = "/Users/phil/Projects/notebooklab/src/cells/code/index.vue"
|
||
if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key !== "__esModule"})) {console.error("named exports are not supported in *.vue files.")}
|
||
if (Component.options.functional) {console.error("[vue-loader] index.vue: functional components are not supported with templates, they should use render functions.")}
|
||
|
||
/* hot reload */
|
||
if (false) {(function () {
|
||
var hotAPI = require("vue-hot-reload-api")
|
||
hotAPI.install(require("vue"), false)
|
||
if (!hotAPI.compatible) return
|
||
module.hot.accept()
|
||
if (!module.hot.data) {
|
||
hotAPI.createRecord("data-v-d42105b8", Component.options)
|
||
} else {
|
||
hotAPI.reload("data-v-d42105b8", Component.options)
|
||
}
|
||
})()}
|
||
|
||
module.exports = Component.exports
|
||
|
||
|
||
/***/ }),
|
||
/* 3 */
|
||
/***/ (function(module, exports) {
|
||
|
||
var g;
|
||
|
||
// This works in non-strict mode
|
||
g = (function() {
|
||
return this;
|
||
})();
|
||
|
||
try {
|
||
// This works if eval is allowed (see CSP)
|
||
g = g || Function("return this")() || (1,eval)("this");
|
||
} catch(e) {
|
||
// This works if the window reference is available
|
||
if(typeof window === "object")
|
||
g = window;
|
||
}
|
||
|
||
// g can still be undefined, but nothing to do about it...
|
||
// We return undefined, instead of nothing here, so it's
|
||
// easier to handle this case. if(!global) { ...}
|
||
|
||
module.exports = g;
|
||
|
||
|
||
/***/ }),
|
||
/* 4 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var Component = __webpack_require__(0)(
|
||
/* script */
|
||
__webpack_require__(12),
|
||
/* template */
|
||
__webpack_require__(26),
|
||
/* scopeId */
|
||
null,
|
||
/* cssModules */
|
||
null
|
||
)
|
||
Component.options.__file = "/Users/phil/Projects/notebooklab/src/index.vue"
|
||
if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key !== "__esModule"})) {console.error("named exports are not supported in *.vue files.")}
|
||
if (Component.options.functional) {console.error("[vue-loader] index.vue: functional components are not supported with templates, they should use render functions.")}
|
||
|
||
/* hot reload */
|
||
if (false) {(function () {
|
||
var hotAPI = require("vue-hot-reload-api")
|
||
hotAPI.install(require("vue"), false)
|
||
if (!hotAPI.compatible) return
|
||
module.hot.accept()
|
||
if (!module.hot.data) {
|
||
hotAPI.createRecord("data-v-4cb2b168", Component.options)
|
||
} else {
|
||
hotAPI.reload("data-v-4cb2b168", Component.options)
|
||
}
|
||
})()}
|
||
|
||
module.exports = Component.exports
|
||
|
||
|
||
/***/ }),
|
||
/* 5 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
|
||
var _index = __webpack_require__(2);
|
||
|
||
var _index2 = _interopRequireDefault(_index);
|
||
|
||
var _index3 = __webpack_require__(21);
|
||
|
||
var _index4 = _interopRequireDefault(_index3);
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
|
||
exports.default = {
|
||
components: {
|
||
'code-cell': _index2.default,
|
||
'output-cell': _index4.default
|
||
},
|
||
props: {
|
||
cell: {
|
||
type: Object,
|
||
required: true
|
||
},
|
||
codeCssClass: {
|
||
type: String,
|
||
required: false,
|
||
default: ''
|
||
}
|
||
},
|
||
computed: {
|
||
rawInputCode: function rawInputCode() {
|
||
return this.cell.source.join('');
|
||
},
|
||
hasOutput: function hasOutput() {
|
||
return this.cell.outputs.length;
|
||
},
|
||
output: function output() {
|
||
return this.cell.outputs[0];
|
||
}
|
||
}
|
||
};
|
||
|
||
/***/ }),
|
||
/* 6 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
|
||
var _highlight = __webpack_require__(32);
|
||
|
||
var _highlight2 = _interopRequireDefault(_highlight);
|
||
|
||
var _prompt = __webpack_require__(1);
|
||
|
||
var _prompt2 = _interopRequireDefault(_prompt);
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
|
||
exports.default = {
|
||
components: {
|
||
'prompt': _prompt2.default
|
||
},
|
||
props: {
|
||
count: {
|
||
type: Number,
|
||
required: false
|
||
},
|
||
codeCssClass: {
|
||
type: String,
|
||
required: false,
|
||
default: ''
|
||
},
|
||
type: {
|
||
type: String,
|
||
required: true
|
||
},
|
||
rawCode: {
|
||
type: String,
|
||
required: true
|
||
}
|
||
},
|
||
computed: {
|
||
code: function code() {
|
||
return this.rawCode;
|
||
},
|
||
promptType: function promptType() {
|
||
var type = this.type.split('put')[0];
|
||
|
||
return type.charAt(0).toUpperCase() + type.slice(1);;
|
||
}
|
||
},
|
||
mounted: function mounted() {
|
||
_highlight2.default.highlightElement(this.$refs.code);
|
||
}
|
||
};
|
||
|
||
/***/ }),
|
||
/* 7 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
|
||
var _marked = __webpack_require__(14);
|
||
|
||
var _marked2 = _interopRequireDefault(_marked);
|
||
|
||
var _prompt = __webpack_require__(1);
|
||
|
||
var _prompt2 = _interopRequireDefault(_prompt);
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
|
||
exports.default = {
|
||
components: {
|
||
'prompt': _prompt2.default
|
||
},
|
||
props: {
|
||
cell: {
|
||
type: Object,
|
||
required: true
|
||
}
|
||
},
|
||
computed: {
|
||
markdown: function markdown() {
|
||
var regex = new RegExp('^\$\$(.*)\$\$$', 'g');
|
||
|
||
var source = this.cell.source.map(function (line) {
|
||
var matches = regex.exec(line.trim());
|
||
|
||
// Only render use the Katex library if it is actually loaded
|
||
if (matches && matches.length > 0 && typeof katex !== 'undefined') {
|
||
return katex.renderToString(matches[1]);
|
||
} else {
|
||
return line;
|
||
}
|
||
});
|
||
|
||
return (0, _marked2.default)(source.join(''));
|
||
}
|
||
}
|
||
};
|
||
|
||
/***/ }),
|
||
/* 8 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
|
||
var _prompt = __webpack_require__(1);
|
||
|
||
var _prompt2 = _interopRequireDefault(_prompt);
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
exports.default = {
|
||
props: {
|
||
rawCode: {
|
||
type: String,
|
||
required: true
|
||
}
|
||
},
|
||
components: {
|
||
'prompt': _prompt2.default
|
||
}
|
||
}; //
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
|
||
/***/ }),
|
||
/* 9 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
|
||
var _prompt = __webpack_require__(1);
|
||
|
||
var _prompt2 = _interopRequireDefault(_prompt);
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
exports.default = {
|
||
props: {
|
||
outputType: {
|
||
type: String,
|
||
required: true
|
||
},
|
||
rawCode: {
|
||
type: String,
|
||
required: true
|
||
}
|
||
},
|
||
components: {
|
||
'prompt': _prompt2.default
|
||
}
|
||
}; //
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
|
||
/***/ }),
|
||
/* 10 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
|
||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; //
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
|
||
var _index = __webpack_require__(2);
|
||
|
||
var _index2 = _interopRequireDefault(_index);
|
||
|
||
var _html = __webpack_require__(19);
|
||
|
||
var _html2 = _interopRequireDefault(_html);
|
||
|
||
var _image = __webpack_require__(20);
|
||
|
||
var _image2 = _interopRequireDefault(_image);
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
exports.default = {
|
||
props: {
|
||
codeCssClass: {
|
||
type: String,
|
||
required: false,
|
||
default: ''
|
||
},
|
||
count: {
|
||
type: Number,
|
||
required: false,
|
||
default: false
|
||
},
|
||
output: {
|
||
type: Object,
|
||
requred: true
|
||
}
|
||
},
|
||
components: {
|
||
'code-cell': _index2.default,
|
||
'html-output': _html2.default,
|
||
'image-output': _image2.default
|
||
},
|
||
data: function data() {
|
||
return {
|
||
outputType: ''
|
||
};
|
||
},
|
||
|
||
computed: {
|
||
componentName: function componentName() {
|
||
if (this.output.text) {
|
||
return 'code-cell';
|
||
} else if (this.output.data['image/png']) {
|
||
this.outputType = 'image/png';
|
||
|
||
return 'image-output';
|
||
} else if (this.output.data['text/html']) {
|
||
this.outputType = 'text/html';
|
||
|
||
return 'html-output';
|
||
} else if (this.output.data['image/svg+xml']) {
|
||
this.outputType = 'image/svg+xml';
|
||
|
||
return 'html-output';
|
||
} else {
|
||
this.outputType = 'text/plain';
|
||
|
||
return 'code-cell';
|
||
}
|
||
},
|
||
rawCode: function rawCode() {
|
||
if (this.output.text) {
|
||
return this.output.text.join('');
|
||
} else {
|
||
return this.dataForType(this.outputType);
|
||
}
|
||
}
|
||
},
|
||
methods: {
|
||
dataForType: function dataForType(type) {
|
||
var data = this.output.data[type];
|
||
|
||
if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {
|
||
data = data.join('');
|
||
}
|
||
|
||
return data;
|
||
}
|
||
}
|
||
};
|
||
|
||
/***/ }),
|
||
/* 11 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
|
||
exports.default = {
|
||
props: {
|
||
type: {
|
||
type: String,
|
||
required: false
|
||
},
|
||
count: {
|
||
type: Number,
|
||
required: false
|
||
}
|
||
}
|
||
};
|
||
|
||
/***/ }),
|
||
/* 12 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
|
||
var _cells = __webpack_require__(13);
|
||
|
||
exports.default = {
|
||
components: {
|
||
'code-cell': _cells.CodeCell,
|
||
'markdown-cell': _cells.MarkdownCell
|
||
},
|
||
props: {
|
||
notebook: {
|
||
type: Object,
|
||
required: true
|
||
},
|
||
codeCssClass: {
|
||
type: String,
|
||
required: false,
|
||
default: ''
|
||
}
|
||
},
|
||
methods: {
|
||
cellType: function cellType(type) {
|
||
return type + '-cell';
|
||
}
|
||
},
|
||
computed: {
|
||
hasNotebook: function hasNotebook() {
|
||
return Object.keys(this.notebook).length;
|
||
}
|
||
}
|
||
}; //
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
//
|
||
|
||
/***/ }),
|
||
/* 13 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
|
||
var _markdown = __webpack_require__(18);
|
||
|
||
Object.defineProperty(exports, 'MarkdownCell', {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _interopRequireDefault(_markdown).default;
|
||
}
|
||
});
|
||
|
||
var _code = __webpack_require__(17);
|
||
|
||
Object.defineProperty(exports, 'CodeCell', {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _interopRequireDefault(_code).default;
|
||
}
|
||
});
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
/***/ }),
|
||
/* 14 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
/* WEBPACK VAR INJECTION */(function(global) {/**
|
||
* marked - a markdown parser
|
||
* Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)
|
||
* https://github.com/chjj/marked
|
||
*/
|
||
|
||
;(function() {
|
||
|
||
/**
|
||
* Block-Level Grammar
|
||
*/
|
||
|
||
var block = {
|
||
newline: /^\n+/,
|
||
code: /^( {4}[^\n]+\n*)+/,
|
||
fences: noop,
|
||
hr: /^( *[-*_]){3,} *(?:\n+|$)/,
|
||
heading: /^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,
|
||
nptable: noop,
|
||
lheading: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,
|
||
blockquote: /^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,
|
||
list: /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,
|
||
html: /^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,
|
||
def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,
|
||
table: noop,
|
||
paragraph: /^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,
|
||
text: /^[^\n]+/
|
||
};
|
||
|
||
block.bullet = /(?:[*+-]|\d+\.)/;
|
||
block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;
|
||
block.item = replace(block.item, 'gm')
|
||
(/bull/g, block.bullet)
|
||
();
|
||
|
||
block.list = replace(block.list)
|
||
(/bull/g, block.bullet)
|
||
('hr', '\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))')
|
||
('def', '\\n+(?=' + block.def.source + ')')
|
||
();
|
||
|
||
block.blockquote = replace(block.blockquote)
|
||
('def', block.def)
|
||
();
|
||
|
||
block._tag = '(?!(?:'
|
||
+ 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'
|
||
+ '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'
|
||
+ '|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b';
|
||
|
||
block.html = replace(block.html)
|
||
('comment', /<!--[\s\S]*?-->/)
|
||
('closed', /<(tag)[\s\S]+?<\/\1>/)
|
||
('closing', /<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)
|
||
(/tag/g, block._tag)
|
||
();
|
||
|
||
block.paragraph = replace(block.paragraph)
|
||
('hr', block.hr)
|
||
('heading', block.heading)
|
||
('lheading', block.lheading)
|
||
('blockquote', block.blockquote)
|
||
('tag', '<' + block._tag)
|
||
('def', block.def)
|
||
();
|
||
|
||
/**
|
||
* Normal Block Grammar
|
||
*/
|
||
|
||
block.normal = merge({}, block);
|
||
|
||
/**
|
||
* GFM Block Grammar
|
||
*/
|
||
|
||
block.gfm = merge({}, block.normal, {
|
||
fences: /^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,
|
||
paragraph: /^/,
|
||
heading: /^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/
|
||
});
|
||
|
||
block.gfm.paragraph = replace(block.paragraph)
|
||
('(?!', '(?!'
|
||
+ block.gfm.fences.source.replace('\\1', '\\2') + '|'
|
||
+ block.list.source.replace('\\1', '\\3') + '|')
|
||
();
|
||
|
||
/**
|
||
* GFM + Tables Block Grammar
|
||
*/
|
||
|
||
block.tables = merge({}, block.gfm, {
|
||
nptable: /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,
|
||
table: /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/
|
||
});
|
||
|
||
/**
|
||
* Block Lexer
|
||
*/
|
||
|
||
function Lexer(options) {
|
||
this.tokens = [];
|
||
this.tokens.links = {};
|
||
this.options = options || marked.defaults;
|
||
this.rules = block.normal;
|
||
|
||
if (this.options.gfm) {
|
||
if (this.options.tables) {
|
||
this.rules = block.tables;
|
||
} else {
|
||
this.rules = block.gfm;
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Expose Block Rules
|
||
*/
|
||
|
||
Lexer.rules = block;
|
||
|
||
/**
|
||
* Static Lex Method
|
||
*/
|
||
|
||
Lexer.lex = function(src, options) {
|
||
var lexer = new Lexer(options);
|
||
return lexer.lex(src);
|
||
};
|
||
|
||
/**
|
||
* Preprocessing
|
||
*/
|
||
|
||
Lexer.prototype.lex = function(src) {
|
||
src = src
|
||
.replace(/\r\n|\r/g, '\n')
|
||
.replace(/\t/g, ' ')
|
||
.replace(/\u00a0/g, ' ')
|
||
.replace(/\u2424/g, '\n');
|
||
|
||
return this.token(src, true);
|
||
};
|
||
|
||
/**
|
||
* Lexing
|
||
*/
|
||
|
||
Lexer.prototype.token = function(src, top, bq) {
|
||
var src = src.replace(/^ +$/gm, '')
|
||
, next
|
||
, loose
|
||
, cap
|
||
, bull
|
||
, b
|
||
, item
|
||
, space
|
||
, i
|
||
, l;
|
||
|
||
while (src) {
|
||
// newline
|
||
if (cap = this.rules.newline.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
if (cap[0].length > 1) {
|
||
this.tokens.push({
|
||
type: 'space'
|
||
});
|
||
}
|
||
}
|
||
|
||
// code
|
||
if (cap = this.rules.code.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
cap = cap[0].replace(/^ {4}/gm, '');
|
||
this.tokens.push({
|
||
type: 'code',
|
||
text: !this.options.pedantic
|
||
? cap.replace(/\n+$/, '')
|
||
: cap
|
||
});
|
||
continue;
|
||
}
|
||
|
||
// fences (gfm)
|
||
if (cap = this.rules.fences.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
this.tokens.push({
|
||
type: 'code',
|
||
lang: cap[2],
|
||
text: cap[3] || ''
|
||
});
|
||
continue;
|
||
}
|
||
|
||
// heading
|
||
if (cap = this.rules.heading.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
this.tokens.push({
|
||
type: 'heading',
|
||
depth: cap[1].length,
|
||
text: cap[2]
|
||
});
|
||
continue;
|
||
}
|
||
|
||
// table no leading pipe (gfm)
|
||
if (top && (cap = this.rules.nptable.exec(src))) {
|
||
src = src.substring(cap[0].length);
|
||
|
||
item = {
|
||
type: 'table',
|
||
header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
|
||
align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
|
||
cells: cap[3].replace(/\n$/, '').split('\n')
|
||
};
|
||
|
||
for (i = 0; i < item.align.length; i++) {
|
||
if (/^ *-+: *$/.test(item.align[i])) {
|
||
item.align[i] = 'right';
|
||
} else if (/^ *:-+: *$/.test(item.align[i])) {
|
||
item.align[i] = 'center';
|
||
} else if (/^ *:-+ *$/.test(item.align[i])) {
|
||
item.align[i] = 'left';
|
||
} else {
|
||
item.align[i] = null;
|
||
}
|
||
}
|
||
|
||
for (i = 0; i < item.cells.length; i++) {
|
||
item.cells[i] = item.cells[i].split(/ *\| */);
|
||
}
|
||
|
||
this.tokens.push(item);
|
||
|
||
continue;
|
||
}
|
||
|
||
// lheading
|
||
if (cap = this.rules.lheading.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
this.tokens.push({
|
||
type: 'heading',
|
||
depth: cap[2] === '=' ? 1 : 2,
|
||
text: cap[1]
|
||
});
|
||
continue;
|
||
}
|
||
|
||
// hr
|
||
if (cap = this.rules.hr.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
this.tokens.push({
|
||
type: 'hr'
|
||
});
|
||
continue;
|
||
}
|
||
|
||
// blockquote
|
||
if (cap = this.rules.blockquote.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
|
||
this.tokens.push({
|
||
type: 'blockquote_start'
|
||
});
|
||
|
||
cap = cap[0].replace(/^ *> ?/gm, '');
|
||
|
||
// Pass `top` to keep the current
|
||
// "toplevel" state. This is exactly
|
||
// how markdown.pl works.
|
||
this.token(cap, top, true);
|
||
|
||
this.tokens.push({
|
||
type: 'blockquote_end'
|
||
});
|
||
|
||
continue;
|
||
}
|
||
|
||
// list
|
||
if (cap = this.rules.list.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
bull = cap[2];
|
||
|
||
this.tokens.push({
|
||
type: 'list_start',
|
||
ordered: bull.length > 1
|
||
});
|
||
|
||
// Get each top-level item.
|
||
cap = cap[0].match(this.rules.item);
|
||
|
||
next = false;
|
||
l = cap.length;
|
||
i = 0;
|
||
|
||
for (; i < l; i++) {
|
||
item = cap[i];
|
||
|
||
// Remove the list item's bullet
|
||
// so it is seen as the next token.
|
||
space = item.length;
|
||
item = item.replace(/^ *([*+-]|\d+\.) +/, '');
|
||
|
||
// Outdent whatever the
|
||
// list item contains. Hacky.
|
||
if (~item.indexOf('\n ')) {
|
||
space -= item.length;
|
||
item = !this.options.pedantic
|
||
? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')
|
||
: item.replace(/^ {1,4}/gm, '');
|
||
}
|
||
|
||
// Determine whether the next list item belongs here.
|
||
// Backpedal if it does not belong in this list.
|
||
if (this.options.smartLists && i !== l - 1) {
|
||
b = block.bullet.exec(cap[i + 1])[0];
|
||
if (bull !== b && !(bull.length > 1 && b.length > 1)) {
|
||
src = cap.slice(i + 1).join('\n') + src;
|
||
i = l - 1;
|
||
}
|
||
}
|
||
|
||
// Determine whether item is loose or not.
|
||
// Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/
|
||
// for discount behavior.
|
||
loose = next || /\n\n(?!\s*$)/.test(item);
|
||
if (i !== l - 1) {
|
||
next = item.charAt(item.length - 1) === '\n';
|
||
if (!loose) loose = next;
|
||
}
|
||
|
||
this.tokens.push({
|
||
type: loose
|
||
? 'loose_item_start'
|
||
: 'list_item_start'
|
||
});
|
||
|
||
// Recurse.
|
||
this.token(item, false, bq);
|
||
|
||
this.tokens.push({
|
||
type: 'list_item_end'
|
||
});
|
||
}
|
||
|
||
this.tokens.push({
|
||
type: 'list_end'
|
||
});
|
||
|
||
continue;
|
||
}
|
||
|
||
// html
|
||
if (cap = this.rules.html.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
this.tokens.push({
|
||
type: this.options.sanitize
|
||
? 'paragraph'
|
||
: 'html',
|
||
pre: !this.options.sanitizer
|
||
&& (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
|
||
text: cap[0]
|
||
});
|
||
continue;
|
||
}
|
||
|
||
// def
|
||
if ((!bq && top) && (cap = this.rules.def.exec(src))) {
|
||
src = src.substring(cap[0].length);
|
||
this.tokens.links[cap[1].toLowerCase()] = {
|
||
href: cap[2],
|
||
title: cap[3]
|
||
};
|
||
continue;
|
||
}
|
||
|
||
// table (gfm)
|
||
if (top && (cap = this.rules.table.exec(src))) {
|
||
src = src.substring(cap[0].length);
|
||
|
||
item = {
|
||
type: 'table',
|
||
header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
|
||
align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
|
||
cells: cap[3].replace(/(?: *\| *)?\n$/, '').split('\n')
|
||
};
|
||
|
||
for (i = 0; i < item.align.length; i++) {
|
||
if (/^ *-+: *$/.test(item.align[i])) {
|
||
item.align[i] = 'right';
|
||
} else if (/^ *:-+: *$/.test(item.align[i])) {
|
||
item.align[i] = 'center';
|
||
} else if (/^ *:-+ *$/.test(item.align[i])) {
|
||
item.align[i] = 'left';
|
||
} else {
|
||
item.align[i] = null;
|
||
}
|
||
}
|
||
|
||
for (i = 0; i < item.cells.length; i++) {
|
||
item.cells[i] = item.cells[i]
|
||
.replace(/^ *\| *| *\| *$/g, '')
|
||
.split(/ *\| */);
|
||
}
|
||
|
||
this.tokens.push(item);
|
||
|
||
continue;
|
||
}
|
||
|
||
// top-level paragraph
|
||
if (top && (cap = this.rules.paragraph.exec(src))) {
|
||
src = src.substring(cap[0].length);
|
||
this.tokens.push({
|
||
type: 'paragraph',
|
||
text: cap[1].charAt(cap[1].length - 1) === '\n'
|
||
? cap[1].slice(0, -1)
|
||
: cap[1]
|
||
});
|
||
continue;
|
||
}
|
||
|
||
// text
|
||
if (cap = this.rules.text.exec(src)) {
|
||
// Top-level should never reach here.
|
||
src = src.substring(cap[0].length);
|
||
this.tokens.push({
|
||
type: 'text',
|
||
text: cap[0]
|
||
});
|
||
continue;
|
||
}
|
||
|
||
if (src) {
|
||
throw new
|
||
Error('Infinite loop on byte: ' + src.charCodeAt(0));
|
||
}
|
||
}
|
||
|
||
return this.tokens;
|
||
};
|
||
|
||
/**
|
||
* Inline-Level Grammar
|
||
*/
|
||
|
||
var inline = {
|
||
escape: /^\\([\\`*{}\[\]()#+\-.!_>])/,
|
||
autolink: /^<([^ >]+(@|:\/)[^ >]+)>/,
|
||
url: noop,
|
||
tag: /^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,
|
||
link: /^!?\[(inside)\]\(href\)/,
|
||
reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/,
|
||
nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,
|
||
strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,
|
||
em: /^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
|
||
code: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,
|
||
br: /^ {2,}\n(?!\s*$)/,
|
||
del: noop,
|
||
text: /^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/
|
||
};
|
||
|
||
inline._inside = /(?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*/;
|
||
inline._href = /\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/;
|
||
|
||
inline.link = replace(inline.link)
|
||
('inside', inline._inside)
|
||
('href', inline._href)
|
||
();
|
||
|
||
inline.reflink = replace(inline.reflink)
|
||
('inside', inline._inside)
|
||
();
|
||
|
||
/**
|
||
* Normal Inline Grammar
|
||
*/
|
||
|
||
inline.normal = merge({}, inline);
|
||
|
||
/**
|
||
* Pedantic Inline Grammar
|
||
*/
|
||
|
||
inline.pedantic = merge({}, inline.normal, {
|
||
strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
|
||
em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/
|
||
});
|
||
|
||
/**
|
||
* GFM Inline Grammar
|
||
*/
|
||
|
||
inline.gfm = merge({}, inline.normal, {
|
||
escape: replace(inline.escape)('])', '~|])')(),
|
||
url: /^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,
|
||
del: /^~~(?=\S)([\s\S]*?\S)~~/,
|
||
text: replace(inline.text)
|
||
(']|', '~]|')
|
||
('|', '|https?://|')
|
||
()
|
||
});
|
||
|
||
/**
|
||
* GFM + Line Breaks Inline Grammar
|
||
*/
|
||
|
||
inline.breaks = merge({}, inline.gfm, {
|
||
br: replace(inline.br)('{2,}', '*')(),
|
||
text: replace(inline.gfm.text)('{2,}', '*')()
|
||
});
|
||
|
||
/**
|
||
* Inline Lexer & Compiler
|
||
*/
|
||
|
||
function InlineLexer(links, options) {
|
||
this.options = options || marked.defaults;
|
||
this.links = links;
|
||
this.rules = inline.normal;
|
||
this.renderer = this.options.renderer || new Renderer;
|
||
this.renderer.options = this.options;
|
||
|
||
if (!this.links) {
|
||
throw new
|
||
Error('Tokens array requires a `links` property.');
|
||
}
|
||
|
||
if (this.options.gfm) {
|
||
if (this.options.breaks) {
|
||
this.rules = inline.breaks;
|
||
} else {
|
||
this.rules = inline.gfm;
|
||
}
|
||
} else if (this.options.pedantic) {
|
||
this.rules = inline.pedantic;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Expose Inline Rules
|
||
*/
|
||
|
||
InlineLexer.rules = inline;
|
||
|
||
/**
|
||
* Static Lexing/Compiling Method
|
||
*/
|
||
|
||
InlineLexer.output = function(src, links, options) {
|
||
var inline = new InlineLexer(links, options);
|
||
return inline.output(src);
|
||
};
|
||
|
||
/**
|
||
* Lexing/Compiling
|
||
*/
|
||
|
||
InlineLexer.prototype.output = function(src) {
|
||
var out = ''
|
||
, link
|
||
, text
|
||
, href
|
||
, cap;
|
||
|
||
while (src) {
|
||
// escape
|
||
if (cap = this.rules.escape.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
out += cap[1];
|
||
continue;
|
||
}
|
||
|
||
// autolink
|
||
if (cap = this.rules.autolink.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
if (cap[2] === '@') {
|
||
text = cap[1].charAt(6) === ':'
|
||
? this.mangle(cap[1].substring(7))
|
||
: this.mangle(cap[1]);
|
||
href = this.mangle('mailto:') + text;
|
||
} else {
|
||
text = escape(cap[1]);
|
||
href = text;
|
||
}
|
||
out += this.renderer.link(href, null, text);
|
||
continue;
|
||
}
|
||
|
||
// url (gfm)
|
||
if (!this.inLink && (cap = this.rules.url.exec(src))) {
|
||
src = src.substring(cap[0].length);
|
||
text = escape(cap[1]);
|
||
href = text;
|
||
out += this.renderer.link(href, null, text);
|
||
continue;
|
||
}
|
||
|
||
// tag
|
||
if (cap = this.rules.tag.exec(src)) {
|
||
if (!this.inLink && /^<a /i.test(cap[0])) {
|
||
this.inLink = true;
|
||
} else if (this.inLink && /^<\/a>/i.test(cap[0])) {
|
||
this.inLink = false;
|
||
}
|
||
src = src.substring(cap[0].length);
|
||
out += this.options.sanitize
|
||
? this.options.sanitizer
|
||
? this.options.sanitizer(cap[0])
|
||
: escape(cap[0])
|
||
: cap[0]
|
||
continue;
|
||
}
|
||
|
||
// link
|
||
if (cap = this.rules.link.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
this.inLink = true;
|
||
out += this.outputLink(cap, {
|
||
href: cap[2],
|
||
title: cap[3]
|
||
});
|
||
this.inLink = false;
|
||
continue;
|
||
}
|
||
|
||
// reflink, nolink
|
||
if ((cap = this.rules.reflink.exec(src))
|
||
|| (cap = this.rules.nolink.exec(src))) {
|
||
src = src.substring(cap[0].length);
|
||
link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
|
||
link = this.links[link.toLowerCase()];
|
||
if (!link || !link.href) {
|
||
out += cap[0].charAt(0);
|
||
src = cap[0].substring(1) + src;
|
||
continue;
|
||
}
|
||
this.inLink = true;
|
||
out += this.outputLink(cap, link);
|
||
this.inLink = false;
|
||
continue;
|
||
}
|
||
|
||
// strong
|
||
if (cap = this.rules.strong.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
out += this.renderer.strong(this.output(cap[2] || cap[1]));
|
||
continue;
|
||
}
|
||
|
||
// em
|
||
if (cap = this.rules.em.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
out += this.renderer.em(this.output(cap[2] || cap[1]));
|
||
continue;
|
||
}
|
||
|
||
// code
|
||
if (cap = this.rules.code.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
out += this.renderer.codespan(escape(cap[2], true));
|
||
continue;
|
||
}
|
||
|
||
// br
|
||
if (cap = this.rules.br.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
out += this.renderer.br();
|
||
continue;
|
||
}
|
||
|
||
// del (gfm)
|
||
if (cap = this.rules.del.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
out += this.renderer.del(this.output(cap[1]));
|
||
continue;
|
||
}
|
||
|
||
// text
|
||
if (cap = this.rules.text.exec(src)) {
|
||
src = src.substring(cap[0].length);
|
||
out += this.renderer.text(escape(this.smartypants(cap[0])));
|
||
continue;
|
||
}
|
||
|
||
if (src) {
|
||
throw new
|
||
Error('Infinite loop on byte: ' + src.charCodeAt(0));
|
||
}
|
||
}
|
||
|
||
return out;
|
||
};
|
||
|
||
/**
|
||
* Compile Link
|
||
*/
|
||
|
||
InlineLexer.prototype.outputLink = function(cap, link) {
|
||
var href = escape(link.href)
|
||
, title = link.title ? escape(link.title) : null;
|
||
|
||
return cap[0].charAt(0) !== '!'
|
||
? this.renderer.link(href, title, this.output(cap[1]))
|
||
: this.renderer.image(href, title, escape(cap[1]));
|
||
};
|
||
|
||
/**
|
||
* Smartypants Transformations
|
||
*/
|
||
|
||
InlineLexer.prototype.smartypants = function(text) {
|
||
if (!this.options.smartypants) return text;
|
||
return text
|
||
// em-dashes
|
||
.replace(/---/g, '\u2014')
|
||
// en-dashes
|
||
.replace(/--/g, '\u2013')
|
||
// opening singles
|
||
.replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018')
|
||
// closing singles & apostrophes
|
||
.replace(/'/g, '\u2019')
|
||
// opening doubles
|
||
.replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c')
|
||
// closing doubles
|
||
.replace(/"/g, '\u201d')
|
||
// ellipses
|
||
.replace(/\.{3}/g, '\u2026');
|
||
};
|
||
|
||
/**
|
||
* Mangle Links
|
||
*/
|
||
|
||
InlineLexer.prototype.mangle = function(text) {
|
||
if (!this.options.mangle) return text;
|
||
var out = ''
|
||
, l = text.length
|
||
, i = 0
|
||
, ch;
|
||
|
||
for (; i < l; i++) {
|
||
ch = text.charCodeAt(i);
|
||
if (Math.random() > 0.5) {
|
||
ch = 'x' + ch.toString(16);
|
||
}
|
||
out += '&#' + ch + ';';
|
||
}
|
||
|
||
return out;
|
||
};
|
||
|
||
/**
|
||
* Renderer
|
||
*/
|
||
|
||
function Renderer(options) {
|
||
this.options = options || {};
|
||
}
|
||
|
||
Renderer.prototype.code = function(code, lang, escaped) {
|
||
if (this.options.highlight) {
|
||
var out = this.options.highlight(code, lang);
|
||
if (out != null && out !== code) {
|
||
escaped = true;
|
||
code = out;
|
||
}
|
||
}
|
||
|
||
if (!lang) {
|
||
return '<pre><code>'
|
||
+ (escaped ? code : escape(code, true))
|
||
+ '\n</code></pre>';
|
||
}
|
||
|
||
return '<pre><code class="'
|
||
+ this.options.langPrefix
|
||
+ escape(lang, true)
|
||
+ '">'
|
||
+ (escaped ? code : escape(code, true))
|
||
+ '\n</code></pre>\n';
|
||
};
|
||
|
||
Renderer.prototype.blockquote = function(quote) {
|
||
return '<blockquote>\n' + quote + '</blockquote>\n';
|
||
};
|
||
|
||
Renderer.prototype.html = function(html) {
|
||
return html;
|
||
};
|
||
|
||
Renderer.prototype.heading = function(text, level, raw) {
|
||
return '<h'
|
||
+ level
|
||
+ ' id="'
|
||
+ this.options.headerPrefix
|
||
+ raw.toLowerCase().replace(/[^\w]+/g, '-')
|
||
+ '">'
|
||
+ text
|
||
+ '</h'
|
||
+ level
|
||
+ '>\n';
|
||
};
|
||
|
||
Renderer.prototype.hr = function() {
|
||
return this.options.xhtml ? '<hr/>\n' : '<hr>\n';
|
||
};
|
||
|
||
Renderer.prototype.list = function(body, ordered) {
|
||
var type = ordered ? 'ol' : 'ul';
|
||
return '<' + type + '>\n' + body + '</' + type + '>\n';
|
||
};
|
||
|
||
Renderer.prototype.listitem = function(text) {
|
||
return '<li>' + text + '</li>\n';
|
||
};
|
||
|
||
Renderer.prototype.paragraph = function(text) {
|
||
return '<p>' + text + '</p>\n';
|
||
};
|
||
|
||
Renderer.prototype.table = function(header, body) {
|
||
return '<table>\n'
|
||
+ '<thead>\n'
|
||
+ header
|
||
+ '</thead>\n'
|
||
+ '<tbody>\n'
|
||
+ body
|
||
+ '</tbody>\n'
|
||
+ '</table>\n';
|
||
};
|
||
|
||
Renderer.prototype.tablerow = function(content) {
|
||
return '<tr>\n' + content + '</tr>\n';
|
||
};
|
||
|
||
Renderer.prototype.tablecell = function(content, flags) {
|
||
var type = flags.header ? 'th' : 'td';
|
||
var tag = flags.align
|
||
? '<' + type + ' style="text-align:' + flags.align + '">'
|
||
: '<' + type + '>';
|
||
return tag + content + '</' + type + '>\n';
|
||
};
|
||
|
||
// span level renderer
|
||
Renderer.prototype.strong = function(text) {
|
||
return '<strong>' + text + '</strong>';
|
||
};
|
||
|
||
Renderer.prototype.em = function(text) {
|
||
return '<em>' + text + '</em>';
|
||
};
|
||
|
||
Renderer.prototype.codespan = function(text) {
|
||
return '<code>' + text + '</code>';
|
||
};
|
||
|
||
Renderer.prototype.br = function() {
|
||
return this.options.xhtml ? '<br/>' : '<br>';
|
||
};
|
||
|
||
Renderer.prototype.del = function(text) {
|
||
return '<del>' + text + '</del>';
|
||
};
|
||
|
||
Renderer.prototype.link = function(href, title, text) {
|
||
if (this.options.sanitize) {
|
||
try {
|
||
var prot = decodeURIComponent(unescape(href))
|
||
.replace(/[^\w:]/g, '')
|
||
.toLowerCase();
|
||
} catch (e) {
|
||
return '';
|
||
}
|
||
if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {
|
||
return '';
|
||
}
|
||
}
|
||
var out = '<a href="' + href + '"';
|
||
if (title) {
|
||
out += ' title="' + title + '"';
|
||
}
|
||
out += '>' + text + '</a>';
|
||
return out;
|
||
};
|
||
|
||
Renderer.prototype.image = function(href, title, text) {
|
||
var out = '<img src="' + href + '" alt="' + text + '"';
|
||
if (title) {
|
||
out += ' title="' + title + '"';
|
||
}
|
||
out += this.options.xhtml ? '/>' : '>';
|
||
return out;
|
||
};
|
||
|
||
Renderer.prototype.text = function(text) {
|
||
return text;
|
||
};
|
||
|
||
/**
|
||
* Parsing & Compiling
|
||
*/
|
||
|
||
function Parser(options) {
|
||
this.tokens = [];
|
||
this.token = null;
|
||
this.options = options || marked.defaults;
|
||
this.options.renderer = this.options.renderer || new Renderer;
|
||
this.renderer = this.options.renderer;
|
||
this.renderer.options = this.options;
|
||
}
|
||
|
||
/**
|
||
* Static Parse Method
|
||
*/
|
||
|
||
Parser.parse = function(src, options, renderer) {
|
||
var parser = new Parser(options, renderer);
|
||
return parser.parse(src);
|
||
};
|
||
|
||
/**
|
||
* Parse Loop
|
||
*/
|
||
|
||
Parser.prototype.parse = function(src) {
|
||
this.inline = new InlineLexer(src.links, this.options, this.renderer);
|
||
this.tokens = src.reverse();
|
||
|
||
var out = '';
|
||
while (this.next()) {
|
||
out += this.tok();
|
||
}
|
||
|
||
return out;
|
||
};
|
||
|
||
/**
|
||
* Next Token
|
||
*/
|
||
|
||
Parser.prototype.next = function() {
|
||
return this.token = this.tokens.pop();
|
||
};
|
||
|
||
/**
|
||
* Preview Next Token
|
||
*/
|
||
|
||
Parser.prototype.peek = function() {
|
||
return this.tokens[this.tokens.length - 1] || 0;
|
||
};
|
||
|
||
/**
|
||
* Parse Text Tokens
|
||
*/
|
||
|
||
Parser.prototype.parseText = function() {
|
||
var body = this.token.text;
|
||
|
||
while (this.peek().type === 'text') {
|
||
body += '\n' + this.next().text;
|
||
}
|
||
|
||
return this.inline.output(body);
|
||
};
|
||
|
||
/**
|
||
* Parse Current Token
|
||
*/
|
||
|
||
Parser.prototype.tok = function() {
|
||
switch (this.token.type) {
|
||
case 'space': {
|
||
return '';
|
||
}
|
||
case 'hr': {
|
||
return this.renderer.hr();
|
||
}
|
||
case 'heading': {
|
||
return this.renderer.heading(
|
||
this.inline.output(this.token.text),
|
||
this.token.depth,
|
||
this.token.text);
|
||
}
|
||
case 'code': {
|
||
return this.renderer.code(this.token.text,
|
||
this.token.lang,
|
||
this.token.escaped);
|
||
}
|
||
case 'table': {
|
||
var header = ''
|
||
, body = ''
|
||
, i
|
||
, row
|
||
, cell
|
||
, flags
|
||
, j;
|
||
|
||
// header
|
||
cell = '';
|
||
for (i = 0; i < this.token.header.length; i++) {
|
||
flags = { header: true, align: this.token.align[i] };
|
||
cell += this.renderer.tablecell(
|
||
this.inline.output(this.token.header[i]),
|
||
{ header: true, align: this.token.align[i] }
|
||
);
|
||
}
|
||
header += this.renderer.tablerow(cell);
|
||
|
||
for (i = 0; i < this.token.cells.length; i++) {
|
||
row = this.token.cells[i];
|
||
|
||
cell = '';
|
||
for (j = 0; j < row.length; j++) {
|
||
cell += this.renderer.tablecell(
|
||
this.inline.output(row[j]),
|
||
{ header: false, align: this.token.align[j] }
|
||
);
|
||
}
|
||
|
||
body += this.renderer.tablerow(cell);
|
||
}
|
||
return this.renderer.table(header, body);
|
||
}
|
||
case 'blockquote_start': {
|
||
var body = '';
|
||
|
||
while (this.next().type !== 'blockquote_end') {
|
||
body += this.tok();
|
||
}
|
||
|
||
return this.renderer.blockquote(body);
|
||
}
|
||
case 'list_start': {
|
||
var body = ''
|
||
, ordered = this.token.ordered;
|
||
|
||
while (this.next().type !== 'list_end') {
|
||
body += this.tok();
|
||
}
|
||
|
||
return this.renderer.list(body, ordered);
|
||
}
|
||
case 'list_item_start': {
|
||
var body = '';
|
||
|
||
while (this.next().type !== 'list_item_end') {
|
||
body += this.token.type === 'text'
|
||
? this.parseText()
|
||
: this.tok();
|
||
}
|
||
|
||
return this.renderer.listitem(body);
|
||
}
|
||
case 'loose_item_start': {
|
||
var body = '';
|
||
|
||
while (this.next().type !== 'list_item_end') {
|
||
body += this.tok();
|
||
}
|
||
|
||
return this.renderer.listitem(body);
|
||
}
|
||
case 'html': {
|
||
var html = !this.token.pre && !this.options.pedantic
|
||
? this.inline.output(this.token.text)
|
||
: this.token.text;
|
||
return this.renderer.html(html);
|
||
}
|
||
case 'paragraph': {
|
||
return this.renderer.paragraph(this.inline.output(this.token.text));
|
||
}
|
||
case 'text': {
|
||
return this.renderer.paragraph(this.parseText());
|
||
}
|
||
}
|
||
};
|
||
|
||
/**
|
||
* Helpers
|
||
*/
|
||
|
||
function escape(html, encode) {
|
||
return html
|
||
.replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&')
|
||
.replace(/</g, '<')
|
||
.replace(/>/g, '>')
|
||
.replace(/"/g, '"')
|
||
.replace(/'/g, ''');
|
||
}
|
||
|
||
function unescape(html) {
|
||
// explicitly match decimal, hex, and named HTML entities
|
||
return html.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/g, function(_, n) {
|
||
n = n.toLowerCase();
|
||
if (n === 'colon') return ':';
|
||
if (n.charAt(0) === '#') {
|
||
return n.charAt(1) === 'x'
|
||
? String.fromCharCode(parseInt(n.substring(2), 16))
|
||
: String.fromCharCode(+n.substring(1));
|
||
}
|
||
return '';
|
||
});
|
||
}
|
||
|
||
function replace(regex, opt) {
|
||
regex = regex.source;
|
||
opt = opt || '';
|
||
return function self(name, val) {
|
||
if (!name) return new RegExp(regex, opt);
|
||
val = val.source || val;
|
||
val = val.replace(/(^|[^\[])\^/g, '$1');
|
||
regex = regex.replace(name, val);
|
||
return self;
|
||
};
|
||
}
|
||
|
||
function noop() {}
|
||
noop.exec = noop;
|
||
|
||
function merge(obj) {
|
||
var i = 1
|
||
, target
|
||
, key;
|
||
|
||
for (; i < arguments.length; i++) {
|
||
target = arguments[i];
|
||
for (key in target) {
|
||
if (Object.prototype.hasOwnProperty.call(target, key)) {
|
||
obj[key] = target[key];
|
||
}
|
||
}
|
||
}
|
||
|
||
return obj;
|
||
}
|
||
|
||
|
||
/**
|
||
* Marked
|
||
*/
|
||
|
||
function marked(src, opt, callback) {
|
||
if (callback || typeof opt === 'function') {
|
||
if (!callback) {
|
||
callback = opt;
|
||
opt = null;
|
||
}
|
||
|
||
opt = merge({}, marked.defaults, opt || {});
|
||
|
||
var highlight = opt.highlight
|
||
, tokens
|
||
, pending
|
||
, i = 0;
|
||
|
||
try {
|
||
tokens = Lexer.lex(src, opt)
|
||
} catch (e) {
|
||
return callback(e);
|
||
}
|
||
|
||
pending = tokens.length;
|
||
|
||
var done = function(err) {
|
||
if (err) {
|
||
opt.highlight = highlight;
|
||
return callback(err);
|
||
}
|
||
|
||
var out;
|
||
|
||
try {
|
||
out = Parser.parse(tokens, opt);
|
||
} catch (e) {
|
||
err = e;
|
||
}
|
||
|
||
opt.highlight = highlight;
|
||
|
||
return err
|
||
? callback(err)
|
||
: callback(null, out);
|
||
};
|
||
|
||
if (!highlight || highlight.length < 3) {
|
||
return done();
|
||
}
|
||
|
||
delete opt.highlight;
|
||
|
||
if (!pending) return done();
|
||
|
||
for (; i < tokens.length; i++) {
|
||
(function(token) {
|
||
if (token.type !== 'code') {
|
||
return --pending || done();
|
||
}
|
||
return highlight(token.text, token.lang, function(err, code) {
|
||
if (err) return done(err);
|
||
if (code == null || code === token.text) {
|
||
return --pending || done();
|
||
}
|
||
token.text = code;
|
||
token.escaped = true;
|
||
--pending || done();
|
||
});
|
||
})(tokens[i]);
|
||
}
|
||
|
||
return;
|
||
}
|
||
try {
|
||
if (opt) opt = merge({}, marked.defaults, opt);
|
||
return Parser.parse(Lexer.lex(src, opt), opt);
|
||
} catch (e) {
|
||
e.message += '\nPlease report this to https://github.com/chjj/marked.';
|
||
if ((opt || marked.defaults).silent) {
|
||
return '<p>An error occured:</p><pre>'
|
||
+ escape(e.message + '', true)
|
||
+ '</pre>';
|
||
}
|
||
throw e;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Options
|
||
*/
|
||
|
||
marked.options =
|
||
marked.setOptions = function(opt) {
|
||
merge(marked.defaults, opt);
|
||
return marked;
|
||
};
|
||
|
||
marked.defaults = {
|
||
gfm: true,
|
||
tables: true,
|
||
breaks: false,
|
||
pedantic: false,
|
||
sanitize: false,
|
||
sanitizer: null,
|
||
mangle: true,
|
||
smartLists: false,
|
||
silent: false,
|
||
highlight: null,
|
||
langPrefix: 'lang-',
|
||
smartypants: false,
|
||
headerPrefix: '',
|
||
renderer: new Renderer,
|
||
xhtml: false
|
||
};
|
||
|
||
/**
|
||
* Expose
|
||
*/
|
||
|
||
marked.Parser = Parser;
|
||
marked.parser = Parser.parse;
|
||
|
||
marked.Renderer = Renderer;
|
||
|
||
marked.Lexer = Lexer;
|
||
marked.lexer = Lexer.lex;
|
||
|
||
marked.InlineLexer = InlineLexer;
|
||
marked.inlineLexer = InlineLexer.output;
|
||
|
||
marked.parse = marked;
|
||
|
||
if (true) {
|
||
module.exports = marked;
|
||
} else if (typeof define === 'function' && define.amd) {
|
||
define(function() { return marked; });
|
||
} else {
|
||
this.marked = marked;
|
||
}
|
||
|
||
}).call(function() {
|
||
return this || (typeof window !== 'undefined' ? window : global);
|
||
}());
|
||
|
||
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))
|
||
|
||
/***/ }),
|
||
/* 15 */
|
||
/***/ (function(module, exports) {
|
||
|
||
Prism.languages.python= {
|
||
'triple-quoted-string': {
|
||
pattern: /"""[\s\S]+?"""|'''[\s\S]+?'''/,
|
||
alias: 'string'
|
||
},
|
||
'comment': {
|
||
pattern: /(^|[^\\])#.*/,
|
||
lookbehind: true
|
||
},
|
||
'string': {
|
||
pattern: /("|')(?:\\\\|\\?[^\\\r\n])*?\1/,
|
||
greedy: true
|
||
},
|
||
'function' : {
|
||
pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,
|
||
lookbehind: true
|
||
},
|
||
'class-name': {
|
||
pattern: /(\bclass\s+)[a-z0-9_]+/i,
|
||
lookbehind: true
|
||
},
|
||
'keyword' : /\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,
|
||
'boolean' : /\b(?:True|False)\b/,
|
||
'number' : /\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,
|
||
'operator' : /[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,
|
||
'punctuation' : /[{}[\];(),.:]/
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
/* 16 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
/* WEBPACK VAR INJECTION */(function(global) {
|
||
/* **********************************************
|
||
Begin prism-core.js
|
||
********************************************** */
|
||
|
||
var _self = (typeof window !== 'undefined')
|
||
? window // if in browser
|
||
: (
|
||
(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)
|
||
? self // if in worker
|
||
: {} // if in node js
|
||
);
|
||
|
||
/**
|
||
* Prism: Lightweight, robust, elegant syntax highlighting
|
||
* MIT license http://www.opensource.org/licenses/mit-license.php/
|
||
* @author Lea Verou http://lea.verou.me
|
||
*/
|
||
|
||
var Prism = (function(){
|
||
|
||
// Private helper vars
|
||
var lang = /\blang(?:uage)?-(\w+)\b/i;
|
||
var uniqueId = 0;
|
||
|
||
var _ = _self.Prism = {
|
||
util: {
|
||
encode: function (tokens) {
|
||
if (tokens instanceof Token) {
|
||
return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);
|
||
} else if (_.util.type(tokens) === 'Array') {
|
||
return tokens.map(_.util.encode);
|
||
} else {
|
||
return tokens.replace(/&/g, '&').replace(/</g, '<').replace(/\u00a0/g, ' ');
|
||
}
|
||
},
|
||
|
||
type: function (o) {
|
||
return Object.prototype.toString.call(o).match(/\[object (\w+)\]/)[1];
|
||
},
|
||
|
||
objId: function (obj) {
|
||
if (!obj['__id']) {
|
||
Object.defineProperty(obj, '__id', { value: ++uniqueId });
|
||
}
|
||
return obj['__id'];
|
||
},
|
||
|
||
// Deep clone a language definition (e.g. to extend it)
|
||
clone: function (o) {
|
||
var type = _.util.type(o);
|
||
|
||
switch (type) {
|
||
case 'Object':
|
||
var clone = {};
|
||
|
||
for (var key in o) {
|
||
if (o.hasOwnProperty(key)) {
|
||
clone[key] = _.util.clone(o[key]);
|
||
}
|
||
}
|
||
|
||
return clone;
|
||
|
||
case 'Array':
|
||
// Check for existence for IE8
|
||
return o.map && o.map(function(v) { return _.util.clone(v); });
|
||
}
|
||
|
||
return o;
|
||
}
|
||
},
|
||
|
||
languages: {
|
||
extend: function (id, redef) {
|
||
var lang = _.util.clone(_.languages[id]);
|
||
|
||
for (var key in redef) {
|
||
lang[key] = redef[key];
|
||
}
|
||
|
||
return lang;
|
||
},
|
||
|
||
/**
|
||
* Insert a token before another token in a language literal
|
||
* As this needs to recreate the object (we cannot actually insert before keys in object literals),
|
||
* we cannot just provide an object, we need anobject and a key.
|
||
* @param inside The key (or language id) of the parent
|
||
* @param before The key to insert before. If not provided, the function appends instead.
|
||
* @param insert Object with the key/value pairs to insert
|
||
* @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.
|
||
*/
|
||
insertBefore: function (inside, before, insert, root) {
|
||
root = root || _.languages;
|
||
var grammar = root[inside];
|
||
|
||
if (arguments.length == 2) {
|
||
insert = arguments[1];
|
||
|
||
for (var newToken in insert) {
|
||
if (insert.hasOwnProperty(newToken)) {
|
||
grammar[newToken] = insert[newToken];
|
||
}
|
||
}
|
||
|
||
return grammar;
|
||
}
|
||
|
||
var ret = {};
|
||
|
||
for (var token in grammar) {
|
||
|
||
if (grammar.hasOwnProperty(token)) {
|
||
|
||
if (token == before) {
|
||
|
||
for (var newToken in insert) {
|
||
|
||
if (insert.hasOwnProperty(newToken)) {
|
||
ret[newToken] = insert[newToken];
|
||
}
|
||
}
|
||
}
|
||
|
||
ret[token] = grammar[token];
|
||
}
|
||
}
|
||
|
||
// Update references in other language definitions
|
||
_.languages.DFS(_.languages, function(key, value) {
|
||
if (value === root[inside] && key != inside) {
|
||
this[key] = ret;
|
||
}
|
||
});
|
||
|
||
return root[inside] = ret;
|
||
},
|
||
|
||
// Traverse a language definition with Depth First Search
|
||
DFS: function(o, callback, type, visited) {
|
||
visited = visited || {};
|
||
for (var i in o) {
|
||
if (o.hasOwnProperty(i)) {
|
||
callback.call(o, i, o[i], type || i);
|
||
|
||
if (_.util.type(o[i]) === 'Object' && !visited[_.util.objId(o[i])]) {
|
||
visited[_.util.objId(o[i])] = true;
|
||
_.languages.DFS(o[i], callback, null, visited);
|
||
}
|
||
else if (_.util.type(o[i]) === 'Array' && !visited[_.util.objId(o[i])]) {
|
||
visited[_.util.objId(o[i])] = true;
|
||
_.languages.DFS(o[i], callback, i, visited);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
plugins: {},
|
||
|
||
highlightAll: function(async, callback) {
|
||
var env = {
|
||
callback: callback,
|
||
selector: 'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'
|
||
};
|
||
|
||
_.hooks.run("before-highlightall", env);
|
||
|
||
var elements = env.elements || document.querySelectorAll(env.selector);
|
||
|
||
for (var i=0, element; element = elements[i++];) {
|
||
_.highlightElement(element, async === true, env.callback);
|
||
}
|
||
},
|
||
|
||
highlightElement: function(element, async, callback) {
|
||
// Find language
|
||
var language, grammar, parent = element;
|
||
|
||
while (parent && !lang.test(parent.className)) {
|
||
parent = parent.parentNode;
|
||
}
|
||
|
||
if (parent) {
|
||
language = (parent.className.match(lang) || [,''])[1].toLowerCase();
|
||
grammar = _.languages[language];
|
||
}
|
||
|
||
// Set language on the element, if not present
|
||
element.className = element.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language;
|
||
|
||
// Set language on the parent, for styling
|
||
parent = element.parentNode;
|
||
|
||
if (/pre/i.test(parent.nodeName)) {
|
||
parent.className = parent.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language;
|
||
}
|
||
|
||
var code = element.textContent;
|
||
|
||
var env = {
|
||
element: element,
|
||
language: language,
|
||
grammar: grammar,
|
||
code: code
|
||
};
|
||
|
||
_.hooks.run('before-sanity-check', env);
|
||
|
||
if (!env.code || !env.grammar) {
|
||
if (env.code) {
|
||
env.element.textContent = env.code;
|
||
}
|
||
_.hooks.run('complete', env);
|
||
return;
|
||
}
|
||
|
||
_.hooks.run('before-highlight', env);
|
||
|
||
if (async && _self.Worker) {
|
||
var worker = new Worker(_.filename);
|
||
|
||
worker.onmessage = function(evt) {
|
||
env.highlightedCode = evt.data;
|
||
|
||
_.hooks.run('before-insert', env);
|
||
|
||
env.element.innerHTML = env.highlightedCode;
|
||
|
||
callback && callback.call(env.element);
|
||
_.hooks.run('after-highlight', env);
|
||
_.hooks.run('complete', env);
|
||
};
|
||
|
||
worker.postMessage(JSON.stringify({
|
||
language: env.language,
|
||
code: env.code,
|
||
immediateClose: true
|
||
}));
|
||
}
|
||
else {
|
||
env.highlightedCode = _.highlight(env.code, env.grammar, env.language);
|
||
|
||
_.hooks.run('before-insert', env);
|
||
|
||
env.element.innerHTML = env.highlightedCode;
|
||
|
||
callback && callback.call(element);
|
||
|
||
_.hooks.run('after-highlight', env);
|
||
_.hooks.run('complete', env);
|
||
}
|
||
},
|
||
|
||
highlight: function (text, grammar, language) {
|
||
var tokens = _.tokenize(text, grammar);
|
||
return Token.stringify(_.util.encode(tokens), language);
|
||
},
|
||
|
||
tokenize: function(text, grammar, language) {
|
||
var Token = _.Token;
|
||
|
||
var strarr = [text];
|
||
|
||
var rest = grammar.rest;
|
||
|
||
if (rest) {
|
||
for (var token in rest) {
|
||
grammar[token] = rest[token];
|
||
}
|
||
|
||
delete grammar.rest;
|
||
}
|
||
|
||
tokenloop: for (var token in grammar) {
|
||
if(!grammar.hasOwnProperty(token) || !grammar[token]) {
|
||
continue;
|
||
}
|
||
|
||
var patterns = grammar[token];
|
||
patterns = (_.util.type(patterns) === "Array") ? patterns : [patterns];
|
||
|
||
for (var j = 0; j < patterns.length; ++j) {
|
||
var pattern = patterns[j],
|
||
inside = pattern.inside,
|
||
lookbehind = !!pattern.lookbehind,
|
||
greedy = !!pattern.greedy,
|
||
lookbehindLength = 0,
|
||
alias = pattern.alias;
|
||
|
||
if (greedy && !pattern.pattern.global) {
|
||
// Without the global flag, lastIndex won't work
|
||
var flags = pattern.pattern.toString().match(/[imuy]*$/)[0];
|
||
pattern.pattern = RegExp(pattern.pattern.source, flags + "g");
|
||
}
|
||
|
||
pattern = pattern.pattern || pattern;
|
||
|
||
// Don’t cache length as it changes during the loop
|
||
for (var i=0, pos = 0; i<strarr.length; pos += strarr[i].length, ++i) {
|
||
|
||
var str = strarr[i];
|
||
|
||
if (strarr.length > text.length) {
|
||
// Something went terribly wrong, ABORT, ABORT!
|
||
break tokenloop;
|
||
}
|
||
|
||
if (str instanceof Token) {
|
||
continue;
|
||
}
|
||
|
||
pattern.lastIndex = 0;
|
||
|
||
var match = pattern.exec(str),
|
||
delNum = 1;
|
||
|
||
// Greedy patterns can override/remove up to two previously matched tokens
|
||
if (!match && greedy && i != strarr.length - 1) {
|
||
pattern.lastIndex = pos;
|
||
match = pattern.exec(text);
|
||
if (!match) {
|
||
break;
|
||
}
|
||
|
||
var from = match.index + (lookbehind ? match[1].length : 0),
|
||
to = match.index + match[0].length,
|
||
k = i,
|
||
p = pos;
|
||
|
||
for (var len = strarr.length; k < len && p < to; ++k) {
|
||
p += strarr[k].length;
|
||
// Move the index i to the element in strarr that is closest to from
|
||
if (from >= p) {
|
||
++i;
|
||
pos = p;
|
||
}
|
||
}
|
||
|
||
/*
|
||
* If strarr[i] is a Token, then the match starts inside another Token, which is invalid
|
||
* If strarr[k - 1] is greedy we are in conflict with another greedy pattern
|
||
*/
|
||
if (strarr[i] instanceof Token || strarr[k - 1].greedy) {
|
||
continue;
|
||
}
|
||
|
||
// Number of tokens to delete and replace with the new match
|
||
delNum = k - i;
|
||
str = text.slice(pos, p);
|
||
match.index -= pos;
|
||
}
|
||
|
||
if (!match) {
|
||
continue;
|
||
}
|
||
|
||
if(lookbehind) {
|
||
lookbehindLength = match[1].length;
|
||
}
|
||
|
||
var from = match.index + lookbehindLength,
|
||
match = match[0].slice(lookbehindLength),
|
||
to = from + match.length,
|
||
before = str.slice(0, from),
|
||
after = str.slice(to);
|
||
|
||
var args = [i, delNum];
|
||
|
||
if (before) {
|
||
args.push(before);
|
||
}
|
||
|
||
var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);
|
||
|
||
args.push(wrapped);
|
||
|
||
if (after) {
|
||
args.push(after);
|
||
}
|
||
|
||
Array.prototype.splice.apply(strarr, args);
|
||
}
|
||
}
|
||
}
|
||
|
||
return strarr;
|
||
},
|
||
|
||
hooks: {
|
||
all: {},
|
||
|
||
add: function (name, callback) {
|
||
var hooks = _.hooks.all;
|
||
|
||
hooks[name] = hooks[name] || [];
|
||
|
||
hooks[name].push(callback);
|
||
},
|
||
|
||
run: function (name, env) {
|
||
var callbacks = _.hooks.all[name];
|
||
|
||
if (!callbacks || !callbacks.length) {
|
||
return;
|
||
}
|
||
|
||
for (var i=0, callback; callback = callbacks[i++];) {
|
||
callback(env);
|
||
}
|
||
}
|
||
}
|
||
};
|
||
|
||
var Token = _.Token = function(type, content, alias, matchedStr, greedy) {
|
||
this.type = type;
|
||
this.content = content;
|
||
this.alias = alias;
|
||
// Copy of the full string this token was created from
|
||
this.length = (matchedStr || "").length|0;
|
||
this.greedy = !!greedy;
|
||
};
|
||
|
||
Token.stringify = function(o, language, parent) {
|
||
if (typeof o == 'string') {
|
||
return o;
|
||
}
|
||
|
||
if (_.util.type(o) === 'Array') {
|
||
return o.map(function(element) {
|
||
return Token.stringify(element, language, o);
|
||
}).join('');
|
||
}
|
||
|
||
var env = {
|
||
type: o.type,
|
||
content: Token.stringify(o.content, language, parent),
|
||
tag: 'span',
|
||
classes: ['token', o.type],
|
||
attributes: {},
|
||
language: language,
|
||
parent: parent
|
||
};
|
||
|
||
if (env.type == 'comment') {
|
||
env.attributes['spellcheck'] = 'true';
|
||
}
|
||
|
||
if (o.alias) {
|
||
var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];
|
||
Array.prototype.push.apply(env.classes, aliases);
|
||
}
|
||
|
||
_.hooks.run('wrap', env);
|
||
|
||
var attributes = Object.keys(env.attributes).map(function(name) {
|
||
return name + '="' + (env.attributes[name] || '').replace(/"/g, '"') + '"';
|
||
}).join(' ');
|
||
|
||
return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '</' + env.tag + '>';
|
||
|
||
};
|
||
|
||
if (!_self.document) {
|
||
if (!_self.addEventListener) {
|
||
// in Node.js
|
||
return _self.Prism;
|
||
}
|
||
// In worker
|
||
_self.addEventListener('message', function(evt) {
|
||
var message = JSON.parse(evt.data),
|
||
lang = message.language,
|
||
code = message.code,
|
||
immediateClose = message.immediateClose;
|
||
|
||
_self.postMessage(_.highlight(code, _.languages[lang], lang));
|
||
if (immediateClose) {
|
||
_self.close();
|
||
}
|
||
}, false);
|
||
|
||
return _self.Prism;
|
||
}
|
||
|
||
//Get current script and highlight
|
||
var script = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop();
|
||
|
||
if (script) {
|
||
_.filename = script.src;
|
||
|
||
if (document.addEventListener && !script.hasAttribute('data-manual')) {
|
||
if(document.readyState !== "loading") {
|
||
if (window.requestAnimationFrame) {
|
||
window.requestAnimationFrame(_.highlightAll);
|
||
} else {
|
||
window.setTimeout(_.highlightAll, 16);
|
||
}
|
||
}
|
||
else {
|
||
document.addEventListener('DOMContentLoaded', _.highlightAll);
|
||
}
|
||
}
|
||
}
|
||
|
||
return _self.Prism;
|
||
|
||
})();
|
||
|
||
if (typeof module !== 'undefined' && module.exports) {
|
||
module.exports = Prism;
|
||
}
|
||
|
||
// hack for components to work correctly in node.js
|
||
if (typeof global !== 'undefined') {
|
||
global.Prism = Prism;
|
||
}
|
||
|
||
|
||
/* **********************************************
|
||
Begin prism-markup.js
|
||
********************************************** */
|
||
|
||
Prism.languages.markup = {
|
||
'comment': /<!--[\w\W]*?-->/,
|
||
'prolog': /<\?[\w\W]+?\?>/,
|
||
'doctype': /<!DOCTYPE[\w\W]+?>/i,
|
||
'cdata': /<!\[CDATA\[[\w\W]*?]]>/i,
|
||
'tag': {
|
||
pattern: /<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,
|
||
inside: {
|
||
'tag': {
|
||
pattern: /^<\/?[^\s>\/]+/i,
|
||
inside: {
|
||
'punctuation': /^<\/?/,
|
||
'namespace': /^[^\s>\/:]+:/
|
||
}
|
||
},
|
||
'attr-value': {
|
||
pattern: /=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,
|
||
inside: {
|
||
'punctuation': /[=>"']/
|
||
}
|
||
},
|
||
'punctuation': /\/?>/,
|
||
'attr-name': {
|
||
pattern: /[^\s>\/]+/,
|
||
inside: {
|
||
'namespace': /^[^\s>\/:]+:/
|
||
}
|
||
}
|
||
|
||
}
|
||
},
|
||
'entity': /&#?[\da-z]{1,8};/i
|
||
};
|
||
|
||
// Plugin to make entity title show the real entity, idea by Roman Komarov
|
||
Prism.hooks.add('wrap', function(env) {
|
||
|
||
if (env.type === 'entity') {
|
||
env.attributes['title'] = env.content.replace(/&/, '&');
|
||
}
|
||
});
|
||
|
||
Prism.languages.xml = Prism.languages.markup;
|
||
Prism.languages.html = Prism.languages.markup;
|
||
Prism.languages.mathml = Prism.languages.markup;
|
||
Prism.languages.svg = Prism.languages.markup;
|
||
|
||
|
||
/* **********************************************
|
||
Begin prism-css.js
|
||
********************************************** */
|
||
|
||
Prism.languages.css = {
|
||
'comment': /\/\*[\w\W]*?\*\//,
|
||
'atrule': {
|
||
pattern: /@[\w-]+?.*?(;|(?=\s*\{))/i,
|
||
inside: {
|
||
'rule': /@[\w-]+/
|
||
// See rest below
|
||
}
|
||
},
|
||
'url': /url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,
|
||
'selector': /[^\{\}\s][^\{\};]*?(?=\s*\{)/,
|
||
'string': {
|
||
pattern: /("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,
|
||
greedy: true
|
||
},
|
||
'property': /(\b|\B)[\w-]+(?=\s*:)/i,
|
||
'important': /\B!important\b/i,
|
||
'function': /[-a-z0-9]+(?=\()/i,
|
||
'punctuation': /[(){};:]/
|
||
};
|
||
|
||
Prism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);
|
||
|
||
if (Prism.languages.markup) {
|
||
Prism.languages.insertBefore('markup', 'tag', {
|
||
'style': {
|
||
pattern: /(<style[\w\W]*?>)[\w\W]*?(?=<\/style>)/i,
|
||
lookbehind: true,
|
||
inside: Prism.languages.css,
|
||
alias: 'language-css'
|
||
}
|
||
});
|
||
|
||
Prism.languages.insertBefore('inside', 'attr-value', {
|
||
'style-attr': {
|
||
pattern: /\s*style=("|').*?\1/i,
|
||
inside: {
|
||
'attr-name': {
|
||
pattern: /^\s*style/i,
|
||
inside: Prism.languages.markup.tag.inside
|
||
},
|
||
'punctuation': /^\s*=\s*['"]|['"]\s*$/,
|
||
'attr-value': {
|
||
pattern: /.+/i,
|
||
inside: Prism.languages.css
|
||
}
|
||
},
|
||
alias: 'language-css'
|
||
}
|
||
}, Prism.languages.markup.tag);
|
||
}
|
||
|
||
/* **********************************************
|
||
Begin prism-clike.js
|
||
********************************************** */
|
||
|
||
Prism.languages.clike = {
|
||
'comment': [
|
||
{
|
||
pattern: /(^|[^\\])\/\*[\w\W]*?\*\//,
|
||
lookbehind: true
|
||
},
|
||
{
|
||
pattern: /(^|[^\\:])\/\/.*/,
|
||
lookbehind: true
|
||
}
|
||
],
|
||
'string': {
|
||
pattern: /(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
|
||
greedy: true
|
||
},
|
||
'class-name': {
|
||
pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,
|
||
lookbehind: true,
|
||
inside: {
|
||
punctuation: /(\.|\\)/
|
||
}
|
||
},
|
||
'keyword': /\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,
|
||
'boolean': /\b(true|false)\b/,
|
||
'function': /[a-z0-9_]+(?=\()/i,
|
||
'number': /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,
|
||
'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,
|
||
'punctuation': /[{}[\];(),.:]/
|
||
};
|
||
|
||
|
||
/* **********************************************
|
||
Begin prism-javascript.js
|
||
********************************************** */
|
||
|
||
Prism.languages.javascript = Prism.languages.extend('clike', {
|
||
'keyword': /\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,
|
||
'number': /\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,
|
||
// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)
|
||
'function': /[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i,
|
||
'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*\*?|\/|~|\^|%|\.{3}/
|
||
});
|
||
|
||
Prism.languages.insertBefore('javascript', 'keyword', {
|
||
'regex': {
|
||
pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,
|
||
lookbehind: true,
|
||
greedy: true
|
||
}
|
||
});
|
||
|
||
Prism.languages.insertBefore('javascript', 'string', {
|
||
'template-string': {
|
||
pattern: /`(?:\\\\|\\?[^\\])*?`/,
|
||
greedy: true,
|
||
inside: {
|
||
'interpolation': {
|
||
pattern: /\$\{[^}]+\}/,
|
||
inside: {
|
||
'interpolation-punctuation': {
|
||
pattern: /^\$\{|\}$/,
|
||
alias: 'punctuation'
|
||
},
|
||
rest: Prism.languages.javascript
|
||
}
|
||
},
|
||
'string': /[\s\S]+/
|
||
}
|
||
}
|
||
});
|
||
|
||
if (Prism.languages.markup) {
|
||
Prism.languages.insertBefore('markup', 'tag', {
|
||
'script': {
|
||
pattern: /(<script[\w\W]*?>)[\w\W]*?(?=<\/script>)/i,
|
||
lookbehind: true,
|
||
inside: Prism.languages.javascript,
|
||
alias: 'language-javascript'
|
||
}
|
||
});
|
||
}
|
||
|
||
Prism.languages.js = Prism.languages.javascript;
|
||
|
||
/* **********************************************
|
||
Begin prism-file-highlight.js
|
||
********************************************** */
|
||
|
||
(function () {
|
||
if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {
|
||
return;
|
||
}
|
||
|
||
self.Prism.fileHighlight = function() {
|
||
|
||
var Extensions = {
|
||
'js': 'javascript',
|
||
'py': 'python',
|
||
'rb': 'ruby',
|
||
'ps1': 'powershell',
|
||
'psm1': 'powershell',
|
||
'sh': 'bash',
|
||
'bat': 'batch',
|
||
'h': 'c',
|
||
'tex': 'latex'
|
||
};
|
||
|
||
if(Array.prototype.forEach) { // Check to prevent error in IE8
|
||
Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {
|
||
var src = pre.getAttribute('data-src');
|
||
|
||
var language, parent = pre;
|
||
var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i;
|
||
while (parent && !lang.test(parent.className)) {
|
||
parent = parent.parentNode;
|
||
}
|
||
|
||
if (parent) {
|
||
language = (pre.className.match(lang) || [, ''])[1];
|
||
}
|
||
|
||
if (!language) {
|
||
var extension = (src.match(/\.(\w+)$/) || [, ''])[1];
|
||
language = Extensions[extension] || extension;
|
||
}
|
||
|
||
var code = document.createElement('code');
|
||
code.className = 'language-' + language;
|
||
|
||
pre.textContent = '';
|
||
|
||
code.textContent = 'Loading…';
|
||
|
||
pre.appendChild(code);
|
||
|
||
var xhr = new XMLHttpRequest();
|
||
|
||
xhr.open('GET', src, true);
|
||
|
||
xhr.onreadystatechange = function () {
|
||
if (xhr.readyState == 4) {
|
||
|
||
if (xhr.status < 400 && xhr.responseText) {
|
||
code.textContent = xhr.responseText;
|
||
|
||
Prism.highlightElement(code);
|
||
}
|
||
else if (xhr.status >= 400) {
|
||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||
}
|
||
else {
|
||
code.textContent = '✖ Error: File does not exist or is empty';
|
||
}
|
||
}
|
||
};
|
||
|
||
xhr.send(null);
|
||
});
|
||
}
|
||
|
||
};
|
||
|
||
document.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);
|
||
|
||
})();
|
||
|
||
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))
|
||
|
||
/***/ }),
|
||
/* 17 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var Component = __webpack_require__(0)(
|
||
/* script */
|
||
__webpack_require__(5),
|
||
/* template */
|
||
__webpack_require__(24),
|
||
/* scopeId */
|
||
null,
|
||
/* cssModules */
|
||
null
|
||
)
|
||
Component.options.__file = "/Users/phil/Projects/notebooklab/src/cells/code.vue"
|
||
if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key !== "__esModule"})) {console.error("named exports are not supported in *.vue files.")}
|
||
if (Component.options.functional) {console.error("[vue-loader] code.vue: functional components are not supported with templates, they should use render functions.")}
|
||
|
||
/* hot reload */
|
||
if (false) {(function () {
|
||
var hotAPI = require("vue-hot-reload-api")
|
||
hotAPI.install(require("vue"), false)
|
||
if (!hotAPI.compatible) return
|
||
module.hot.accept()
|
||
if (!module.hot.data) {
|
||
hotAPI.createRecord("data-v-3ac4c361", Component.options)
|
||
} else {
|
||
hotAPI.reload("data-v-3ac4c361", Component.options)
|
||
}
|
||
})()}
|
||
|
||
module.exports = Component.exports
|
||
|
||
|
||
/***/ }),
|
||
/* 18 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var Component = __webpack_require__(0)(
|
||
/* script */
|
||
__webpack_require__(7),
|
||
/* template */
|
||
__webpack_require__(28),
|
||
/* scopeId */
|
||
null,
|
||
/* cssModules */
|
||
null
|
||
)
|
||
Component.options.__file = "/Users/phil/Projects/notebooklab/src/cells/markdown.vue"
|
||
if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key !== "__esModule"})) {console.error("named exports are not supported in *.vue files.")}
|
||
if (Component.options.functional) {console.error("[vue-loader] markdown.vue: functional components are not supported with templates, they should use render functions.")}
|
||
|
||
/* hot reload */
|
||
if (false) {(function () {
|
||
var hotAPI = require("vue-hot-reload-api")
|
||
hotAPI.install(require("vue"), false)
|
||
if (!hotAPI.compatible) return
|
||
module.hot.accept()
|
||
if (!module.hot.data) {
|
||
hotAPI.createRecord("data-v-7342b363", Component.options)
|
||
} else {
|
||
hotAPI.reload("data-v-7342b363", Component.options)
|
||
}
|
||
})()}
|
||
|
||
module.exports = Component.exports
|
||
|
||
|
||
/***/ }),
|
||
/* 19 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var Component = __webpack_require__(0)(
|
||
/* script */
|
||
__webpack_require__(8),
|
||
/* template */
|
||
__webpack_require__(25),
|
||
/* scopeId */
|
||
null,
|
||
/* cssModules */
|
||
null
|
||
)
|
||
Component.options.__file = "/Users/phil/Projects/notebooklab/src/cells/output/html.vue"
|
||
if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key !== "__esModule"})) {console.error("named exports are not supported in *.vue files.")}
|
||
if (Component.options.functional) {console.error("[vue-loader] html.vue: functional components are not supported with templates, they should use render functions.")}
|
||
|
||
/* hot reload */
|
||
if (false) {(function () {
|
||
var hotAPI = require("vue-hot-reload-api")
|
||
hotAPI.install(require("vue"), false)
|
||
if (!hotAPI.compatible) return
|
||
module.hot.accept()
|
||
if (!module.hot.data) {
|
||
hotAPI.createRecord("data-v-48ada535", Component.options)
|
||
} else {
|
||
hotAPI.reload("data-v-48ada535", Component.options)
|
||
}
|
||
})()}
|
||
|
||
module.exports = Component.exports
|
||
|
||
|
||
/***/ }),
|
||
/* 20 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var Component = __webpack_require__(0)(
|
||
/* script */
|
||
__webpack_require__(9),
|
||
/* template */
|
||
__webpack_require__(22),
|
||
/* scopeId */
|
||
null,
|
||
/* cssModules */
|
||
null
|
||
)
|
||
Component.options.__file = "/Users/phil/Projects/notebooklab/src/cells/output/image.vue"
|
||
if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key !== "__esModule"})) {console.error("named exports are not supported in *.vue files.")}
|
||
if (Component.options.functional) {console.error("[vue-loader] image.vue: functional components are not supported with templates, they should use render functions.")}
|
||
|
||
/* hot reload */
|
||
if (false) {(function () {
|
||
var hotAPI = require("vue-hot-reload-api")
|
||
hotAPI.install(require("vue"), false)
|
||
if (!hotAPI.compatible) return
|
||
module.hot.accept()
|
||
if (!module.hot.data) {
|
||
hotAPI.createRecord("data-v-09b68c41", Component.options)
|
||
} else {
|
||
hotAPI.reload("data-v-09b68c41", Component.options)
|
||
}
|
||
})()}
|
||
|
||
module.exports = Component.exports
|
||
|
||
|
||
/***/ }),
|
||
/* 21 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var Component = __webpack_require__(0)(
|
||
/* script */
|
||
__webpack_require__(10),
|
||
/* template */
|
||
__webpack_require__(23),
|
||
/* scopeId */
|
||
null,
|
||
/* cssModules */
|
||
null
|
||
)
|
||
Component.options.__file = "/Users/phil/Projects/notebooklab/src/cells/output/index.vue"
|
||
if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key !== "__esModule"})) {console.error("named exports are not supported in *.vue files.")}
|
||
if (Component.options.functional) {console.error("[vue-loader] index.vue: functional components are not supported with templates, they should use render functions.")}
|
||
|
||
/* hot reload */
|
||
if (false) {(function () {
|
||
var hotAPI = require("vue-hot-reload-api")
|
||
hotAPI.install(require("vue"), false)
|
||
if (!hotAPI.compatible) return
|
||
module.hot.accept()
|
||
if (!module.hot.data) {
|
||
hotAPI.createRecord("data-v-0dec7838", Component.options)
|
||
} else {
|
||
hotAPI.reload("data-v-0dec7838", Component.options)
|
||
}
|
||
})()}
|
||
|
||
module.exports = Component.exports
|
||
|
||
|
||
/***/ }),
|
||
/* 22 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
|
||
return _c('div', {
|
||
staticClass: "output"
|
||
}, [_c('prompt'), _vm._v(" "), _c('img', {
|
||
attrs: {
|
||
"src": 'data:' + _vm.outputType + ';base64,' + _vm.rawCode
|
||
}
|
||
})], 1)
|
||
},staticRenderFns: []}
|
||
module.exports.render._withStripped = true
|
||
if (false) {
|
||
module.hot.accept()
|
||
if (module.hot.data) {
|
||
require("vue-hot-reload-api").rerender("data-v-09b68c41", module.exports)
|
||
}
|
||
}
|
||
|
||
/***/ }),
|
||
/* 23 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
|
||
return _c(_vm.componentName, {
|
||
tag: "component",
|
||
attrs: {
|
||
"type": "output",
|
||
"outputType": _vm.outputType,
|
||
"count": _vm.count,
|
||
"raw-code": _vm.rawCode,
|
||
"code-css-class": _vm.codeCssClass
|
||
}
|
||
})
|
||
},staticRenderFns: []}
|
||
module.exports.render._withStripped = true
|
||
if (false) {
|
||
module.hot.accept()
|
||
if (module.hot.data) {
|
||
require("vue-hot-reload-api").rerender("data-v-0dec7838", module.exports)
|
||
}
|
||
}
|
||
|
||
/***/ }),
|
||
/* 24 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
|
||
return _c('div', {
|
||
staticClass: "cell"
|
||
}, [_c('code-cell', {
|
||
attrs: {
|
||
"type": "input",
|
||
"raw-code": _vm.rawInputCode,
|
||
"count": _vm.cell.execution_count,
|
||
"code-css-class": _vm.codeCssClass
|
||
}
|
||
}), _vm._v(" "), (_vm.hasOutput) ? _c('output-cell', {
|
||
attrs: {
|
||
"count": _vm.cell.execution_count,
|
||
"output": _vm.output,
|
||
"code-css-class": _vm.codeCssClass
|
||
}
|
||
}) : _vm._e()], 1)
|
||
},staticRenderFns: []}
|
||
module.exports.render._withStripped = true
|
||
if (false) {
|
||
module.hot.accept()
|
||
if (module.hot.data) {
|
||
require("vue-hot-reload-api").rerender("data-v-3ac4c361", module.exports)
|
||
}
|
||
}
|
||
|
||
/***/ }),
|
||
/* 25 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
|
||
return _c('div', {
|
||
staticClass: "output"
|
||
}, [_c('prompt'), _vm._v(" "), _c('div', {
|
||
domProps: {
|
||
"innerHTML": _vm._s(_vm.rawCode)
|
||
}
|
||
})], 1)
|
||
},staticRenderFns: []}
|
||
module.exports.render._withStripped = true
|
||
if (false) {
|
||
module.hot.accept()
|
||
if (module.hot.data) {
|
||
require("vue-hot-reload-api").rerender("data-v-48ada535", module.exports)
|
||
}
|
||
}
|
||
|
||
/***/ }),
|
||
/* 26 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
|
||
return (_vm.hasNotebook) ? _c('div', _vm._l((_vm.notebook.cells), function(cell, index) {
|
||
return _c(_vm.cellType(cell.cell_type), {
|
||
key: index,
|
||
tag: "component",
|
||
attrs: {
|
||
"cell": cell,
|
||
"code-css-class": _vm.codeCssClass
|
||
}
|
||
})
|
||
})) : _vm._e()
|
||
},staticRenderFns: []}
|
||
module.exports.render._withStripped = true
|
||
if (false) {
|
||
module.hot.accept()
|
||
if (module.hot.data) {
|
||
require("vue-hot-reload-api").rerender("data-v-4cb2b168", module.exports)
|
||
}
|
||
}
|
||
|
||
/***/ }),
|
||
/* 27 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
|
||
return _c('div', {
|
||
staticClass: "prompt"
|
||
}, [(_vm.type && _vm.count) ? _c('span', [_vm._v("\n " + _vm._s(_vm.type) + " [" + _vm._s(_vm.count) + "]:\n ")]) : _vm._e()])
|
||
},staticRenderFns: []}
|
||
module.exports.render._withStripped = true
|
||
if (false) {
|
||
module.hot.accept()
|
||
if (module.hot.data) {
|
||
require("vue-hot-reload-api").rerender("data-v-4f6bf458", module.exports)
|
||
}
|
||
}
|
||
|
||
/***/ }),
|
||
/* 28 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
|
||
return _c('div', {
|
||
staticClass: "cell text-cell"
|
||
}, [_c('prompt'), _vm._v(" "), _c('div', {
|
||
staticClass: "markdown",
|
||
domProps: {
|
||
"innerHTML": _vm._s(_vm.markdown)
|
||
}
|
||
})], 1)
|
||
},staticRenderFns: []}
|
||
module.exports.render._withStripped = true
|
||
if (false) {
|
||
module.hot.accept()
|
||
if (module.hot.data) {
|
||
require("vue-hot-reload-api").rerender("data-v-7342b363", module.exports)
|
||
}
|
||
}
|
||
|
||
/***/ }),
|
||
/* 29 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
|
||
return _c('div', {
|
||
class: _vm.type
|
||
}, [_c('prompt', {
|
||
attrs: {
|
||
"type": _vm.promptType,
|
||
"count": _vm.count
|
||
}
|
||
}), _vm._v(" "), _c('pre', {
|
||
ref: "code",
|
||
staticClass: "language-python",
|
||
class: _vm.codeCssClass,
|
||
domProps: {
|
||
"textContent": _vm._s(_vm.code)
|
||
}
|
||
}, [_vm._v("\n ")])], 1)
|
||
},staticRenderFns: []}
|
||
module.exports.render._withStripped = true
|
||
if (false) {
|
||
module.hot.accept()
|
||
if (module.hot.data) {
|
||
require("vue-hot-reload-api").rerender("data-v-d42105b8", module.exports)
|
||
}
|
||
}
|
||
|
||
/***/ }),
|
||
/* 30 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
var Notebook = __webpack_require__(4);
|
||
|
||
module.exports = {
|
||
install: function install(_vue) {
|
||
_vue.component('notebook-lab', Notebook);
|
||
}
|
||
};
|
||
|
||
/***/ }),
|
||
/* 31 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
/* WEBPACK VAR INJECTION */(function(global) {(function(){
|
||
|
||
if (
|
||
(typeof self === 'undefined' || !self.Prism) &&
|
||
(typeof global === 'undefined' || !global.Prism)
|
||
) {
|
||
return;
|
||
}
|
||
|
||
var options = {};
|
||
Prism.plugins.customClass = {
|
||
map: function map(cm) {
|
||
options.classMap = cm;
|
||
},
|
||
prefix: function prefix(string) {
|
||
options.prefixString = string;
|
||
}
|
||
}
|
||
|
||
Prism.hooks.add('wrap', function (env) {
|
||
if (!options.classMap && !options.prefixString) {
|
||
return;
|
||
}
|
||
env.classes = env.classes.map(function(c) {
|
||
return (options.prefixString || '') + (options.classMap[c] || c);
|
||
});
|
||
});
|
||
|
||
})();
|
||
|
||
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))
|
||
|
||
/***/ }),
|
||
/* 32 */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
|
||
var _Prism$plugins$custom;
|
||
|
||
var _prismjs = __webpack_require__(16);
|
||
|
||
var _prismjs2 = _interopRequireDefault(_prismjs);
|
||
|
||
__webpack_require__(15);
|
||
|
||
__webpack_require__(31);
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||
|
||
_prismjs2.default.plugins.customClass.map((_Prism$plugins$custom = {
|
||
comment: 'c',
|
||
error: 'err',
|
||
operator: 'o',
|
||
constant: 'kc',
|
||
namespace: 'kn',
|
||
keyword: 'k',
|
||
string: 's',
|
||
number: 'm',
|
||
'attr-name': 'na',
|
||
builtin: 'nb'
|
||
}, _defineProperty(_Prism$plugins$custom, 'constant', 'no'), _defineProperty(_Prism$plugins$custom, 'entity', 'ni'), _defineProperty(_Prism$plugins$custom, 'function', 'nf'), _defineProperty(_Prism$plugins$custom, 'tag', 'nt'), _defineProperty(_Prism$plugins$custom, 'variable', 'nv'), _Prism$plugins$custom));
|
||
|
||
exports.default = _prismjs2.default;
|
||
|
||
/***/ })
|
||
/******/ ]);
|
||
}); |