Refactor createLanguage to use function transform (#6676)

master
fisker Cheung 2019-10-30 02:49:44 +08:00 committed by Georgii Dolzhykov
parent 4a336f8393
commit 56a2cd8a1b
8 changed files with 104 additions and 138 deletions

View File

@ -5,37 +5,35 @@ const options = require("./options");
const createLanguage = require("../utils/create-language");
const languages = [
createLanguage(require("linguist-languages/data/CSS"), {
override: {
createLanguage(require("linguist-languages/data/CSS"), data =>
Object.assign(data, {
since: "1.4.0",
parsers: ["css"],
vscodeLanguageIds: ["css"]
}
}),
createLanguage(require("linguist-languages/data/PostCSS"), {
override: {
})
),
createLanguage(require("linguist-languages/data/PostCSS"), data =>
Object.assign(data, {
since: "1.4.0",
parsers: ["css"],
vscodeLanguageIds: ["postcss"]
},
extend: {
extensions: [".postcss"]
}
}),
createLanguage(require("linguist-languages/data/Less"), {
override: {
vscodeLanguageIds: ["postcss"],
extensions: data.extensions.concat(".postcss")
})
),
createLanguage(require("linguist-languages/data/Less"), data =>
Object.assign(data, {
since: "1.4.0",
parsers: ["less"],
vscodeLanguageIds: ["less"]
}
}),
createLanguage(require("linguist-languages/data/SCSS"), {
override: {
})
),
createLanguage(require("linguist-languages/data/SCSS"), data =>
Object.assign(data, {
since: "1.4.0",
parsers: ["scss"],
vscodeLanguageIds: ["scss"]
}
})
})
)
];
const printers = {

View File

@ -5,13 +5,13 @@ const options = require("./options");
const createLanguage = require("../utils/create-language");
const languages = [
createLanguage(require("linguist-languages/data/GraphQL"), {
override: {
createLanguage(require("linguist-languages/data/GraphQL"), data =>
Object.assign(data, {
since: "1.5.0",
parsers: ["graphql"],
vscodeLanguageIds: ["graphql"]
}
})
})
)
];
const printers = {

View File

@ -4,13 +4,13 @@ const printer = require("./printer-glimmer");
const createLanguage = require("../utils/create-language");
const languages = [
createLanguage(require("linguist-languages/data/Handlebars"), {
override: {
createLanguage(require("linguist-languages/data/Handlebars"), data =>
Object.assign(data, {
since: null, // unreleased
parsers: ["glimmer"],
vscodeLanguageIds: ["handlebars"]
}
})
})
)
];
const printers = {

View File

@ -5,47 +5,43 @@ const createLanguage = require("../utils/create-language");
const options = require("./options");
const languages = [
createLanguage(require("linguist-languages/data/HTML"), {
override: {
createLanguage(require("linguist-languages/data/HTML"), data =>
Object.assign(data, {
name: "Angular",
since: "1.15.0",
parsers: ["angular"],
vscodeLanguageIds: ["html"],
extensions: [".component.html"],
filenames: []
}
}),
createLanguage(require("linguist-languages/data/HTML"), {
override: {
})
),
createLanguage(require("linguist-languages/data/HTML"), data =>
Object.assign(data, {
since: "1.15.0",
parsers: ["html"],
vscodeLanguageIds: ["html"]
},
extend: {
extensions: [
vscodeLanguageIds: ["html"],
extensions: data.extensions.concat([
".mjml" // MJML is considered XML in Linguist but it should be formatted as HTML
]
}
}),
createLanguage(require("linguist-languages/data/HTML"), {
override: {
])
})
),
createLanguage(require("linguist-languages/data/HTML"), data =>
Object.assign(data, {
name: "Lightning Web Components",
since: "1.17.0",
parsers: ["lwc"],
vscodeLanguageIds: ["html"],
extensions: [],
filenames: []
}
}),
createLanguage(require("linguist-languages/data/Vue"), {
override: {
})
),
createLanguage(require("linguist-languages/data/Vue"), data =>
Object.assign(data, {
since: "1.10.0",
parsers: ["vue"],
vscodeLanguageIds: ["vue"]
}
})
})
)
];
const printers = {

View File

@ -6,18 +6,16 @@ const options = require("./options");
const createLanguage = require("../utils/create-language");
const languages = [
createLanguage(require("linguist-languages/data/JavaScript"), {
override: {
createLanguage(require("linguist-languages/data/JavaScript"), data =>
Object.assign(data, {
since: "0.0.0",
parsers: ["babel", "flow"],
vscodeLanguageIds: ["javascript"]
},
extend: {
interpreters: ["nodejs"]
}
}),
createLanguage(require("linguist-languages/data/JavaScript"), {
override: {
vscodeLanguageIds: ["javascript"],
interpreters: data.interpreters.concat(["nodejs"])
})
),
createLanguage(require("linguist-languages/data/JavaScript"), data =>
Object.assign(data, {
name: "Flow",
since: "0.0.0",
parsers: ["babel", "flow"],
@ -25,66 +23,62 @@ const languages = [
aliases: [],
filenames: [],
extensions: [".js.flow"]
}
}),
createLanguage(require("linguist-languages/data/JSX"), {
override: {
})
),
createLanguage(require("linguist-languages/data/JSX"), data =>
Object.assign(data, {
since: "0.0.0",
parsers: ["babel", "flow"],
vscodeLanguageIds: ["javascriptreact"]
}
}),
createLanguage(require("linguist-languages/data/TypeScript"), {
override: {
})
),
createLanguage(require("linguist-languages/data/TypeScript"), data =>
Object.assign(data, {
since: "1.4.0",
parsers: ["typescript"],
vscodeLanguageIds: ["typescript"]
}
}),
createLanguage(require("linguist-languages/data/TSX"), {
override: {
})
),
createLanguage(require("linguist-languages/data/TSX"), data =>
Object.assign(data, {
since: "1.4.0",
parsers: ["typescript"],
vscodeLanguageIds: ["typescriptreact"]
}
}),
createLanguage(require("linguist-languages/data/JSON"), {
override: {
})
),
createLanguage(require("linguist-languages/data/JSON"), data =>
Object.assign(data, {
name: "JSON.stringify",
since: "1.13.0",
parsers: ["json-stringify"],
vscodeLanguageIds: ["json"],
extensions: [], // .json file defaults to json instead of json-stringify
filenames: ["package.json", "package-lock.json", "composer.json"]
}
}),
createLanguage(require("linguist-languages/data/JSON"), {
override: {
})
),
createLanguage(require("linguist-languages/data/JSON"), data =>
Object.assign(data, {
since: "1.5.0",
parsers: ["json"],
vscodeLanguageIds: ["json"]
},
extend: {
filenames: [".prettierrc"]
}
}),
createLanguage(require("linguist-languages/data/JSON with Comments"), {
override: {
vscodeLanguageIds: ["json"],
filenames: data.filenames.concat([".prettierrc"])
})
),
createLanguage(require("linguist-languages/data/JSON with Comments"), data =>
Object.assign(data, {
since: "1.5.0",
parsers: ["json"],
vscodeLanguageIds: ["jsonc"]
},
extend: {
filenames: [".eslintrc"]
}
}),
createLanguage(require("linguist-languages/data/JSON5"), {
override: {
vscodeLanguageIds: ["jsonc"],
filenames: data.filenames.concat([".eslintrc"])
})
),
createLanguage(require("linguist-languages/data/JSON5"), data =>
Object.assign(data, {
since: "1.13.0",
parsers: ["json5"],
vscodeLanguageIds: ["json5"]
}
})
})
)
];
const printers = {

View File

@ -5,29 +5,25 @@ const options = require("./options");
const createLanguage = require("../utils/create-language");
const languages = [
createLanguage(require("linguist-languages/data/Markdown"), {
override: {
createLanguage(require("linguist-languages/data/Markdown"), data =>
Object.assign(data, {
since: "1.8.0",
parsers: ["remark"],
vscodeLanguageIds: ["markdown"]
},
extend: {
filenames: ["README"]
},
exclude: {
extensions: [".mdx"]
}
}),
createLanguage(require("linguist-languages/data/Markdown"), {
override: {
vscodeLanguageIds: ["markdown"],
filenames: data.filenames.concat(["README"]),
extensions: data.extensions.filter(extension => extension !== ".mdx")
})
),
createLanguage(require("linguist-languages/data/Markdown"), data =>
Object.assign(data, {
name: "MDX",
since: "1.15.0",
parsers: ["mdx"],
vscodeLanguageIds: ["mdx"],
filenames: [],
extensions: [".mdx"]
}
})
})
)
];
const printers = {

View File

@ -5,13 +5,13 @@ const options = require("./options");
const createLanguage = require("../utils/create-language");
const languages = [
createLanguage(require("linguist-languages/data/YAML"), {
override: {
createLanguage(require("linguist-languages/data/YAML"), data =>
Object.assign(data, {
since: "1.14.0",
parsers: ["yaml"],
vscodeLanguageIds: ["yaml"]
}
})
})
)
];
module.exports = {

View File

@ -1,6 +1,6 @@
"use strict";
module.exports = function(linguistData, { extend, override, exclude }) {
module.exports = function(linguistData, transform) {
const language = {};
for (const key in linguistData) {
@ -8,23 +8,5 @@ module.exports = function(linguistData, { extend, override, exclude }) {
language[newKey] = linguistData[key];
}
if (extend) {
for (const key in extend) {
language[key] = (language[key] || []).concat(extend[key]);
}
}
if (exclude) {
for (const key in exclude) {
language[key] = (language[key] || []).filter(
value => (exclude[key] || []).indexOf(value) === -1
);
}
}
for (const key in override) {
language[key] = override[key];
}
return language;
return transform(language);
};