From 908d4a4384fad94c6938cc98acbce4ccbe4081ec Mon Sep 17 00:00:00 2001 From: dev1437 Date: Wed, 28 Sep 2022 21:52:50 +0800 Subject: [PATCH 01/15] Create initial multiline ternary rule --- docs/rules/multiline-ternary.md | 30 ++++++ lib/rules/multiline-ternary.js | 16 +++ tests/lib/rules/multiline-ternary.js | 139 +++++++++++++++++++++++++++ 3 files changed, 185 insertions(+) create mode 100644 docs/rules/multiline-ternary.md create mode 100644 lib/rules/multiline-ternary.js create mode 100644 tests/lib/rules/multiline-ternary.js diff --git a/docs/rules/multiline-ternary.md b/docs/rules/multiline-ternary.md new file mode 100644 index 000000000..bd3f56734 --- /dev/null +++ b/docs/rules/multiline-ternary.md @@ -0,0 +1,30 @@ +--- +pageClass: rule-details +sidebarDepth: 0 +title: vue/multiline-ternary +description: xxx +--- +# vue/multiline-ternary + +> xxx + +- :exclamation: ***This rule has not been released yet.*** + +## :book: Rule Details + +This rule .... + + + +```vue + +``` + + + +## :wrench: Options + +Nothing. + diff --git a/lib/rules/multiline-ternary.js b/lib/rules/multiline-ternary.js new file mode 100644 index 000000000..24c310f8b --- /dev/null +++ b/lib/rules/multiline-ternary.js @@ -0,0 +1,16 @@ +/** + * @author *****your name***** + * See LICENSE file in root directory for full license. + */ +'use strict' + +// ------------------------------------------------------------------------------ +// Requirements +// ------------------------------------------------------------------------------ + +const { wrapCoreRule } = require('../utils') + +// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +module.exports = wrapCoreRule('multiline-ternary', { + skipDynamicArguments: true +}) diff --git a/tests/lib/rules/multiline-ternary.js b/tests/lib/rules/multiline-ternary.js new file mode 100644 index 000000000..4c553b676 --- /dev/null +++ b/tests/lib/rules/multiline-ternary.js @@ -0,0 +1,139 @@ +/** + * @author *****your name***** + * See LICENSE file in root directory for full license. + */ +'use strict' + +const RuleTester = require('eslint').RuleTester +const rule = require('../../../lib/rules/multiline-ternary') + +const tester = new RuleTester({ + parser: require.resolve('vue-eslint-parser'), + parserOptions: { + ecmaVersion: 2020, + sourceType: 'module' + } +}) + +tester.run('multiline-ternary', rule, { + valid: [ + { + filename: 'test.vue', + code: ` + + ` + }, + { + filename: 'test.vue', + code: ` + + `, + options: ["never"] + } + ], + invalid: [ + { + filename: 'test.vue', + code: ` + + `, + output: ` + + `, + errors: [ + { + message: 'Expected newline between consequent and alternate of ternary expression.', + line: 5, + column: 13 + }, + ], + options: ["always-multiline"] + }, + { + filename: 'test.vue', + code: ` + + `, + output: ` + + `, + errors: [ + { + message: 'Unexpected newline between test and consequent of ternary expression.', + line: 4, + column: 19 + }, + ], + options: ["never"] + }, + { + filename: 'test.vue', + code: ` + + `, + output: ` + + `, + errors: [ + { + message: 'Expected newline between test and consequent of ternary expression.', + line: 4, + column: 19 + }, + { + message: 'Expected newline between consequent and alternate of ternary expression.', + line: 4, + column: 45 + } + ] + } + ] +}) From 9a65bc9ba357385dde508feb5dac8e4018b695de Mon Sep 17 00:00:00 2001 From: dev1437 Date: Thu, 29 Sep 2022 20:33:08 +0800 Subject: [PATCH 02/15] Docs --- docs/rules/multiline-ternary.md | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/docs/rules/multiline-ternary.md b/docs/rules/multiline-ternary.md index bd3f56734..c293b535c 100644 --- a/docs/rules/multiline-ternary.md +++ b/docs/rules/multiline-ternary.md @@ -2,29 +2,17 @@ pageClass: rule-details sidebarDepth: 0 title: vue/multiline-ternary -description: xxx +description: Enforce newlines between operands of ternary expressions in `