From 227199244643a11d52effe9f77d647f540d64751 Mon Sep 17 00:00:00 2001 From: Ika Date: Sat, 7 Jul 2018 20:46:34 +0800 Subject: [PATCH] feat(json): add jsonc to aliases and use it to find parser in markdown embed (#4734) --- package.json | 2 +- src/language-js/index.js | 10 ++- src/language-markdown/embed.js | 1 + .../__snapshots__/jsfmt.spec.js.snap | 17 ++++ tests/multiparser_markdown_json/jsonc.md | 6 ++ .../__snapshots__/support-info.js.snap | 77 ++++++++++++++----- yarn.lock | 6 +- 7 files changed, 93 insertions(+), 26 deletions(-) create mode 100644 tests/multiparser_markdown_json/jsonc.md diff --git a/package.json b/package.json index d724069b..7c0e1fb5 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "jest-docblock": "23.2.0", "json-stable-stringify": "1.0.1", "leven": "2.1.0", - "linguist-languages": "6.2.0", + "linguist-languages": "6.2.1-dev.20180706", "lodash.uniqby": "4.7.0", "mem": "1.1.0", "minimatch": "3.0.4", diff --git a/src/language-js/index.js b/src/language-js/index.js index 4d92977f..c72b6ee9 100644 --- a/src/language-js/index.js +++ b/src/language-js/index.js @@ -43,8 +43,14 @@ const languages = [ languageExtend({}, require("linguist-languages/data/json"), { since: "1.5.0", parsers: ["json"], - filenames: [".eslintrc", ".prettierrc"], - vscodeLanguageIds: ["json", "jsonc"] + filenames: [".prettierrc"], + vscodeLanguageIds: ["json"] + }), + languageExtend({}, require("linguist-languages/data/json-with-comments"), { + since: "1.5.0", + parsers: ["json"], + filenames: [".eslintrc"], + vscodeLanguageIds: ["jsonc"] }), languageExtend({}, require("linguist-languages/data/json5"), { since: "1.13.0", diff --git a/src/language-markdown/embed.js b/src/language-markdown/embed.js index b27990d4..eb8ace06 100644 --- a/src/language-markdown/embed.js +++ b/src/language-markdown/embed.js @@ -57,6 +57,7 @@ function embed(path, print, textToDoc, options) { const language = supportInfo.languages.find( language => language.name.toLowerCase() === lang || + (language.aliases && language.aliases.indexOf(lang) !== -1) || (language.extensions && language.extensions.find(ext => ext.substring(1) === lang)) ); diff --git a/tests/multiparser_markdown_json/__snapshots__/jsfmt.spec.js.snap b/tests/multiparser_markdown_json/__snapshots__/jsfmt.spec.js.snap index 6ec5d1d3..fa9ad84d 100644 --- a/tests/multiparser_markdown_json/__snapshots__/jsfmt.spec.js.snap +++ b/tests/multiparser_markdown_json/__snapshots__/jsfmt.spec.js.snap @@ -1,5 +1,22 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`jsonc.md - markdown-verify 1`] = ` +\`\`\`jsonc + // comment +{ + "foo" : "bar" +} +\`\`\` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +\`\`\`jsonc +// comment +{ + "foo": "bar" +} +\`\`\` + +`; + exports[`trailing_comma.md - markdown-verify 1`] = ` \`\`\`json { diff --git a/tests/multiparser_markdown_json/jsonc.md b/tests/multiparser_markdown_json/jsonc.md new file mode 100644 index 00000000..dcdb2144 --- /dev/null +++ b/tests/multiparser_markdown_json/jsonc.md @@ -0,0 +1,6 @@ +```jsonc + // comment +{ + "foo" : "bar" +} +``` diff --git a/tests_integration/__tests__/__snapshots__/support-info.js.snap b/tests_integration/__tests__/__snapshots__/support-info.js.snap index 8b60c8c4..34680d0c 100644 --- a/tests_integration/__tests__/__snapshots__/support-info.js.snap +++ b/tests_integration/__tests__/__snapshots__/support-info.js.snap @@ -229,7 +229,7 @@ exports[`API getSupportInfo() with version 1.4.0 -> 1.5.0 1`] = ` - First value + Second value -@@ -5,10 +5,16 @@ +@@ -5,10 +5,19 @@ ], \\"Flow\\": Array [ \\"babylon\\", @@ -240,13 +240,16 @@ exports[`API getSupportInfo() with version 1.4.0 -> 1.5.0 1`] = ` + ], + \\"JSON\\": Array [ + \\"json\\", ++ ], ++ \\"JSON with Comments\\": Array [ ++ \\"json\\", + ], \\"JSX\\": Array [ \\"babylon\\", \\"flow\\", ], \\"JavaScript\\": Array [ -@@ -54,10 +60,12 @@ +@@ -54,10 +63,12 @@ \\"choices\\": Array [ \\"flow\\", \\"babylon\\", @@ -277,7 +280,7 @@ exports[`API getSupportInfo() with version 1.5.0 -> 1.7.1 1`] = ` \\"babylon\\", \\"flow\\", ], -@@ -20,17 +20,17 @@ +@@ -23,17 +23,17 @@ \\"JavaScript\\": Array [ \\"babylon\\", \\"flow\\", @@ -298,7 +301,7 @@ exports[`API getSupportInfo() with version 1.5.0 -> 1.7.1 1`] = ` \\"typescript\\", ], }, -@@ -59,11 +59,13 @@ +@@ -62,11 +62,13 @@ \\"parser\\": Object { \\"choices\\": Array [ \\"flow\\", @@ -313,7 +316,7 @@ exports[`API getSupportInfo() with version 1.5.0 -> 1.7.1 1`] = ` ], \\"default\\": \\"babylon\\", \\"type\\": \\"choice\\", -@@ -93,10 +95,14 @@ +@@ -96,10 +98,14 @@ \\"start\\": 0, \\"step\\": 1, }, @@ -335,7 +338,7 @@ exports[`API getSupportInfo() with version 1.7.1 -> 1.8.0 1`] = ` - First value + Second value -@@ -22,10 +22,13 @@ +@@ -25,10 +25,13 @@ \\"flow\\", ], \\"Less\\": Array [ @@ -349,7 +352,7 @@ exports[`API getSupportInfo() with version 1.7.1 -> 1.8.0 1`] = ` ], \\"SCSS\\": Array [ \\"scss\\", -@@ -50,10 +53,14 @@ +@@ -53,10 +56,14 @@ }, \\"filepath\\": Object { \\"default\\": undefined, @@ -364,7 +367,7 @@ exports[`API getSupportInfo() with version 1.7.1 -> 1.8.0 1`] = ` \\"type\\": \\"boolean\\", }, \\"parser\\": Object { -@@ -64,10 +71,11 @@ +@@ -67,10 +74,11 @@ \\"css\\", \\"less\\", \\"scss\\", @@ -383,7 +386,7 @@ exports[`API getSupportInfo() with version 1.8.0 -> 1.8.2 1`] = ` - First value + Second value -@@ -85,10 +85,18 @@ +@@ -88,10 +88,18 @@ \\"start\\": 0, \\"step\\": 1, }, @@ -409,10 +412,10 @@ exports[`API getSupportInfo() with version 1.8.2 -> undefined 1`] = ` - First value + Second value -@@ -11,10 +11,16 @@ - \\"graphql\\", +@@ -14,10 +14,16 @@ + \\"json\\", ], - \\"JSON\\": Array [ + \\"JSON with Comments\\": Array [ \\"json\\", ], + \\"JSON.stringify\\": Array [ @@ -426,7 +429,7 @@ exports[`API getSupportInfo() with version 1.8.2 -> undefined 1`] = ` \\"flow\\", ], \\"JavaScript\\": Array [ -@@ -34,12 +40,23 @@ +@@ -37,12 +43,23 @@ \\"scss\\", ], \\"TypeScript\\": Array [ @@ -450,7 +453,7 @@ exports[`API getSupportInfo() with version 1.8.2 -> undefined 1`] = ` \\"type\\": \\"boolean\\", }, \\"cursorOffset\\": Object { -@@ -70,16 +87,27 @@ +@@ -73,16 +90,27 @@ \\"typescript\\", \\"css\\", \\"less\\", @@ -479,7 +482,7 @@ exports[`API getSupportInfo() with version 1.8.2 -> undefined 1`] = ` \\"range\\": Object { \\"end\\": Infinity, \\"start\\": 0, -@@ -87,14 +115,15 @@ +@@ -90,14 +118,15 @@ }, \\"type\\": \\"int\\", }, @@ -614,13 +617,10 @@ exports[`CLI --support-info (stdout) 1`] = ` \\"filenames\\": [ \\".arcconfig\\", \\".htmlhintrc\\", - \\".jscsrc\\", - \\".jshintrc\\", \\".tern-config\\", \\".tern-project\\", \\"composer.lock\\", \\"mcmod.info\\", - \\".eslintrc\\", \\".prettierrc\\" ], \\"group\\": \\"JavaScript\\", @@ -631,14 +631,51 @@ exports[`CLI --support-info (stdout) 1`] = ` \\"since\\": \\"1.5.0\\", \\"tmScope\\": \\"source.json\\", \\"type\\": \\"data\\", - \\"vscodeLanguageIds\\": [\\"json\\", \\"jsonc\\"] + \\"vscodeLanguageIds\\": [\\"json\\"] + }, + { + \\"aceMode\\": \\"javascript\\", + \\"aliases\\": [\\"jsonc\\"], + \\"codemirrorMimeType\\": \\"text/javascript\\", + \\"codemirrorMode\\": \\"javascript\\", + \\"extensions\\": [ + \\".sublime-build\\", + \\".sublime-commands\\", + \\".sublime-completions\\", + \\".sublime-keymap\\", + \\".sublime-macro\\", + \\".sublime-menu\\", + \\".sublime-mousemap\\", + \\".sublime-project\\", + \\".sublime-settings\\", + \\".sublime-theme\\", + \\".sublime-workspace\\", + \\".sublime_metrics\\", + \\".sublime_session\\" + ], + \\"filenames\\": [ + \\".babelrc\\", + \\".eslintrc.json\\", + \\".jscsrc\\", + \\".jshintrc\\", + \\".jslintrc\\", + \\"tsconfig.json\\", + \\".eslintrc\\" + ], + \\"group\\": \\"JSON\\", + \\"linguistLanguageId\\": 423, + \\"name\\": \\"JSON with Comments\\", + \\"parsers\\": [\\"json\\"], + \\"since\\": \\"1.5.0\\", + \\"tmScope\\": \\"source.js\\", + \\"type\\": \\"data\\", + \\"vscodeLanguageIds\\": [\\"jsonc\\"] }, { \\"aceMode\\": \\"javascript\\", \\"codemirrorMimeType\\": \\"application/json\\", \\"codemirrorMode\\": \\"javascript\\", \\"extensions\\": [\\".json5\\"], - \\"filenames\\": [\\".babelrc\\", \\".jslintrc\\"], \\"linguistLanguageId\\": 175, \\"name\\": \\"JSON5\\", \\"parsers\\": [\\"json5\\"], diff --git a/yarn.lock b/yarn.lock index c2539e04..dab428ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3676,9 +3676,9 @@ lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" -linguist-languages@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/linguist-languages/-/linguist-languages-6.2.0.tgz#90c4d74d29828ccc8c08f59b36b62df6d33b2b7f" +linguist-languages@6.2.1-dev.20180706: + version "6.2.1-dev.20180706" + resolved "https://registry.yarnpkg.com/linguist-languages/-/linguist-languages-6.2.1-dev.20180706.tgz#119766ff7e753654a06a6ae64364483458fa6664" load-json-file@^1.0.0: version "1.1.0"