marked-code-format
Version:
A marked extension for formatting code blocks using Prettier
116 lines (115 loc) • 2.59 kB
JavaScript
import b from "attributes-parser";
import * as n from "prettier";
const g = {
javascript: "babel",
js: "babel",
node: "babel",
jsx: "babel",
javascriptreact: "babel",
react: "babel",
typescript: "babel-ts",
ts: "babel-ts",
tsx: "babel-ts",
flow: "babel-flow",
css: "css",
scss: "scss",
less: "less",
handlebars: "glimmer",
json: "json",
jsonc: "json",
geojson: "json",
jsonl: "json",
topojson: "json",
json5: "json5",
"json.stringify": "json-stringify",
graphql: "graphql",
pandoc: "markdown",
markdown: "markdown",
md: "markdown",
mdx: "mdx",
html: "html",
xhtml: "html",
vue: "vue",
angular: "angular",
lwc: "lwc",
yaml: "yaml",
yml: "yaml",
ansible: "yaml",
"home-assistant": "yaml"
}, u = {
php: "php",
inc: "php",
pug: "pug",
jade: "pug",
ruby: "ruby",
jruby: "ruby",
macruby: "ruby",
rb: "ruby",
rbx: "ruby",
xml: "xml",
rss: "xml",
xsd: "xml",
wsdl: "xml",
apex: "apex-anonymous",
astro: "astro",
elm: "elm",
erb: "erb",
rhtml: "erb",
"html+ruby": "erb",
glsl: "glsl-parser",
gohtml: "go-template",
gotmpl: "go-template",
java: "java",
jsonata: "JSONata",
kotlin: "kotlin",
kt: "kotlin",
ktm: "kotlin",
kts: "kotlin",
motoko: "motoko-tt-parse",
mo: "motoko-tt-parse",
nginx: "nginx",
prisma: "prisma-parse",
properties: "dot-properties",
ini: "dot-properties",
dosini: "dot-properties",
rust: "jinx-rust",
rs: "jinx-rust",
sql: "sql",
solidity: "solidity-parse",
sol: "solidity-parse",
svelte: "svelte",
toml: "toml"
}, i = /\s*prettier(?:=(?:"[^"]*"|'[^']*'|[^"'\s]*))?$|prettier(?:=(?:"[^"]*"|'[^']*'|[^"'\s]*))?\s*/g;
function y(r) {
return typeof r == "object" && r !== null && !Array.isArray(r);
}
function j(r = {}) {
return {
async: !0,
async walkTokens(s) {
var l, o;
if (s.type !== "code" || !s.lang) return;
const { prettier: t } = b(s.lang);
if (!t) return;
const a = { ...g, ...u }, p = Object.keys(a), e = s.lang.split(" ")[0];
if (!p.includes(e.toLowerCase())) return;
const m = typeof process < "u" ? (
/* c8 ignore next 2 */
await n.resolveConfig(process.cwd())
) : {};
try {
s.raw = (l = s.raw) == null ? void 0 : l.replace(i, ""), s.lang = (o = s.lang) == null ? void 0 : o.replace(i, ""), s.text = await n.format(s.text, {
parser: a[String(e)],
...m,
...r,
...y(t) ? t : {}
});
} catch (c) {
console.error(c);
}
}
};
}
export {
j as default
};