prettier/tests_config/require_standalone.js

52 lines
1.2 KiB
JavaScript

"use strict";
const fs = require("fs");
const path = require("path");
const vm = require("vm");
const sources = [
"standalone.js",
"parser-angular.js",
"parser-babylon.js",
"parser-flow.js",
"parser-glimmer.js",
"parser-graphql.js",
"parser-html.js",
"parser-markdown.js",
"parser-postcss.js",
"parser-typescript.js",
"parser-yaml.js"
].map(filename =>
fs.readFileSync(path.join(process.env.PRETTIER_DIR, filename), "utf-8")
);
const sandbox = vm.createContext();
vm.runInContext(sources.join(";"), sandbox);
// TODO: maybe expose (and write tests) for `format`, `utils`, and
// `__debug` methods
module.exports = {
formatWithCursor(input, options) {
return vm.runInNewContext(
`prettier.formatWithCursor(
$$$input,
Object.assign({ plugins: prettierPlugins }, $$$options)
);`,
Object.assign({ $$$input: input, $$$options: options }, sandbox)
);
},
__debug: {
parse(input, options, massage) {
return vm.runInNewContext(
`prettier.__debug.parse(
$$$input,
Object.assign({ plugins: prettierPlugins }, $$$options),
${JSON.stringify(massage)}
);`,
Object.assign({ $$$input: input, $$$options: options }, sandbox)
);
}
}
};