Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
32c6ea2d
Commit
32c6ea2d
authored
Mar 23, 2017
by
Phil Hughes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated notebooklab with latest code highlighting changes
parent
0ef85857
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1044 additions
and
1347 deletions
+1044
-1347
app/assets/javascripts/blob/notebook/index.js
app/assets/javascripts/blob/notebook/index.js
+2
-1
vendor/assets/javascripts/notebooklab.js
vendor/assets/javascripts/notebooklab.js
+1042
-1346
No files found.
app/assets/javascripts/blob/notebook/index.js
View file @
32c6ea2d
...
...
@@ -32,7 +32,8 @@ export default () => {
</div>
<notebook-lab
v-if="!loading && !error"
:notebook="json" />
:notebook="json"
code-css-class="code white" />
<p
class="text-center"
v-if="error">
...
...
vendor/assets/javascripts/notebooklab.js
View file @
32c6ea2d
...
...
@@ -73,7 +73,7 @@ return /******/ (function(modules) { // webpackBootstrap
/******/
__webpack_require__
.
p
=
""
;
/******/
/******/
// Load entry module and return exports
/******/
return
__webpack_require__
(
__webpack_require__
.
s
=
3
2
);
/******/
return
__webpack_require__
(
__webpack_require__
.
s
=
3
0
);
/******/
})
/************************************************************************/
/******/
([
...
...
@@ -136,9 +136,9 @@ module.exports = function normalizeComponent (
var
Component
=
__webpack_require__
(
0
)(
/* script */
__webpack_require__
(
1
0
),
__webpack_require__
(
1
1
),
/* template */
__webpack_require__
(
2
8
),
__webpack_require__
(
2
7
),
/* scopeId */
null
,
/* cssModules */
...
...
@@ -170,9 +170,9 @@ module.exports = Component.exports
var
Component
=
__webpack_require__
(
0
)(
/* script */
__webpack_require__
(
5
),
__webpack_require__
(
6
),
/* template */
__webpack_require__
(
30
),
__webpack_require__
(
29
),
/* scopeId */
null
,
/* cssModules */
...
...
@@ -200,13 +200,40 @@ 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__
(
1
1
),
__webpack_require__
(
1
2
),
/* template */
__webpack_require__
(
2
7
),
__webpack_require__
(
2
6
),
/* scopeId */
null
,
/* cssModules */
...
...
@@ -233,7 +260,7 @@ module.exports = Component.exports
/***/
}),
/*
4
*/
/*
5
*/
/***/
(
function
(
module
,
exports
,
__webpack_require__
)
{
"
use strict
"
;
...
...
@@ -247,7 +274,7 @@ var _index = __webpack_require__(2);
var
_index2
=
_interopRequireDefault
(
_index
);
var
_index3
=
__webpack_require__
(
2
2
);
var
_index3
=
__webpack_require__
(
2
1
);
var
_index4
=
_interopRequireDefault
(
_index3
);
...
...
@@ -266,6 +293,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
//
//
//
//
//
exports
.
default
=
{
components
:
{
...
...
@@ -276,6 +305,11 @@ exports.default = {
cell
:
{
type
:
Object
,
required
:
true
},
codeCssClass
:
{
type
:
String
,
required
:
false
,
default
:
''
}
},
computed
:
{
...
...
@@ -292,7 +326,7 @@ exports.default = {
};
/***/
}),
/*
5
*/
/*
6
*/
/***/
(
function
(
module
,
exports
,
__webpack_require__
)
{
"
use strict
"
;
...
...
@@ -302,29 +336,16 @@ Object.defineProperty(exports, "__esModule", {
value
:
true
});
var
_highlight
=
__webpack_require__
(
13
);
var
_highlight
=
__webpack_require__
(
32
);
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
);
//
//
//
//
...
...
@@ -336,9 +357,9 @@ _highlight2.default.registerLanguage('xml', _xml2.default); //
//
//
//
_highlight2
.
default
.
registerLanguage
(
'
javascript
'
,
_javascript2
.
default
);
_highlight2
.
default
.
registerLanguage
(
'
python
'
,
_python2
.
default
);
//
//
//
exports
.
default
=
{
components
:
{
...
...
@@ -349,6 +370,11 @@ exports.default = {
type
:
Number
,
required
:
false
},
codeCssClass
:
{
type
:
String
,
required
:
false
,
default
:
''
},
type
:
{
type
:
String
,
required
:
true
...
...
@@ -369,12 +395,12 @@ exports.default = {
}
},
mounted
:
function
mounted
()
{
_highlight2
.
default
.
highlight
Block
(
this
.
$refs
.
code
);
_highlight2
.
default
.
highlight
Element
(
this
.
$refs
.
code
);
}
};
/***/
}),
/*
6
*/
/*
7
*/
/***/
(
function
(
module
,
exports
,
__webpack_require__
)
{
"
use strict
"
;
...
...
@@ -384,7 +410,7 @@ Object.defineProperty(exports, "__esModule", {
value
:
true
});
var
_marked
=
__webpack_require__
(
1
7
);
var
_marked
=
__webpack_require__
(
1
4
);
var
_marked2
=
_interopRequireDefault
(
_marked
);
...
...
@@ -433,7 +459,7 @@ exports.default = {
};
/***/
}),
/*
7
*/
/*
8
*/
/***/
(
function
(
module
,
exports
,
__webpack_require__
)
{
"
use strict
"
;
...
...
@@ -468,7 +494,7 @@ exports.default = {
//
/***/
}),
/*
8
*/
/*
9
*/
/***/
(
function
(
module
,
exports
,
__webpack_require__
)
{
"
use strict
"
;
...
...
@@ -508,7 +534,7 @@ exports.default = {
//
/***/
}),
/*
9
*/
/*
10
*/
/***/
(
function
(
module
,
exports
,
__webpack_require__
)
{
"
use strict
"
;
...
...
@@ -526,16 +552,17 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
//
//
//
//
var
_index
=
__webpack_require__
(
2
);
var
_index2
=
_interopRequireDefault
(
_index
);
var
_html
=
__webpack_require__
(
20
);
var
_html
=
__webpack_require__
(
19
);
var
_html2
=
_interopRequireDefault
(
_html
);
var
_image
=
__webpack_require__
(
2
1
);
var
_image
=
__webpack_require__
(
2
0
);
var
_image2
=
_interopRequireDefault
(
_image
);
...
...
@@ -543,6 +570,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
exports
.
default
=
{
props
:
{
codeCssClass
:
{
type
:
String
,
required
:
false
,
default
:
''
},
count
:
{
type
:
Number
,
required
:
false
,
...
...
@@ -608,7 +640,7 @@ exports.default = {
};
/***/
}),
/* 1
0
*/
/* 1
1
*/
/***/
(
function
(
module
,
exports
,
__webpack_require__
)
{
"
use strict
"
;
...
...
@@ -640,7 +672,7 @@ exports.default = {
};
/***/
}),
/* 1
1
*/
/* 1
2
*/
/***/
(
function
(
module
,
exports
,
__webpack_require__
)
{
"
use strict
"
;
...
...
@@ -650,7 +682,7 @@ Object.defineProperty(exports, "__esModule", {
value
:
true
});
var
_cells
=
__webpack_require__
(
1
2
);
var
_cells
=
__webpack_require__
(
1
3
);
exports
.
default
=
{
components
:
{
...
...
@@ -661,6 +693,11 @@ exports.default = {
notebook
:
{
type
:
Object
,
required
:
true
},
codeCssClass
:
{
type
:
String
,
required
:
false
,
default
:
''
}
},
methods
:
{
...
...
@@ -683,9 +720,10 @@ exports.default = {
//
//
//
//
/***/
}),
/* 1
2
*/
/* 1
3
*/
/***/
(
function
(
module
,
exports
,
__webpack_require__
)
{
"
use strict
"
;
...
...
@@ -695,1260 +733,28 @@ Object.defineProperty(exports, "__esModule", {
value
:
true
});
var
_markdown
=
__webpack_require__
(
19
);
Object
.
defineProperty
(
exports
,
'
MarkdownCell
'
,
{
enumerable
:
true
,
get
:
function
get
()
{
return
_interopRequireDefault
(
_markdown
).
default
;
}
});
var
_code
=
__webpack_require__
(
18
);
Object
.
defineProperty
(
exports
,
'
CodeCell
'
,
{
enumerable
:
true
,
get
:
function
get
()
{
return
_interopRequireDefault
(
_code
).
default
;
}
});
function
_interopRequireDefault
(
obj
)
{
return
obj
&&
obj
.
__esModule
?
obj
:
{
default
:
obj
};
}
/***/
}),
/* 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
=
/
\b
lang
(?:
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
=
{
'
&
'
:
'
&
'
,
'
<
'
:
'
<
'
,
'
>
'
:
'
>
'
};
/* 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
(
/
\b
hljs
\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
)
{
var
_markdown
=
__webpack_require__
(
18
);
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
}
]
};
};
Object
.
defineProperty
(
exports
,
'
MarkdownCell
'
,
{
enumerable
:
true
,
get
:
function
get
()
{
return
_interopRequireDefault
(
_markdown
).
default
;
}
});
/***/
}),
/* 16 */
/***/
(
function
(
module
,
exports
)
{
var
_code
=
__webpack_require__
(
17
);
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
]
}
]
};
};
Object
.
defineProperty
(
exports
,
'
CodeCell
'
,
{
enumerable
:
true
,
get
:
function
get
()
{
return
_interopRequireDefault
(
_code
).
default
;
}
});
function
_interopRequireDefault
(
obj
)
{
return
obj
&&
obj
.
__esModule
?
obj
:
{
default
:
obj
};
}
/***/
}),
/* 1
7
*/
/* 1
4
*/
/***/
(
function
(
module
,
exports
,
__webpack_require__
)
{
/* WEBPACK VAR INJECTION */
(
function
(
global
)
{
/**
...
...
@@ -3047,7 +1853,7 @@ function escape(html, encode) {
}
function
unescape
(
html
)
{
// explicitly match decimal, hex, and named HTML entities
// 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
'
:
'
;
...
...
@@ -3238,17 +2044,852 @@ if (true) {
return
this
||
(
typeof
window
!==
'
undefined
'
?
window
:
global
);
}());
/* WEBPACK VAR INJECTION */
}.
call
(
exports
,
__webpack_require__
(
3
1
)))
/* WEBPACK VAR INJECTION */
}.
call
(
exports
,
__webpack_require__
(
3
)))
/***/
}),
/* 18 */
/* 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
:
/
(\b
class
\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
|
0
x
[
\
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
=
/
\b
lang
(?:
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
(
/
\u
00a0/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__
(
4
),
__webpack_require__(
5
),
/* template */
__webpack_require__
(
2
5
),
__webpack_require__(2
4
),
/* scopeId */
null,
/* cssModules */
...
...
@@ -3275,14 +2916,14 @@ module.exports = Component.exports
/***/ }),
/* 1
9
*/
/* 1
8
*/
/***/ (function(module, exports, __webpack_require__) {
var Component = __webpack_require__(0)(
/* script */
__webpack_require__
(
6
),
__webpack_require__(
7
),
/* template */
__webpack_require__
(
2
9
),
__webpack_require__(2
8
),
/* scopeId */
null,
/* cssModules */
...
...
@@ -3309,14 +2950,14 @@ module.exports = Component.exports
/***/ }),
/*
20
*/
/*
19
*/
/***/ (function(module, exports, __webpack_require__) {
var Component = __webpack_require__(0)(
/* script */
__webpack_require__
(
7
),
__webpack_require__(
8
),
/* template */
__webpack_require__
(
2
6
),
__webpack_require__(2
5
),
/* scopeId */
null,
/* cssModules */
...
...
@@ -3343,14 +2984,14 @@ module.exports = Component.exports
/***/ }),
/* 2
1
*/
/* 2
0
*/
/***/ (function(module, exports, __webpack_require__) {
var Component = __webpack_require__(0)(
/* script */
__webpack_require__
(
8
),
__webpack_require__(
9
),
/* template */
__webpack_require__
(
2
3
),
__webpack_require__(2
2
),
/* scopeId */
null,
/* cssModules */
...
...
@@ -3377,14 +3018,14 @@ module.exports = Component.exports
/***/ }),
/* 2
2
*/
/* 2
1
*/
/***/ (function(module, exports, __webpack_require__) {
var Component = __webpack_require__(0)(
/* script */
__webpack_require__
(
9
),
__webpack_require__(
10
),
/* template */
__webpack_require__
(
2
4
),
__webpack_require__(2
3
),
/* scopeId */
null,
/* cssModules */
...
...
@@ -3411,7 +3052,7 @@ module.exports = Component.exports
/***/ }),
/* 2
3
*/
/* 2
2
*/
/***/ (function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
...
...
@@ -3432,7 +3073,7 @@ if (false) {
}
/***/ }),
/* 2
4
*/
/* 2
3
*/
/***/ (function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
...
...
@@ -3442,7 +3083,8 @@ module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c
"type": "output",
"outputType": _vm.outputType,
"count": _vm.count,
"
raw-code
"
:
_vm
.
rawCode
"raw-code": _vm.rawCode,
"code-css-class": _vm.codeCssClass
}
})
},staticRenderFns: []}
...
...
@@ -3455,7 +3097,7 @@ if (false) {
}
/***/ }),
/* 2
5
*/
/* 2
4
*/
/***/ (function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
...
...
@@ -3465,12 +3107,14 @@ module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c
attrs: {
"type": "input",
"raw-code": _vm.rawInputCode,
"
count
"
:
_vm
.
cell
.
execution_count
"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
"output": _vm.output,
"code-css-class": _vm.codeCssClass
}
}) : _vm._e()], 1)
},staticRenderFns: []}
...
...
@@ -3483,7 +3127,7 @@ if (false) {
}
/***/ }),
/* 2
6
*/
/* 2
5
*/
/***/ (function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
...
...
@@ -3504,7 +3148,7 @@ if (false) {
}
/***/ }),
/* 2
7
*/
/* 2
6
*/
/***/ (function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
...
...
@@ -3513,7 +3157,8 @@ module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c
key: index,
tag: "component",
attrs: {
"
cell
"
:
cell
"cell": cell,
"code-css-class": _vm.codeCssClass
}
})
})) : _vm._e()
...
...
@@ -3527,7 +3172,7 @@ if (false) {
}
/***/ }),
/* 2
8
*/
/* 2
7
*/
/***/ (function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
...
...
@@ -3544,7 +3189,7 @@ if (false) {
}
/***/ }),
/* 2
9
*/
/* 2
8
*/
/***/ (function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
...
...
@@ -3566,7 +3211,7 @@ if (false) {
}
/***/ }),
/*
30
*/
/*
29
*/
/***/ (function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
...
...
@@ -3579,6 +3224,8 @@ module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c
}
}), _vm._v(" "), _c(
'
pre
'
, {
ref: "code",
staticClass: "language-python",
class: _vm.codeCssClass,
domProps: {
"textContent": _vm._s(_vm.code)
}
...
...
@@ -3592,32 +3239,56 @@ if (false) {
}
}
/***/ }),
/* 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
)
{
/***/ (function(module, exports
, __webpack_require__
) {
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
;
/* 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 */
...
...
@@ -3626,14 +3297,39 @@ module.exports = g;
"use strict";
var
Notebook
=
__webpack_require__
(
3
);
Object.defineProperty(exports, "__esModule", {
value: true
});
var _Prism$plugins$custom;
var _prismjs = __webpack_require__(16);
module
.
exports
=
{
install
:
function
install
(
_vue
)
{
_vue
.
component
(
'
notebook-lab
'
,
Notebook
);
}
};
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;
/***/ })
/******/ ]);
});
});
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment