UNPKG

marked-code-format

Version:

A marked extension for formatting code blocks using Prettier

116 lines (115 loc) 2.59 kB
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 };