Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
// Imports file-extension to langauge mapping from both
// prismjs and lang-map and outputs a JSDON document that
// follows the vscode schema for extension mapping.
// PrismJS language definitions trump for my solution.
const fs = require('fs');
var map = require('lang-map');
var components = require('prismjs/components.js');
// vscode files.associations is not an array. Use a dictionary instead.
var assocDict = {};
var languages = [];
for (var key in components.languages) {
if (components.languages.hasOwnProperty(key) && key != 'meta') {
var language = components.languages[key];
var langTemp = {
id : key
};
langTemp.aliases = [];
// vscode doesn't support title, but I want to use it
if (typeof language.title != 'undefined')
langTemp.title = language.title;
if (typeof language.alias != 'undefined'){
if (Array.isArray(language.alias)){
langTemp.aliases = language.alias;
}
else{
// Imports file-extension to langauge mapping from both
// prismjs and lang-map and outputs a JSDON document that
// follows the vscode schema for extension mapping.
// PrismJS language definitions trump for my solution.
const fs = require('fs');
var map = require('lang-map');
var components = require('prismjs/components.js');
// vscode files.associations is not an array. Use a dictionary instead.
var assocDict = {};
var languages = [];
for (var key in components.languages) {
if (components.languages.hasOwnProperty(key) && key != 'meta') {
var language = components.languages[key];
var langTemp = {
id : key
};
langTemp.aliases = [];
// vscode doesn't support title, but I want to use it
if (typeof language.title != 'undefined')
langTemp.title = language.title;
if (typeof language.alias != 'undefined'){
if (Array.isArray(language.alias)){
langTemp.aliases = language.alias;
}
else{
langTemp.aliases.push(language.alias);
logger.error(error)
detectErrors = true
pageTitle = 'Cannot connect to validator'
pageHeader = 'Unable to connect to HTML validator'
}
if (detectErrors) {
markup = body
// Highlight and add line numbers to html
formattedHTML = '<pre class="\'markup\'">\n<code class="language-html">\n'
markupArray = markup.split('\n')
for (i = 0; i < markupArray.length; i++) {
markupLine = markupArray[i]
if (errorMap.has(i + 1)) {
formattedHTML += `<span class="line-numbers error" title="${errorMap.get(i + 1)}">`
formattedHTML += Prism.highlight(`${markupLine}`, Prism.languages.markup)
formattedHTML += '</span>'
} else {
formattedHTML += '<span class="\'line-numbers\'">'
formattedHTML += Prism.highlight(`${markupLine}`, Prism.languages.markup)
formattedHTML += '</span>'
}
}
formattedHTML += '</code>\n</pre>'
// build markup template
formattedHTML = `<h2>Markup used:</h2>\n${formattedHTML}`
res.status(500)
model.prismStyle = prismStyleSheet.toString()
model.pageTitle = pageTitle
model.preWidth = markupArray.length.toString().length * 8
model.pageHeader = pageHeader
highlight: function(str, lang) {
const language = !lang || lang === 'html' ? 'markup' : lang;
try {
if (!Prism.languages[language]) {
require(`prismjs/components/prism-${language}.min.js`);
}
if (Prism.languages[language]) {
return Prism.highlight(str, Prism.languages[language]);
}
} catch (__) {
// eslint-disable-next-line
console.error(__);
}
return '';
},
});
public ngAfterViewChecked() {
// console.log('ok');
if (!this.initialised) {
// console.warn('not initialised');
Prism.highlightAll(false, () => {
this.initialised = true;
});
}
}
}
const language = block
.getData()
.get("language", this.options.defaultLanguage);
// Allow for no syntax highlighting
if (language == null) {
return;
}
const blockKey = block.getKey();
const blockText = block.getText();
let tokens;
try {
tokens = Prism.tokenize(blockText, Prism.languages[language]);
} catch (e) {
// eslint-disable-next-line no-console
console.error(e);
return;
}
this.highlighted[blockKey] = {};
let tokenCount = 0;
tokens.reduce((startOffset, token) => {
const endOffset = startOffset + token.length;
if (typeof token !== "string") {
tokenCount += 1;
this.highlighted[blockKey][tokenCount] = token;
callback(startOffset, endOffset);
if (!pre) {
return
}
if (!pre.hasAttribute('data-line')) {
pre.setAttribute('data-line', '')
}
highlightLines(pre, range, 'temporary ')
document.querySelector('.temporary.line-highlight').scrollIntoView()
}
var fakeTimer = 0 // Hack to limit the number of times applyHash() runs
Prism.hooks.add('before-sanity-check', function(env) {
var pre = env.element.parentNode
var lines = pre && pre.getAttribute('data-line')
if (!pre || !lines || !/pre/i.test(pre.nodeName)) {
return
}
/*
* Cleanup for other plugins (e.g. autoloader).
*
* Sometimes <code> blocks are highlighted multiple times. It is necessary
* to cleanup any left-over tags, because the whitespace inside of the <div>
* tags change the content of the <code> tag.
*/
var num = 0
$$('.line-highlight', pre).forEach(function(line) {</code></div></code>
// args: ['value1', 'value2', 'value3']
// };
// PythonShell.run('my_script.py', options, function (err, results) {
// if (err)
// throw err;
// // Results is an array consisting of messages collected during execution
// console.log('results: %j', results);
// });
// vscode files.associations is not an array. Use a dictionary instead.
var assocDict = {};
var languages = [];
for (var key in components.languages) {
if (components.languages.hasOwnProperty(key) && key != 'meta') {
var language = components.languages[key];
var langTemp = {
id : key
};
langTemp.aliases = [];
// vscode doesn't support title, but I want to use it
if (typeof language.title != 'undefined')
langTemp.title = language.title;
if (typeof language.alias != 'undefined'){
if (Array.isArray(language.alias)){
langTemp.aliases = language.alias;
}
else{
langTemp.aliases.push(language.alias);
// scriptPath: 'C:\Python38\Lib\site-packages\pygments',
// args: ['value1', 'value2', 'value3']
// };
// PythonShell.run('my_script.py', options, function (err, results) {
// if (err)
// throw err;
// // Results is an array consisting of messages collected during execution
// console.log('results: %j', results);
// });
// vscode files.associations is not an array. Use a dictionary instead.
var assocDict = {};
var languages = [];
for (var key in components.languages) {
if (components.languages.hasOwnProperty(key) && key != 'meta') {
var language = components.languages[key];
var langTemp = {
id : key
};
langTemp.aliases = [];
// vscode doesn't support title, but I want to use it
if (typeof language.title != 'undefined')
langTemp.title = language.title;
if (typeof language.alias != 'undefined'){
if (Array.isArray(language.alias)){
langTemp.aliases = language.alias;
}
else{
function parseToken(token, counter) {
if (token === "\n") {
counter.current = 0;
return token;
} else if (typeof token === "string" && token.includes("\n")) {
const [left, ...rest] = token.split("\n");
const right = rest.join("\n");
const tokens = addCustomTokens([left, "\n", right], counter);
return tokens;
} else if (typeof token === "string" && !token.trim()) {
// whitespace
return token;
} else if (typeof token === "string") {
counter.current++;
return new Prism.Token(
"free-text",
token,
["token-" + counter.current, "token-leaf"],
token
);
} else if (Prism.util.type(token.content) === "Array") {
token.content = addCustomTokens(token.content, counter);
return token;
} else {
counter.current++;
const aliases =
Prism.util.type(token.alias) === "Array" ? token.alias : [token.alias];
aliases.push("token-" + counter.current, "token-leaf");
token.alias = aliases;
return token;
}