add back deleted file, and removed log output
This commit is contained in:
parent
c378d24751
commit
a3d356c512
|
@ -38,7 +38,7 @@ class LiquidHighlightTag {
|
||||||
return token.raw || token.getText();
|
return token.raw || token.getText();
|
||||||
});
|
});
|
||||||
let tokenStr = tokens.join("").trim();
|
let tokenStr = tokens.join("").trim();
|
||||||
console.log(this.args);
|
|
||||||
return Promise.resolve(
|
return Promise.resolve(
|
||||||
HighlightPairedShortcode(tokenStr, this.args, options)
|
HighlightPairedShortcode(tokenStr, this.args, options)
|
||||||
);
|
);
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
function attributeEntryToString(attribute, context) {
|
||||||
|
let [key, value] = attribute;
|
||||||
|
|
||||||
|
if (typeof value === "function") { // Callback must return a string or a number
|
||||||
|
value = value(context); // Run the provided callback and store the result
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof value !== "string" && typeof value !== "number") {
|
||||||
|
throw new Error(
|
||||||
|
`Attribute "${key}" must have, or evaluate to, a value of type string or number, not "${typeof value}".`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return `${key}="${value}"`;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ## Usage
|
||||||
|
* The function `getAttributes` is used to convert an object, `attributes`, with HTML attributes as keys and the values as the corresponding HTML attribute's values.
|
||||||
|
* If it is falsey, an empty string will be returned.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
getAttributes({
|
||||||
|
tabindex: 0,
|
||||||
|
'data-language': function (context) { return context.language; },
|
||||||
|
'data-otherStuff': 'value'
|
||||||
|
}) // => ' tabindex="0" data-language="JavaScript" data-otherStuff="value"'
|
||||||
|
```
|
||||||
|
*
|
||||||
|
* @param {{[s: string]: string | number}} attributes An object with key-value pairs that represent attributes.
|
||||||
|
* @param {object} context An object with the current context.
|
||||||
|
* @param {string} context.content The code to parse and highlight.
|
||||||
|
* @param {string} context.language The language for the current instance.
|
||||||
|
* @param {object} context.options The options passed to the syntax highlighter.
|
||||||
|
* @returns {string} A string containing the above HTML attributes preceded by a single space.
|
||||||
|
*/
|
||||||
|
function getAttributes(attributes, context = {}) {
|
||||||
|
let langClass = context.language ? `language-${context.language}` : "";
|
||||||
|
|
||||||
|
if (!attributes) {
|
||||||
|
return langClass ? ` class="${langClass}"` : "";
|
||||||
|
} else if (typeof attributes === "object") {
|
||||||
|
if(!("class" in attributes) && langClass) {
|
||||||
|
// class attribute should be first in order
|
||||||
|
let tempAttrs = { class: langClass };
|
||||||
|
for(let key in attributes) {
|
||||||
|
tempAttrs[key] = attributes[key];
|
||||||
|
}
|
||||||
|
attributes = tempAttrs;
|
||||||
|
}
|
||||||
|
|
||||||
|
const formattedAttributes = Object.entries(attributes).map(
|
||||||
|
entry => attributeEntryToString(entry, context)
|
||||||
|
);
|
||||||
|
|
||||||
|
return formattedAttributes.length ? ` ${formattedAttributes.join(" ")}` : "";
|
||||||
|
} else if (typeof attributes === "string") {
|
||||||
|
throw new Error("Syntax highlighter plugin custom attributes on <pre> and <code> must be an object. Received: " + JSON.stringify(attributes));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = getAttributes;
|
Loading…
Reference in New Issue