parent
72d9732f1d
commit
1dea4ef6f2
|
@ -7,6 +7,7 @@ const path = require("path");
|
||||||
const resolve = require("resolve");
|
const resolve = require("resolve");
|
||||||
const thirdParty = require("./third-party");
|
const thirdParty = require("./third-party");
|
||||||
const internalPlugins = require("./internal-plugins");
|
const internalPlugins = require("./internal-plugins");
|
||||||
|
const partition = require("../utils/partition");
|
||||||
|
|
||||||
function loadPlugins(plugins, pluginSearchDirs) {
|
function loadPlugins(plugins, pluginSearchDirs) {
|
||||||
if (!plugins) {
|
if (!plugins) {
|
||||||
|
@ -24,7 +25,12 @@ function loadPlugins(plugins, pluginSearchDirs) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const externalManualLoadPluginInfos = plugins.map(pluginName => {
|
const [externalPluginNames, externalPluginInstances] = partition(
|
||||||
|
plugins,
|
||||||
|
plugin => typeof plugin === "string"
|
||||||
|
);
|
||||||
|
|
||||||
|
const externalManualLoadPluginInfos = externalPluginNames.map(pluginName => {
|
||||||
let requirePath;
|
let requirePath;
|
||||||
try {
|
try {
|
||||||
// try local files
|
// try local files
|
||||||
|
@ -69,12 +75,14 @@ function loadPlugins(plugins, pluginSearchDirs) {
|
||||||
const externalPlugins = uniqBy(
|
const externalPlugins = uniqBy(
|
||||||
externalManualLoadPluginInfos.concat(externalAutoLoadPluginInfos),
|
externalManualLoadPluginInfos.concat(externalAutoLoadPluginInfos),
|
||||||
"requirePath"
|
"requirePath"
|
||||||
).map(externalPluginInfo =>
|
)
|
||||||
Object.assign(
|
.map(externalPluginInfo =>
|
||||||
{ name: externalPluginInfo.name },
|
Object.assign(
|
||||||
eval("require")(externalPluginInfo.requirePath)
|
{ name: externalPluginInfo.name },
|
||||||
|
eval("require")(externalPluginInfo.requirePath)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
);
|
.concat(externalPluginInstances);
|
||||||
|
|
||||||
return internalPlugins.concat(externalPlugins);
|
return internalPlugins.concat(externalPlugins);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
module.exports = function partition(array, fn) {
|
||||||
|
const a = [];
|
||||||
|
const b = [];
|
||||||
|
array.forEach(item => {
|
||||||
|
if (fn(item)) {
|
||||||
|
a.push(item);
|
||||||
|
} else {
|
||||||
|
b.push(item);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return [a, b];
|
||||||
|
};
|
|
@ -4,6 +4,8 @@ exports[`html parser should handle CRLF correctly 1`] = `"\\"<!--\\\\r\\\\n tes
|
||||||
|
|
||||||
exports[`markdown parser should handle CRLF correctly 1`] = `"\\"\`\`\`\\\\r\\\\n\\\\r\\\\n\\\\r\\\\n\`\`\`\\\\r\\\\n\\""`;
|
exports[`markdown parser should handle CRLF correctly 1`] = `"\\"\`\`\`\\\\r\\\\n\\\\r\\\\n\\\\r\\\\n\`\`\`\\\\r\\\\n\\""`;
|
||||||
|
|
||||||
|
exports[`should work with foo plugin instance 1`] = `"\\"tabWidth:8\\""`;
|
||||||
|
|
||||||
exports[`typescript parser should throw the first error when both JSX and non-JSX mode failed 1`] = `
|
exports[`typescript parser should throw the first error when both JSX and non-JSX mode failed 1`] = `
|
||||||
"Expression expected. (9:7)
|
"Expression expected. (9:7)
|
||||||
7 | );
|
7 | );
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const prettier = require("prettier/local");
|
const prettier = require("prettier/local");
|
||||||
|
const fooPlugin = require("../plugins/defaultOptions/plugin");
|
||||||
|
|
||||||
test("yaml parser should handle CRLF correctly", () => {
|
test("yaml parser should handle CRLF correctly", () => {
|
||||||
const input = "a:\r\n 123\r\n";
|
const input = "a:\r\n 123\r\n";
|
||||||
|
@ -41,3 +42,12 @@ test("markdown parser should handle CRLF correctly", () => {
|
||||||
JSON.stringify(prettier.format(input, { parser: "markdown" }))
|
JSON.stringify(prettier.format(input, { parser: "markdown" }))
|
||||||
).toMatchSnapshot();
|
).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("should work with foo plugin instance", () => {
|
||||||
|
const input = "a:\r\n 123\r\n";
|
||||||
|
expect(
|
||||||
|
JSON.stringify(
|
||||||
|
prettier.format(input, { parser: "foo-parser", plugins: [fooPlugin] })
|
||||||
|
)
|
||||||
|
).toMatchInlineSnapshot(`"\\"tabWidth:8\\""`);
|
||||||
|
});
|
||||||
|
|
Loading…
Reference in New Issue