Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/vendor
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2017-03-22 17:08:51 +0300
committerPhil Hughes <me@iamphill.com>2017-03-23 13:52:55 +0300
commite8949a1ee48b5589c1f82d4b8a6b4e20d43d51a3 (patch)
tree553a03d921811e66efc799bbe6a28c3210a6d3d1 /vendor
parent313258fa423f9c3a03e793e2a7bc8686d0757e91 (diff)
Updated notebooklab library
Added error handling [ci skip]
Diffstat (limited to 'vendor')
-rw-r--r--vendor/assets/javascripts/notebooklab.js1805
1 files changed, 1682 insertions, 123 deletions
diff --git a/vendor/assets/javascripts/notebooklab.js b/vendor/assets/javascripts/notebooklab.js
index 06d41f03211..35e845657bd 100644
--- a/vendor/assets/javascripts/notebooklab.js
+++ b/vendor/assets/javascripts/notebooklab.js
@@ -73,7 +73,7 @@ return /******/ (function(modules) { // webpackBootstrap
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 19);
+/******/ return __webpack_require__(__webpack_require__.s = 32);
/******/ })
/************************************************************************/
/******/ ([
@@ -136,9 +136,9 @@ module.exports = function normalizeComponent (
var Component = __webpack_require__(0)(
/* script */
- __webpack_require__(6),
+ __webpack_require__(10),
/* template */
- __webpack_require__(15),
+ __webpack_require__(28),
/* scopeId */
null,
/* cssModules */
@@ -170,9 +170,43 @@ module.exports = Component.exports
var Component = __webpack_require__(0)(
/* script */
- __webpack_require__(7),
+ __webpack_require__(5),
/* template */
- __webpack_require__(14),
+ __webpack_require__(30),
+ /* 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, __webpack_require__) {
+
+var Component = __webpack_require__(0)(
+ /* script */
+ __webpack_require__(11),
+ /* template */
+ __webpack_require__(27),
/* scopeId */
null,
/* cssModules */
@@ -199,7 +233,7 @@ module.exports = Component.exports
/***/ }),
-/* 3 */
+/* 4 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -209,15 +243,34 @@ Object.defineProperty(exports, "__esModule", {
value: true
});
-var _index = __webpack_require__(11);
+var _index = __webpack_require__(2);
var _index2 = _interopRequireDefault(_index);
+var _index3 = __webpack_require__(22);
+
+var _index4 = _interopRequireDefault(_index3);
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+
exports.default = {
components: {
- 'code-cell': _index2.default
+ 'code-cell': _index2.default,
+ 'output-cell': _index4.default
},
props: {
cell: {
@@ -234,46 +287,12 @@ exports.default = {
},
output: function output() {
return this.cell.outputs[0];
- },
- outputType: function outputType() {
- if (!this.output.text) {
- return Object.keys(this.output.data)[0];
- }
- },
- outputText: function outputText() {
- if (this.output.text) {
- return this.output.text.join('');
- } else {
- var output = this.output.data[this.outputType];
-
- if (typeof output === 'array') {
- return output.join('');
- } else if (typeof output === 'string') {
- return output;
- } else {
- return '';
- }
- }
}
}
-}; //
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
+};
/***/ }),
-/* 4 */
+/* 5 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -283,12 +302,44 @@ Object.defineProperty(exports, "__esModule", {
value: true
});
+var _highlight = __webpack_require__(13);
+
+var _highlight2 = _interopRequireDefault(_highlight);
+
+var _xml = __webpack_require__(16);
+
+var _xml2 = _interopRequireDefault(_xml);
+
+var _javascript = __webpack_require__(14);
+
+var _javascript2 = _interopRequireDefault(_javascript);
+
+var _python = __webpack_require__(15);
+
+var _python2 = _interopRequireDefault(_python);
+
var _prompt = __webpack_require__(1);
var _prompt2 = _interopRequireDefault(_prompt);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+_highlight2.default.registerLanguage('xml', _xml2.default); //
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+
+_highlight2.default.registerLanguage('javascript', _javascript2.default);
+_highlight2.default.registerLanguage('python', _python2.default);
+
exports.default = {
components: {
'prompt': _prompt2.default
@@ -298,11 +349,6 @@ exports.default = {
type: Number,
required: false
},
- outputType: {
- type: String,
- required: false,
- default: ''
- },
type: {
type: String,
required: true
@@ -314,43 +360,21 @@ exports.default = {
},
computed: {
code: function code() {
- if (typeof hljs !== 'undefined' && this.promptType === 'In') {
- return hljs.highlightAuto(this.rawCode).value;
- } else {
- return this.rawCode;
- }
+ return this.rawCode;
},
promptType: function promptType() {
var type = this.type.split('put')[0];
return type.charAt(0).toUpperCase() + type.slice(1);;
- },
- isImage: function isImage() {
- if (this.outputType) {
- return this.outputType.indexOf('image/') === 0;
- } else {
- return false;
- }
}
+ },
+ mounted: function mounted() {
+ _highlight2.default.highlightBlock(this.$refs.code);
}
-}; //
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
+};
/***/ }),
-/* 5 */
+/* 6 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -360,7 +384,7 @@ Object.defineProperty(exports, "__esModule", {
value: true
});
-var _marked = __webpack_require__(9);
+var _marked = __webpack_require__(17);
var _marked2 = _interopRequireDefault(_marked);
@@ -409,7 +433,182 @@ exports.default = {
};
/***/ }),
-/* 6 */
+/* 7 */
+/***/ (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
+ }
+}; //
+//
+//
+//
+//
+//
+//
+
+/***/ }),
+/* 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: {
+ outputType: {
+ type: String,
+ required: true
+ },
+ rawCode: {
+ type: String,
+ required: true
+ }
+ },
+ components: {
+ 'prompt': _prompt2.default
+ }
+}; //
+//
+//
+//
+//
+//
+//
+//
+
+/***/ }),
+/* 9 */
+/***/ (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__(20);
+
+var _html2 = _interopRequireDefault(_html);
+
+var _image = __webpack_require__(21);
+
+var _image2 = _interopRequireDefault(_image);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = {
+ props: {
+ 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;
+ }
+ }
+};
+
+/***/ }),
+/* 10 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -441,7 +640,7 @@ exports.default = {
};
/***/ }),
-/* 7 */
+/* 11 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -451,7 +650,7 @@ Object.defineProperty(exports, "__esModule", {
value: true
});
-var _cells = __webpack_require__(8);
+var _cells = __webpack_require__(12);
exports.default = {
components: {
@@ -486,7 +685,7 @@ exports.default = {
//
/***/ }),
-/* 8 */
+/* 12 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -496,7 +695,7 @@ Object.defineProperty(exports, "__esModule", {
value: true
});
-var _markdown = __webpack_require__(12);
+var _markdown = __webpack_require__(19);
Object.defineProperty(exports, 'MarkdownCell', {
enumerable: true,
@@ -505,7 +704,7 @@ Object.defineProperty(exports, 'MarkdownCell', {
}
});
-var _code = __webpack_require__(10);
+var _code = __webpack_require__(18);
Object.defineProperty(exports, 'CodeCell', {
enumerable: true,
@@ -517,7 +716,1239 @@ Object.defineProperty(exports, 'CodeCell', {
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/***/ }),
-/* 9 */
+/* 13 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/*
+Syntax highlighting with language autodetection.
+https://highlightjs.org/
+*/
+
+(function(factory) {
+
+ // Find the global object for export to both the browser and web workers.
+ var globalObject = typeof window === 'object' && window ||
+ typeof self === 'object' && self;
+
+ // Setup highlight.js for different environments. First is Node.js or
+ // CommonJS.
+ if(true) {
+ factory(exports);
+ } else if(globalObject) {
+ // Export hljs globally even when using AMD for cases when this script
+ // is loaded with others that may still expect a global hljs.
+ globalObject.hljs = factory({});
+
+ // Finally register the global hljs with AMD.
+ if(typeof define === 'function' && define.amd) {
+ define([], function() {
+ return globalObject.hljs;
+ });
+ }
+ }
+
+}(function(hljs) {
+ // Convenience variables for build-in objects
+ var ArrayProto = [],
+ objectKeys = Object.keys;
+
+ // Global internal variables used within the highlight.js library.
+ var languages = {},
+ aliases = {};
+
+ // Regular expressions used throughout the highlight.js library.
+ var noHighlightRe = /^(no-?highlight|plain|text)$/i,
+ languagePrefixRe = /\blang(?:uage)?-([\w-]+)\b/i,
+ fixMarkupRe = /((^(<[^>]+>|\t|)+|(?:\n)))/gm;
+
+ var spanEndTag = '</span>';
+
+ // Global options used when within external APIs. This is modified when
+ // calling the `hljs.configure` function.
+ var options = {
+ classPrefix: 'hljs-',
+ tabReplace: null,
+ useBR: false,
+ languages: undefined
+ };
+
+ // Object map that is used to escape some common HTML characters.
+ var escapeRegexMap = {
+ '&': '&amp;',
+ '<': '&lt;',
+ '>': '&gt;'
+ };
+
+ /* Utility functions */
+
+ function escape(value) {
+ return value.replace(/[&<>]/gm, function(character) {
+ return escapeRegexMap[character];
+ });
+ }
+
+ function tag(node) {
+ return node.nodeName.toLowerCase();
+ }
+
+ function testRe(re, lexeme) {
+ var match = re && re.exec(lexeme);
+ return match && match.index === 0;
+ }
+
+ function isNotHighlighted(language) {
+ return noHighlightRe.test(language);
+ }
+
+ function blockLanguage(block) {
+ var i, match, length, _class;
+ var classes = block.className + ' ';
+
+ classes += block.parentNode ? block.parentNode.className : '';
+
+ // language-* takes precedence over non-prefixed class names.
+ match = languagePrefixRe.exec(classes);
+ if (match) {
+ return getLanguage(match[1]) ? match[1] : 'no-highlight';
+ }
+
+ classes = classes.split(/\s+/);
+
+ for (i = 0, length = classes.length; i < length; i++) {
+ _class = classes[i]
+
+ if (isNotHighlighted(_class) || getLanguage(_class)) {
+ return _class;
+ }
+ }
+ }
+
+ function inherit(parent) { // inherit(parent, override_obj, override_obj, ...)
+ var key;
+ var result = {};
+ var objects = Array.prototype.slice.call(arguments, 1);
+
+ for (key in parent)
+ result[key] = parent[key];
+ objects.forEach(function(obj) {
+ for (key in obj)
+ result[key] = obj[key];
+ });
+ return result;
+ }
+
+ /* Stream merging */
+
+ function nodeStream(node) {
+ var result = [];
+ (function _nodeStream(node, offset) {
+ for (var child = node.firstChild; child; child = child.nextSibling) {
+ if (child.nodeType === 3)
+ offset += child.nodeValue.length;
+ else if (child.nodeType === 1) {
+ result.push({
+ event: 'start',
+ offset: offset,
+ node: child
+ });
+ offset = _nodeStream(child, offset);
+ // Prevent void elements from having an end tag that would actually
+ // double them in the output. There are more void elements in HTML
+ // but we list only those realistically expected in code display.
+ if (!tag(child).match(/br|hr|img|input/)) {
+ result.push({
+ event: 'stop',
+ offset: offset,
+ node: child
+ });
+ }
+ }
+ }
+ return offset;
+ })(node, 0);
+ return result;
+ }
+
+ function mergeStreams(original, highlighted, value) {
+ var processed = 0;
+ var result = '';
+ var nodeStack = [];
+
+ function selectStream() {
+ if (!original.length || !highlighted.length) {
+ return original.length ? original : highlighted;
+ }
+ if (original[0].offset !== highlighted[0].offset) {
+ return (original[0].offset < highlighted[0].offset) ? original : highlighted;
+ }
+
+ /*
+ To avoid starting the stream just before it should stop the order is
+ ensured that original always starts first and closes last:
+
+ if (event1 == 'start' && event2 == 'start')
+ return original;
+ if (event1 == 'start' && event2 == 'stop')
+ return highlighted;
+ if (event1 == 'stop' && event2 == 'start')
+ return original;
+ if (event1 == 'stop' && event2 == 'stop')
+ return highlighted;
+
+ ... which is collapsed to:
+ */
+ return highlighted[0].event === 'start' ? original : highlighted;
+ }
+
+ function open(node) {
+ function attr_str(a) {return ' ' + a.nodeName + '="' + escape(a.value) + '"';}
+ result += '<' + tag(node) + ArrayProto.map.call(node.attributes, attr_str).join('') + '>';
+ }
+
+ function close(node) {
+ result += '</' + tag(node) + '>';
+ }
+
+ function render(event) {
+ (event.event === 'start' ? open : close)(event.node);
+ }
+
+ while (original.length || highlighted.length) {
+ var stream = selectStream();
+ result += escape(value.substring(processed, stream[0].offset));
+ processed = stream[0].offset;
+ if (stream === original) {
+ /*
+ On any opening or closing tag of the original markup we first close
+ the entire highlighted node stack, then render the original tag along
+ with all the following original tags at the same offset and then
+ reopen all the tags on the highlighted stack.
+ */
+ nodeStack.reverse().forEach(close);
+ do {
+ render(stream.splice(0, 1)[0]);
+ stream = selectStream();
+ } while (stream === original && stream.length && stream[0].offset === processed);
+ nodeStack.reverse().forEach(open);
+ } else {
+ if (stream[0].event === 'start') {
+ nodeStack.push(stream[0].node);
+ } else {
+ nodeStack.pop();
+ }
+ render(stream.splice(0, 1)[0]);
+ }
+ }
+ return result + escape(value.substr(processed));
+ }
+
+ /* Initialization */
+
+ function expand_mode(mode) {
+ if (mode.variants && !mode.cached_variants) {
+ mode.cached_variants = mode.variants.map(function(variant) {
+ return inherit(mode, {variants: null}, variant);
+ });
+ }
+ return mode.cached_variants || (mode.endsWithParent && [inherit(mode)]) || [mode];
+ }
+
+ function compileLanguage(language) {
+
+ function reStr(re) {
+ return (re && re.source) || re;
+ }
+
+ function langRe(value, global) {
+ return new RegExp(
+ reStr(value),
+ 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '')
+ );
+ }
+
+ function compileMode(mode, parent) {
+ if (mode.compiled)
+ return;
+ mode.compiled = true;
+
+ mode.keywords = mode.keywords || mode.beginKeywords;
+ if (mode.keywords) {
+ var compiled_keywords = {};
+
+ var flatten = function(className, str) {
+ if (language.case_insensitive) {
+ str = str.toLowerCase();
+ }
+ str.split(' ').forEach(function(kw) {
+ var pair = kw.split('|');
+ compiled_keywords[pair[0]] = [className, pair[1] ? Number(pair[1]) : 1];
+ });
+ };
+
+ if (typeof mode.keywords === 'string') { // string
+ flatten('keyword', mode.keywords);
+ } else {
+ objectKeys(mode.keywords).forEach(function (className) {
+ flatten(className, mode.keywords[className]);
+ });
+ }
+ mode.keywords = compiled_keywords;
+ }
+ mode.lexemesRe = langRe(mode.lexemes || /\w+/, true);
+
+ if (parent) {
+ if (mode.beginKeywords) {
+ mode.begin = '\\b(' + mode.beginKeywords.split(' ').join('|') + ')\\b';
+ }
+ if (!mode.begin)
+ mode.begin = /\B|\b/;
+ mode.beginRe = langRe(mode.begin);
+ if (!mode.end && !mode.endsWithParent)
+ mode.end = /\B|\b/;
+ if (mode.end)
+ mode.endRe = langRe(mode.end);
+ mode.terminator_end = reStr(mode.end) || '';
+ if (mode.endsWithParent && parent.terminator_end)
+ mode.terminator_end += (mode.end ? '|' : '') + parent.terminator_end;
+ }
+ if (mode.illegal)
+ mode.illegalRe = langRe(mode.illegal);
+ if (mode.relevance == null)
+ mode.relevance = 1;
+ if (!mode.contains) {
+ mode.contains = [];
+ }
+ mode.contains = Array.prototype.concat.apply([], mode.contains.map(function(c) {
+ return expand_mode(c === 'self' ? mode : c)
+ }));
+ mode.contains.forEach(function(c) {compileMode(c, mode);});
+
+ if (mode.starts) {
+ compileMode(mode.starts, parent);
+ }
+
+ var terminators =
+ mode.contains.map(function(c) {
+ return c.beginKeywords ? '\\.?(' + c.begin + ')\\.?' : c.begin;
+ })
+ .concat([mode.terminator_end, mode.illegal])
+ .map(reStr)
+ .filter(Boolean);
+ mode.terminators = terminators.length ? langRe(terminators.join('|'), true) : {exec: function(/*s*/) {return null;}};
+ }
+
+ compileMode(language);
+ }
+
+ /*
+ Core highlighting function. Accepts a language name, or an alias, and a
+ string with the code to highlight. Returns an object with the following
+ properties:
+
+ - relevance (int)
+ - value (an HTML string with highlighting markup)
+
+ */
+ function highlight(name, value, ignore_illegals, continuation) {
+
+ function subMode(lexeme, mode) {
+ var i, length;
+
+ for (i = 0, length = mode.contains.length; i < length; i++) {
+ if (testRe(mode.contains[i].beginRe, lexeme)) {
+ return mode.contains[i];
+ }
+ }
+ }
+
+ function endOfMode(mode, lexeme) {
+ if (testRe(mode.endRe, lexeme)) {
+ while (mode.endsParent && mode.parent) {
+ mode = mode.parent;
+ }
+ return mode;
+ }
+ if (mode.endsWithParent) {
+ return endOfMode(mode.parent, lexeme);
+ }
+ }
+
+ function isIllegal(lexeme, mode) {
+ return !ignore_illegals && testRe(mode.illegalRe, lexeme);
+ }
+
+ function keywordMatch(mode, match) {
+ var match_str = language.case_insensitive ? match[0].toLowerCase() : match[0];
+ return mode.keywords.hasOwnProperty(match_str) && mode.keywords[match_str];
+ }
+
+ function buildSpan(classname, insideSpan, leaveOpen, noPrefix) {
+ var classPrefix = noPrefix ? '' : options.classPrefix,
+ openSpan = '<span class="' + classPrefix,
+ closeSpan = leaveOpen ? '' : spanEndTag
+
+ openSpan += classname + '">';
+
+ return openSpan + insideSpan + closeSpan;
+ }
+
+ function processKeywords() {
+ var keyword_match, last_index, match, result;
+
+ if (!top.keywords)
+ return escape(mode_buffer);
+
+ result = '';
+ last_index = 0;
+ top.lexemesRe.lastIndex = 0;
+ match = top.lexemesRe.exec(mode_buffer);
+
+ while (match) {
+ result += escape(mode_buffer.substring(last_index, match.index));
+ keyword_match = keywordMatch(top, match);
+ if (keyword_match) {
+ relevance += keyword_match[1];
+ result += buildSpan(keyword_match[0], escape(match[0]));
+ } else {
+ result += escape(match[0]);
+ }
+ last_index = top.lexemesRe.lastIndex;
+ match = top.lexemesRe.exec(mode_buffer);
+ }
+ return result + escape(mode_buffer.substr(last_index));
+ }
+
+ function processSubLanguage() {
+ var explicit = typeof top.subLanguage === 'string';
+ if (explicit && !languages[top.subLanguage]) {
+ return escape(mode_buffer);
+ }
+
+ var result = explicit ?
+ highlight(top.subLanguage, mode_buffer, true, continuations[top.subLanguage]) :
+ highlightAuto(mode_buffer, top.subLanguage.length ? top.subLanguage : undefined);
+
+ // Counting embedded language score towards the host language may be disabled
+ // with zeroing the containing mode relevance. Usecase in point is Markdown that
+ // allows XML everywhere and makes every XML snippet to have a much larger Markdown
+ // score.
+ if (top.relevance > 0) {
+ relevance += result.relevance;
+ }
+ if (explicit) {
+ continuations[top.subLanguage] = result.top;
+ }
+ return buildSpan(result.language, result.value, false, true);
+ }
+
+ function processBuffer() {
+ result += (top.subLanguage != null ? processSubLanguage() : processKeywords());
+ mode_buffer = '';
+ }
+
+ function startNewMode(mode) {
+ result += mode.className? buildSpan(mode.className, '', true): '';
+ top = Object.create(mode, {parent: {value: top}});
+ }
+
+ function processLexeme(buffer, lexeme) {
+
+ mode_buffer += buffer;
+
+ if (lexeme == null) {
+ processBuffer();
+ return 0;
+ }
+
+ var new_mode = subMode(lexeme, top);
+ if (new_mode) {
+ if (new_mode.skip) {
+ mode_buffer += lexeme;
+ } else {
+ if (new_mode.excludeBegin) {
+ mode_buffer += lexeme;
+ }
+ processBuffer();
+ if (!new_mode.returnBegin && !new_mode.excludeBegin) {
+ mode_buffer = lexeme;
+ }
+ }
+ startNewMode(new_mode, lexeme);
+ return new_mode.returnBegin ? 0 : lexeme.length;
+ }
+
+ var end_mode = endOfMode(top, lexeme);
+ if (end_mode) {
+ var origin = top;
+ if (origin.skip) {
+ mode_buffer += lexeme;
+ } else {
+ if (!(origin.returnEnd || origin.excludeEnd)) {
+ mode_buffer += lexeme;
+ }
+ processBuffer();
+ if (origin.excludeEnd) {
+ mode_buffer = lexeme;
+ }
+ }
+ do {
+ if (top.className) {
+ result += spanEndTag;
+ }
+ if (!top.skip) {
+ relevance += top.relevance;
+ }
+ top = top.parent;
+ } while (top !== end_mode.parent);
+ if (end_mode.starts) {
+ startNewMode(end_mode.starts, '');
+ }
+ return origin.returnEnd ? 0 : lexeme.length;
+ }
+
+ if (isIllegal(lexeme, top))
+ throw new Error('Illegal lexeme "' + lexeme + '" for mode "' + (top.className || '<unnamed>') + '"');
+
+ /*
+ Parser should not reach this point as all types of lexemes should be caught
+ earlier, but if it does due to some bug make sure it advances at least one
+ character forward to prevent infinite looping.
+ */
+ mode_buffer += lexeme;
+ return lexeme.length || 1;
+ }
+
+ var language = getLanguage(name);
+ if (!language) {
+ throw new Error('Unknown language: "' + name + '"');
+ }
+
+ compileLanguage(language);
+ var top = continuation || language;
+ var continuations = {}; // keep continuations for sub-languages
+ var result = '', current;
+ for(current = top; current !== language; current = current.parent) {
+ if (current.className) {
+ result = buildSpan(current.className, '', true) + result;
+ }
+ }
+ var mode_buffer = '';
+ var relevance = 0;
+ try {
+ var match, count, index = 0;
+ while (true) {
+ top.terminators.lastIndex = index;
+ match = top.terminators.exec(value);
+ if (!match)
+ break;
+ count = processLexeme(value.substring(index, match.index), match[0]);
+ index = match.index + count;
+ }
+ processLexeme(value.substr(index));
+ for(current = top; current.parent; current = current.parent) { // close dangling modes
+ if (current.className) {
+ result += spanEndTag;
+ }
+ }
+ return {
+ relevance: relevance,
+ value: result,
+ language: name,
+ top: top
+ };
+ } catch (e) {
+ if (e.message && e.message.indexOf('Illegal') !== -1) {
+ return {
+ relevance: 0,
+ value: escape(value)
+ };
+ } else {
+ throw e;
+ }
+ }
+ }
+
+ /*
+ Highlighting with language detection. Accepts a string with the code to
+ highlight. Returns an object with the following properties:
+
+ - language (detected language)
+ - relevance (int)
+ - value (an HTML string with highlighting markup)
+ - second_best (object with the same structure for second-best heuristically
+ detected language, may be absent)
+
+ */
+ function highlightAuto(text, languageSubset) {
+ languageSubset = languageSubset || options.languages || objectKeys(languages);
+ var result = {
+ relevance: 0,
+ value: escape(text)
+ };
+ var second_best = result;
+ languageSubset.filter(getLanguage).forEach(function(name) {
+ var current = highlight(name, text, false);
+ current.language = name;
+ if (current.relevance > second_best.relevance) {
+ second_best = current;
+ }
+ if (current.relevance > result.relevance) {
+ second_best = result;
+ result = current;
+ }
+ });
+ if (second_best.language) {
+ result.second_best = second_best;
+ }
+ return result;
+ }
+
+ /*
+ Post-processing of the highlighted markup:
+
+ - replace TABs with something more useful
+ - replace real line-breaks with '<br>' for non-pre containers
+
+ */
+ function fixMarkup(value) {
+ return !(options.tabReplace || options.useBR)
+ ? value
+ : value.replace(fixMarkupRe, function(match, p1) {
+ if (options.useBR && match === '\n') {
+ return '<br>';
+ } else if (options.tabReplace) {
+ return p1.replace(/\t/g, options.tabReplace);
+ }
+ return '';
+ });
+ }
+
+ function buildClassName(prevClassName, currentLang, resultLang) {
+ var language = currentLang ? aliases[currentLang] : resultLang,
+ result = [prevClassName.trim()];
+
+ if (!prevClassName.match(/\bhljs\b/)) {
+ result.push('hljs');
+ }
+
+ if (prevClassName.indexOf(language) === -1) {
+ result.push(language);
+ }
+
+ return result.join(' ').trim();
+ }
+
+ /*
+ Applies highlighting to a DOM node containing code. Accepts a DOM node and
+ two optional parameters for fixMarkup.
+ */
+ function highlightBlock(block) {
+ var node, originalStream, result, resultNode, text;
+ var language = blockLanguage(block);
+
+ if (isNotHighlighted(language))
+ return;
+
+ if (options.useBR) {
+ node = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
+ node.innerHTML = block.innerHTML.replace(/\n/g, '').replace(/<br[ \/]*>/g, '\n');
+ } else {
+ node = block;
+ }
+ text = node.textContent;
+ result = language ? highlight(language, text, true) : highlightAuto(text);
+
+ originalStream = nodeStream(node);
+ if (originalStream.length) {
+ resultNode = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
+ resultNode.innerHTML = result.value;
+ result.value = mergeStreams(originalStream, nodeStream(resultNode), text);
+ }
+ result.value = fixMarkup(result.value);
+
+ block.innerHTML = result.value;
+ block.className = buildClassName(block.className, language, result.language);
+ block.result = {
+ language: result.language,
+ re: result.relevance
+ };
+ if (result.second_best) {
+ block.second_best = {
+ language: result.second_best.language,
+ re: result.second_best.relevance
+ };
+ }
+ }
+
+ /*
+ Updates highlight.js global options with values passed in the form of an object.
+ */
+ function configure(user_options) {
+ options = inherit(options, user_options);
+ }
+
+ /*
+ Applies highlighting to all <pre><code>..</code></pre> blocks on a page.
+ */
+ function initHighlighting() {
+ if (initHighlighting.called)
+ return;
+ initHighlighting.called = true;
+
+ var blocks = document.querySelectorAll('pre code');
+ ArrayProto.forEach.call(blocks, highlightBlock);
+ }
+
+ /*
+ Attaches highlighting to the page load event.
+ */
+ function initHighlightingOnLoad() {
+ addEventListener('DOMContentLoaded', initHighlighting, false);
+ addEventListener('load', initHighlighting, false);
+ }
+
+ function registerLanguage(name, language) {
+ var lang = languages[name] = language(hljs);
+ if (lang.aliases) {
+ lang.aliases.forEach(function(alias) {aliases[alias] = name;});
+ }
+ }
+
+ function listLanguages() {
+ return objectKeys(languages);
+ }
+
+ function getLanguage(name) {
+ name = (name || '').toLowerCase();
+ return languages[name] || languages[aliases[name]];
+ }
+
+ /* Interface definition */
+
+ hljs.highlight = highlight;
+ hljs.highlightAuto = highlightAuto;
+ hljs.fixMarkup = fixMarkup;
+ hljs.highlightBlock = highlightBlock;
+ hljs.configure = configure;
+ hljs.initHighlighting = initHighlighting;
+ hljs.initHighlightingOnLoad = initHighlightingOnLoad;
+ hljs.registerLanguage = registerLanguage;
+ hljs.listLanguages = listLanguages;
+ hljs.getLanguage = getLanguage;
+ hljs.inherit = inherit;
+
+ // Common regexps
+ hljs.IDENT_RE = '[a-zA-Z]\\w*';
+ hljs.UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\w*';
+ hljs.NUMBER_RE = '\\b\\d+(\\.\\d+)?';
+ hljs.C_NUMBER_RE = '(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)'; // 0x..., 0..., decimal, float
+ hljs.BINARY_NUMBER_RE = '\\b(0b[01]+)'; // 0b...
+ hljs.RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~';
+
+ // Common modes
+ hljs.BACKSLASH_ESCAPE = {
+ begin: '\\\\[\\s\\S]', relevance: 0
+ };
+ hljs.APOS_STRING_MODE = {
+ className: 'string',
+ begin: '\'', end: '\'',
+ illegal: '\\n',
+ contains: [hljs.BACKSLASH_ESCAPE]
+ };
+ hljs.QUOTE_STRING_MODE = {
+ className: 'string',
+ begin: '"', end: '"',
+ illegal: '\\n',
+ contains: [hljs.BACKSLASH_ESCAPE]
+ };
+ hljs.PHRASAL_WORDS_MODE = {
+ begin: /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\b/
+ };
+ hljs.COMMENT = function (begin, end, inherits) {
+ var mode = hljs.inherit(
+ {
+ className: 'comment',
+ begin: begin, end: end,
+ contains: []
+ },
+ inherits || {}
+ );
+ mode.contains.push(hljs.PHRASAL_WORDS_MODE);
+ mode.contains.push({
+ className: 'doctag',
+ begin: '(?:TODO|FIXME|NOTE|BUG|XXX):',
+ relevance: 0
+ });
+ return mode;
+ };
+ hljs.C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$');
+ hljs.C_BLOCK_COMMENT_MODE = hljs.COMMENT('/\\*', '\\*/');
+ hljs.HASH_COMMENT_MODE = hljs.COMMENT('#', '$');
+ hljs.NUMBER_MODE = {
+ className: 'number',
+ begin: hljs.NUMBER_RE,
+ relevance: 0
+ };
+ hljs.C_NUMBER_MODE = {
+ className: 'number',
+ begin: hljs.C_NUMBER_RE,
+ relevance: 0
+ };
+ hljs.BINARY_NUMBER_MODE = {
+ className: 'number',
+ begin: hljs.BINARY_NUMBER_RE,
+ relevance: 0
+ };
+ hljs.CSS_NUMBER_MODE = {
+ className: 'number',
+ begin: hljs.NUMBER_RE + '(' +
+ '%|em|ex|ch|rem' +
+ '|vw|vh|vmin|vmax' +
+ '|cm|mm|in|pt|pc|px' +
+ '|deg|grad|rad|turn' +
+ '|s|ms' +
+ '|Hz|kHz' +
+ '|dpi|dpcm|dppx' +
+ ')?',
+ relevance: 0
+ };
+ hljs.REGEXP_MODE = {
+ className: 'regexp',
+ begin: /\//, end: /\/[gimuy]*/,
+ illegal: /\n/,
+ contains: [
+ hljs.BACKSLASH_ESCAPE,
+ {
+ begin: /\[/, end: /\]/,
+ relevance: 0,
+ contains: [hljs.BACKSLASH_ESCAPE]
+ }
+ ]
+ };
+ hljs.TITLE_MODE = {
+ className: 'title',
+ begin: hljs.IDENT_RE,
+ relevance: 0
+ };
+ hljs.UNDERSCORE_TITLE_MODE = {
+ className: 'title',
+ begin: hljs.UNDERSCORE_IDENT_RE,
+ relevance: 0
+ };
+ hljs.METHOD_GUARD = {
+ // excludes method names from keyword processing
+ begin: '\\.\\s*' + hljs.UNDERSCORE_IDENT_RE,
+ relevance: 0
+ };
+
+ return hljs;
+}));
+
+
+/***/ }),
+/* 14 */
+/***/ (function(module, exports) {
+
+module.exports = function(hljs) {
+ var IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';
+ var KEYWORDS = {
+ keyword:
+ 'in of if for while finally var new function do return void else break catch ' +
+ 'instanceof with throw case default try this switch continue typeof delete ' +
+ 'let yield const export super debugger as async await static ' +
+ // ECMAScript 6 modules import
+ 'import from as'
+ ,
+ literal:
+ 'true false null undefined NaN Infinity',
+ built_in:
+ 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +
+ 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +
+ 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +
+ 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +
+ 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +
+ 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +
+ 'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +
+ 'Promise'
+ };
+ var EXPRESSIONS;
+ var NUMBER = {
+ className: 'number',
+ variants: [
+ { begin: '\\b(0[bB][01]+)' },
+ { begin: '\\b(0[oO][0-7]+)' },
+ { begin: hljs.C_NUMBER_RE }
+ ],
+ relevance: 0
+ };
+ var SUBST = {
+ className: 'subst',
+ begin: '\\$\\{', end: '\\}',
+ keywords: KEYWORDS,
+ contains: [] // defined later
+ };
+ var TEMPLATE_STRING = {
+ className: 'string',
+ begin: '`', end: '`',
+ contains: [
+ hljs.BACKSLASH_ESCAPE,
+ SUBST
+ ]
+ };
+ SUBST.contains = [
+ hljs.APOS_STRING_MODE,
+ hljs.QUOTE_STRING_MODE,
+ TEMPLATE_STRING,
+ NUMBER,
+ hljs.REGEXP_MODE
+ ]
+ var PARAMS_CONTAINS = SUBST.contains.concat([
+ hljs.C_BLOCK_COMMENT_MODE,
+ hljs.C_LINE_COMMENT_MODE
+ ]);
+
+ return {
+ aliases: ['js', 'jsx'],
+ keywords: KEYWORDS,
+ contains: [
+ {
+ className: 'meta',
+ relevance: 10,
+ begin: /^\s*['"]use (strict|asm)['"]/
+ },
+ {
+ className: 'meta',
+ begin: /^#!/, end: /$/
+ },
+ hljs.APOS_STRING_MODE,
+ hljs.QUOTE_STRING_MODE,
+ TEMPLATE_STRING,
+ hljs.C_LINE_COMMENT_MODE,
+ hljs.C_BLOCK_COMMENT_MODE,
+ NUMBER,
+ { // object attr container
+ begin: /[{,]\s*/, relevance: 0,
+ contains: [
+ {
+ begin: IDENT_RE + '\\s*:', returnBegin: true,
+ relevance: 0,
+ contains: [{className: 'attr', begin: IDENT_RE, relevance: 0}]
+ }
+ ]
+ },
+ { // "value" container
+ begin: '(' + hljs.RE_STARTERS_RE + '|\\b(case|return|throw)\\b)\\s*',
+ keywords: 'return throw case',
+ contains: [
+ hljs.C_LINE_COMMENT_MODE,
+ hljs.C_BLOCK_COMMENT_MODE,
+ hljs.REGEXP_MODE,
+ {
+ className: 'function',
+ begin: '(\\(.*?\\)|' + IDENT_RE + ')\\s*=>', returnBegin: true,
+ end: '\\s*=>',
+ contains: [
+ {
+ className: 'params',
+ variants: [
+ {
+ begin: IDENT_RE
+ },
+ {
+ begin: /\(\s*\)/,
+ },
+ {
+ begin: /\(/, end: /\)/,
+ excludeBegin: true, excludeEnd: true,
+ keywords: KEYWORDS,
+ contains: PARAMS_CONTAINS
+ }
+ ]
+ }
+ ]
+ },
+ { // E4X / JSX
+ begin: /</, end: /(\/\w+|\w+\/)>/,
+ subLanguage: 'xml',
+ contains: [
+ {begin: /<\w+\s*\/>/, skip: true},
+ {
+ begin: /<\w+/, end: /(\/\w+|\w+\/)>/, skip: true,
+ contains: [
+ {begin: /<\w+\s*\/>/, skip: true},
+ 'self'
+ ]
+ }
+ ]
+ }
+ ],
+ relevance: 0
+ },
+ {
+ className: 'function',
+ beginKeywords: 'function', end: /\{/, excludeEnd: true,
+ contains: [
+ hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE}),
+ {
+ className: 'params',
+ begin: /\(/, end: /\)/,
+ excludeBegin: true,
+ excludeEnd: true,
+ contains: PARAMS_CONTAINS
+ }
+ ],
+ illegal: /\[|%/
+ },
+ {
+ begin: /\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`
+ },
+ hljs.METHOD_GUARD,
+ { // ES6 class
+ className: 'class',
+ beginKeywords: 'class', end: /[{;=]/, excludeEnd: true,
+ illegal: /[:"\[\]]/,
+ contains: [
+ {beginKeywords: 'extends'},
+ hljs.UNDERSCORE_TITLE_MODE
+ ]
+ },
+ {
+ beginKeywords: 'constructor', end: /\{/, excludeEnd: true
+ }
+ ],
+ illegal: /#(?!!)/
+ };
+};
+
+/***/ }),
+/* 15 */
+/***/ (function(module, exports) {
+
+module.exports = function(hljs) {
+ var KEYWORDS = {
+ keyword:
+ 'and elif is global as in if from raise for except finally print import pass return ' +
+ 'exec else break not with class assert yield try while continue del or def lambda ' +
+ 'async await nonlocal|10 None True False',
+ built_in:
+ 'Ellipsis NotImplemented'
+ };
+ var PROMPT = {
+ className: 'meta', begin: /^(>>>|\.\.\.) /
+ };
+ var SUBST = {
+ className: 'subst',
+ begin: /\{/, end: /\}/,
+ keywords: KEYWORDS,
+ illegal: /#/
+ };
+ var STRING = {
+ className: 'string',
+ contains: [hljs.BACKSLASH_ESCAPE],
+ variants: [
+ {
+ begin: /(u|b)?r?'''/, end: /'''/,
+ contains: [PROMPT],
+ relevance: 10
+ },
+ {
+ begin: /(u|b)?r?"""/, end: /"""/,
+ contains: [PROMPT],
+ relevance: 10
+ },
+ {
+ begin: /(fr|rf|f)'''/, end: /'''/,
+ contains: [PROMPT, SUBST]
+ },
+ {
+ begin: /(fr|rf|f)"""/, end: /"""/,
+ contains: [PROMPT, SUBST]
+ },
+ {
+ begin: /(u|r|ur)'/, end: /'/,
+ relevance: 10
+ },
+ {
+ begin: /(u|r|ur)"/, end: /"/,
+ relevance: 10
+ },
+ {
+ begin: /(b|br)'/, end: /'/
+ },
+ {
+ begin: /(b|br)"/, end: /"/
+ },
+ {
+ begin: /(fr|rf|f)'/, end: /'/,
+ contains: [SUBST]
+ },
+ {
+ begin: /(fr|rf|f)"/, end: /"/,
+ contains: [SUBST]
+ },
+ hljs.APOS_STRING_MODE,
+ hljs.QUOTE_STRING_MODE
+ ]
+ };
+ var NUMBER = {
+ className: 'number', relevance: 0,
+ variants: [
+ {begin: hljs.BINARY_NUMBER_RE + '[lLjJ]?'},
+ {begin: '\\b(0o[0-7]+)[lLjJ]?'},
+ {begin: hljs.C_NUMBER_RE + '[lLjJ]?'}
+ ]
+ };
+ var PARAMS = {
+ className: 'params',
+ begin: /\(/, end: /\)/,
+ contains: ['self', PROMPT, NUMBER, STRING]
+ };
+ SUBST.contains = [STRING, NUMBER, PROMPT];
+ return {
+ aliases: ['py', 'gyp'],
+ keywords: KEYWORDS,
+ illegal: /(<\/|->|\?)|=>/,
+ contains: [
+ PROMPT,
+ NUMBER,
+ STRING,
+ hljs.HASH_COMMENT_MODE,
+ {
+ variants: [
+ {className: 'function', beginKeywords: 'def'},
+ {className: 'class', beginKeywords: 'class'}
+ ],
+ end: /:/,
+ illegal: /[${=;\n,]/,
+ contains: [
+ hljs.UNDERSCORE_TITLE_MODE,
+ PARAMS,
+ {
+ begin: /->/, endsWithParent: true,
+ keywords: 'None'
+ }
+ ]
+ },
+ {
+ className: 'meta',
+ begin: /^[\t ]*@/, end: /$/
+ },
+ {
+ begin: /\b(print|exec)\(/ // don’t highlight keywords-turned-functions in Python 3
+ }
+ ]
+ };
+};
+
+/***/ }),
+/* 16 */
+/***/ (function(module, exports) {
+
+module.exports = function(hljs) {
+ var XML_IDENT_RE = '[A-Za-z0-9\\._:-]+';
+ var TAG_INTERNALS = {
+ endsWithParent: true,
+ illegal: /</,
+ relevance: 0,
+ contains: [
+ {
+ className: 'attr',
+ begin: XML_IDENT_RE,
+ relevance: 0
+ },
+ {
+ begin: /=\s*/,
+ relevance: 0,
+ contains: [
+ {
+ className: 'string',
+ endsParent: true,
+ variants: [
+ {begin: /"/, end: /"/},
+ {begin: /'/, end: /'/},
+ {begin: /[^\s"'=<>`]+/}
+ ]
+ }
+ ]
+ }
+ ]
+ };
+ return {
+ aliases: ['html', 'xhtml', 'rss', 'atom', 'xjb', 'xsd', 'xsl', 'plist'],
+ case_insensitive: true,
+ contains: [
+ {
+ className: 'meta',
+ begin: '<!DOCTYPE', end: '>',
+ relevance: 10,
+ contains: [{begin: '\\[', end: '\\]'}]
+ },
+ hljs.COMMENT(
+ '<!--',
+ '-->',
+ {
+ relevance: 10
+ }
+ ),
+ {
+ begin: '<\\!\\[CDATA\\[', end: '\\]\\]>',
+ relevance: 10
+ },
+ {
+ begin: /<\?(php)?/, end: /\?>/,
+ subLanguage: 'php',
+ contains: [{begin: '/\\*', end: '\\*/', skip: true}]
+ },
+ {
+ className: 'tag',
+ /*
+ The lookahead pattern (?=...) ensures that 'begin' only matches
+ '<style' as a single word, followed by a whitespace or an
+ ending braket. The '$' is needed for the lexeme to be recognized
+ by hljs.subMode() that tests lexemes outside the stream.
+ */
+ begin: '<style(?=\\s|>|$)', end: '>',
+ keywords: {name: 'style'},
+ contains: [TAG_INTERNALS],
+ starts: {
+ end: '</style>', returnEnd: true,
+ subLanguage: ['css', 'xml']
+ }
+ },
+ {
+ className: 'tag',
+ // See the comment in the <style tag about the lookahead pattern
+ begin: '<script(?=\\s|>|$)', end: '>',
+ keywords: {name: 'script'},
+ contains: [TAG_INTERNALS],
+ starts: {
+ end: '\<\/script\>', returnEnd: true,
+ subLanguage: ['actionscript', 'javascript', 'handlebars', 'xml']
+ }
+ },
+ {
+ className: 'meta',
+ variants: [
+ {begin: /<\?xml/, end: /\?>/, relevance: 10},
+ {begin: /<\?\w+/, end: /\?>/}
+ ]
+ },
+ {
+ className: 'tag',
+ begin: '</?', end: '/?>',
+ contains: [
+ {
+ className: 'name', begin: /[^\/><\s]+/, relevance: 0
+ },
+ TAG_INTERNALS
+ ]
+ }
+ ]
+ };
+};
+
+/***/ }),
+/* 17 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global) {/**
@@ -1807,17 +3238,17 @@ if (true) {
return this || (typeof window !== 'undefined' ? window : global);
}());
-/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(18)))
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(31)))
/***/ }),
-/* 10 */
+/* 18 */
/***/ (function(module, exports, __webpack_require__) {
var Component = __webpack_require__(0)(
/* script */
- __webpack_require__(3),
+ __webpack_require__(4),
/* template */
- __webpack_require__(13),
+ __webpack_require__(25),
/* scopeId */
null,
/* cssModules */
@@ -1844,22 +3275,22 @@ module.exports = Component.exports
/***/ }),
-/* 11 */
+/* 19 */
/***/ (function(module, exports, __webpack_require__) {
var Component = __webpack_require__(0)(
/* script */
- __webpack_require__(4),
+ __webpack_require__(6),
/* template */
- __webpack_require__(17),
+ __webpack_require__(29),
/* scopeId */
null,
/* cssModules */
null
)
-Component.options.__file = "/Users/phil/Projects/notebooklab/src/cells/code/index.vue"
+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] index.vue: functional components are not supported with templates, they should use render functions.")}
+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 () {
@@ -1868,9 +3299,9 @@ if (false) {(function () {
if (!hotAPI.compatible) return
module.hot.accept()
if (!module.hot.data) {
- hotAPI.createRecord("data-v-d42105b8", Component.options)
+ hotAPI.createRecord("data-v-7342b363", Component.options)
} else {
- hotAPI.reload("data-v-d42105b8", Component.options)
+ hotAPI.reload("data-v-7342b363", Component.options)
}
})()}
@@ -1878,22 +3309,22 @@ module.exports = Component.exports
/***/ }),
-/* 12 */
+/* 20 */
/***/ (function(module, exports, __webpack_require__) {
var Component = __webpack_require__(0)(
/* script */
- __webpack_require__(5),
+ __webpack_require__(7),
/* template */
- __webpack_require__(16),
+ __webpack_require__(26),
/* scopeId */
null,
/* cssModules */
null
)
-Component.options.__file = "/Users/phil/Projects/notebooklab/src/cells/markdown.vue"
+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] markdown.vue: functional components are not supported with templates, they should use render functions.")}
+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 () {
@@ -1902,9 +3333,9 @@ if (false) {(function () {
if (!hotAPI.compatible) return
module.hot.accept()
if (!module.hot.data) {
- hotAPI.createRecord("data-v-7342b363", Component.options)
+ hotAPI.createRecord("data-v-48ada535", Component.options)
} else {
- hotAPI.reload("data-v-7342b363", Component.options)
+ hotAPI.reload("data-v-48ada535", Component.options)
}
})()}
@@ -1912,7 +3343,119 @@ module.exports = Component.exports
/***/ }),
-/* 13 */
+/* 21 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Component = __webpack_require__(0)(
+ /* script */
+ __webpack_require__(8),
+ /* template */
+ __webpack_require__(23),
+ /* 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
+
+
+/***/ }),
+/* 22 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Component = __webpack_require__(0)(
+ /* script */
+ __webpack_require__(9),
+ /* template */
+ __webpack_require__(24),
+ /* 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
+
+
+/***/ }),
+/* 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('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)
+ }
+}
+
+/***/ }),
+/* 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(_vm.componentName, {
+ tag: "component",
+ attrs: {
+ "type": "output",
+ "outputType": _vm.outputType,
+ "count": _vm.count,
+ "raw-code": _vm.rawCode
+ }
+ })
+},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)
+ }
+}
+
+/***/ }),
+/* 25 */
/***/ (function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
@@ -1924,12 +3467,10 @@ module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c
"raw-code": _vm.rawInputCode,
"count": _vm.cell.execution_count
}
- }), _vm._v(" "), (_vm.hasOutput) ? _c('code-cell', {
+ }), _vm._v(" "), (_vm.hasOutput) ? _c('output-cell', {
attrs: {
- "type": "output",
- "raw-code": _vm.outputText,
- "output-type": _vm.outputType,
- "count": _vm.output.execution_count
+ "count": _vm.cell.execution_count,
+ "output": _vm.output
}
}) : _vm._e()], 1)
},staticRenderFns: []}
@@ -1942,7 +3483,28 @@ if (false) {
}
/***/ }),
-/* 14 */
+/* 26 */
+/***/ (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)
+ }
+}
+
+/***/ }),
+/* 27 */
/***/ (function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
@@ -1965,7 +3527,7 @@ if (false) {
}
/***/ }),
-/* 15 */
+/* 28 */
/***/ (function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
@@ -1982,7 +3544,7 @@ if (false) {
}
/***/ }),
-/* 16 */
+/* 29 */
/***/ (function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
@@ -2004,7 +3566,7 @@ if (false) {
}
/***/ }),
-/* 17 */
+/* 30 */
/***/ (function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
@@ -2015,15 +3577,12 @@ module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c
"type": _vm.promptType,
"count": _vm.count
}
- }), _vm._v(" "), (!_vm.isImage) ? _c('pre', {
+ }), _vm._v(" "), _c('pre', {
+ ref: "code",
domProps: {
- "innerHTML": _vm._s(_vm.code)
- }
- }, [_vm._v("\n ")]) : _c('img', {
- attrs: {
- "src": 'data:' + _vm.outputType + ';base64,' + _vm.rawCode
+ "textContent": _vm._s(_vm.code)
}
- })], 1)
+ }, [_vm._v("\n ")])], 1)
},staticRenderFns: []}
module.exports.render._withStripped = true
if (false) {
@@ -2034,7 +3593,7 @@ if (false) {
}
/***/ }),
-/* 18 */
+/* 31 */
/***/ (function(module, exports) {
var g;
@@ -2061,13 +3620,13 @@ module.exports = g;
/***/ }),
-/* 19 */
+/* 32 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var Notebook = __webpack_require__(2);
+var Notebook = __webpack_require__(3);
module.exports = {
install: function install(_vue) {