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 createLanguage = require("../utils/create-language");
const languages = [ const languages = [
createLanguage(require("linguist-languages/data/CSS"), { createLanguage(require("linguist-languages/data/CSS"), data =>
override: { Object.assign(data, {
since: "1.4.0", since: "1.4.0",
parsers: ["css"], parsers: ["css"],
vscodeLanguageIds: ["css"] vscodeLanguageIds: ["css"]
} })
}), ),
createLanguage(require("linguist-languages/data/PostCSS"), { createLanguage(require("linguist-languages/data/PostCSS"), data =>
override: { Object.assign(data, {
since: "1.4.0", since: "1.4.0",
parsers: ["css"], parsers: ["css"],
vscodeLanguageIds: ["postcss"] vscodeLanguageIds: ["postcss"],
}, extensions: data.extensions.concat(".postcss")
extend: { })
extensions: [".postcss"] ),
} createLanguage(require("linguist-languages/data/Less"), data =>
}), Object.assign(data, {
createLanguage(require("linguist-languages/data/Less"), {
override: {
since: "1.4.0", since: "1.4.0",
parsers: ["less"], parsers: ["less"],
vscodeLanguageIds: ["less"] vscodeLanguageIds: ["less"]
} })
}), ),
createLanguage(require("linguist-languages/data/SCSS"), { createLanguage(require("linguist-languages/data/SCSS"), data =>
override: { Object.assign(data, {
since: "1.4.0", since: "1.4.0",
parsers: ["scss"], parsers: ["scss"],
vscodeLanguageIds: ["scss"] vscodeLanguageIds: ["scss"]
} })
}) )
]; ];
const printers = { const printers = {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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