From 2bfaa7c2cf33db1e7355df009979dfdf1afa068d Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Mon, 17 Feb 2020 22:39:08 +0800 Subject: [PATCH] Simplify `createLanguage` (#7509) --- src/language-css/index.js | 12 ++++-------- src/language-graphql/index.js | 3 +-- src/language-handlebars/index.js | 3 +-- src/language-html/index.js | 10 +++------- src/language-js/index.js | 21 ++++++--------------- src/language-markdown/index.js | 4 +--- src/language-yaml/index.js | 3 +-- src/utils/create-language.js | 16 +++++++--------- 8 files changed, 24 insertions(+), 48 deletions(-) diff --git a/src/language-css/index.js b/src/language-css/index.js index e6c326f2f..786143fc2 100644 --- a/src/language-css/index.js +++ b/src/language-css/index.js @@ -5,26 +5,22 @@ const options = require("./options"); const createLanguage = require("../utils/create-language"); const languages = [ - createLanguage(require("linguist-languages/data/CSS"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/CSS"), () => ({ since: "1.4.0", parsers: ["css"], vscodeLanguageIds: ["css"] })), - createLanguage(require("linguist-languages/data/PostCSS"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/PostCSS"), () => ({ since: "1.4.0", parsers: ["css"], vscodeLanguageIds: ["postcss"] })), - createLanguage(require("linguist-languages/data/Less"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/Less"), () => ({ since: "1.4.0", parsers: ["less"], vscodeLanguageIds: ["less"] })), - createLanguage(require("linguist-languages/data/SCSS"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/SCSS"), () => ({ since: "1.4.0", parsers: ["scss"], vscodeLanguageIds: ["scss"] diff --git a/src/language-graphql/index.js b/src/language-graphql/index.js index 249f593bb..c6033893f 100644 --- a/src/language-graphql/index.js +++ b/src/language-graphql/index.js @@ -5,8 +5,7 @@ const options = require("./options"); const createLanguage = require("../utils/create-language"); const languages = [ - createLanguage(require("linguist-languages/data/GraphQL"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/GraphQL"), () => ({ since: "1.5.0", parsers: ["graphql"], vscodeLanguageIds: ["graphql"] diff --git a/src/language-handlebars/index.js b/src/language-handlebars/index.js index ae529a582..12b8ab9d0 100644 --- a/src/language-handlebars/index.js +++ b/src/language-handlebars/index.js @@ -4,8 +4,7 @@ const printer = require("./printer-glimmer"); const createLanguage = require("../utils/create-language"); const languages = [ - createLanguage(require("linguist-languages/data/Handlebars"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/Handlebars"), () => ({ since: null, // unreleased parsers: ["glimmer"], vscodeLanguageIds: ["handlebars"] diff --git a/src/language-html/index.js b/src/language-html/index.js index afbc37aa8..bda067b24 100644 --- a/src/language-html/index.js +++ b/src/language-html/index.js @@ -5,8 +5,7 @@ const createLanguage = require("../utils/create-language"); const options = require("./options"); const languages = [ - createLanguage(require("linguist-languages/data/HTML"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/HTML"), () => ({ name: "Angular", since: "1.15.0", parsers: ["angular"], @@ -15,7 +14,6 @@ const languages = [ filenames: [] })), createLanguage(require("linguist-languages/data/HTML"), data => ({ - ...data, since: "1.15.0", parsers: ["html"], vscodeLanguageIds: ["html"], @@ -23,8 +21,7 @@ const languages = [ ".mjml" // MJML is considered XML in Linguist but it should be formatted as HTML ]) })), - createLanguage(require("linguist-languages/data/HTML"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/HTML"), () => ({ name: "Lightning Web Components", since: "1.17.0", parsers: ["lwc"], @@ -32,8 +29,7 @@ const languages = [ extensions: [], filenames: [] })), - createLanguage(require("linguist-languages/data/Vue"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/Vue"), () => ({ since: "1.10.0", parsers: ["vue"], vscodeLanguageIds: ["vue"] diff --git a/src/language-js/index.js b/src/language-js/index.js index 7286afa22..8e4ca448d 100644 --- a/src/language-js/index.js +++ b/src/language-js/index.js @@ -7,14 +7,12 @@ const createLanguage = require("../utils/create-language"); const languages = [ createLanguage(require("linguist-languages/data/JavaScript"), data => ({ - ...data, since: "0.0.0", parsers: ["babel", "flow"], vscodeLanguageIds: ["javascript", "mongo"], interpreters: data.interpreters.concat(["nodejs"]) })), - createLanguage(require("linguist-languages/data/JavaScript"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/JavaScript"), () => ({ name: "Flow", since: "0.0.0", parsers: ["babel", "flow"], @@ -23,26 +21,22 @@ const languages = [ filenames: [], extensions: [".js.flow"] })), - createLanguage(require("linguist-languages/data/JSX"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/JSX"), () => ({ since: "0.0.0", parsers: ["babel", "flow"], vscodeLanguageIds: ["javascriptreact"] })), - createLanguage(require("linguist-languages/data/TypeScript"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/TypeScript"), () => ({ since: "1.4.0", parsers: ["typescript", "babel-ts"], vscodeLanguageIds: ["typescript"] })), - createLanguage(require("linguist-languages/data/TSX"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/TSX"), () => ({ since: "1.4.0", parsers: ["typescript", "babel-ts"], vscodeLanguageIds: ["typescriptreact"] })), - createLanguage(require("linguist-languages/data/JSON"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/JSON"), () => ({ name: "JSON.stringify", since: "1.13.0", parsers: ["json-stringify"], @@ -51,7 +45,6 @@ const languages = [ filenames: ["package.json", "package-lock.json", "composer.json"] })), createLanguage(require("linguist-languages/data/JSON"), data => ({ - ...data, since: "1.5.0", parsers: ["json"], vscodeLanguageIds: ["json"], @@ -60,15 +53,13 @@ const languages = [ createLanguage( require("linguist-languages/data/JSON with Comments"), data => ({ - ...data, since: "1.5.0", parsers: ["json"], vscodeLanguageIds: ["jsonc"], filenames: data.filenames.concat([".eslintrc"]) }) ), - createLanguage(require("linguist-languages/data/JSON5"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/JSON5"), () => ({ since: "1.13.0", parsers: ["json5"], vscodeLanguageIds: ["json5"] diff --git a/src/language-markdown/index.js b/src/language-markdown/index.js index 337e34741..e72eae4f1 100644 --- a/src/language-markdown/index.js +++ b/src/language-markdown/index.js @@ -6,15 +6,13 @@ const createLanguage = require("../utils/create-language"); const languages = [ createLanguage(require("linguist-languages/data/Markdown"), data => ({ - ...data, since: "1.8.0", parsers: ["remark"], vscodeLanguageIds: ["markdown"], filenames: data.filenames.concat(["README"]), extensions: data.extensions.filter(extension => extension !== ".mdx") })), - createLanguage(require("linguist-languages/data/Markdown"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/Markdown"), () => ({ name: "MDX", since: "1.15.0", parsers: ["mdx"], diff --git a/src/language-yaml/index.js b/src/language-yaml/index.js index a0a66be9a..f4544855e 100644 --- a/src/language-yaml/index.js +++ b/src/language-yaml/index.js @@ -5,8 +5,7 @@ const options = require("./options"); const createLanguage = require("../utils/create-language"); const languages = [ - createLanguage(require("linguist-languages/data/YAML"), data => ({ - ...data, + createLanguage(require("linguist-languages/data/YAML"), () => ({ since: "1.14.0", parsers: ["yaml"], vscodeLanguageIds: ["yaml"] diff --git a/src/utils/create-language.js b/src/utils/create-language.js index e4d2a5884..b059ecbd7 100644 --- a/src/utils/create-language.js +++ b/src/utils/create-language.js @@ -1,12 +1,10 @@ "use strict"; -module.exports = function(linguistData, transform) { - const language = {}; - - for (const key in linguistData) { - const newKey = key === "languageId" ? "linguistLanguageId" : key; - language[newKey] = linguistData[key]; - } - - return transform(language); +module.exports = function(linguistData, override) { + const { languageId, ...rest } = linguistData; + return { + linguistLanguageId: languageId, + ...rest, + ...override(linguistData) + }; };