mirror of
https://github.com/Sevichecc/Urara-Blog.git
synced 2025-05-05 17:29:31 +08:00
92 lines
No EOL
4.2 KiB
Text
92 lines
No EOL
4.2 KiB
Text
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const getESLintCoreRule_1 = require("../util/getESLintCoreRule");
|
|
const util_1 = require("../util");
|
|
const baseRule = (0, getESLintCoreRule_1.getESLintCoreRule)('brace-style');
|
|
exports.default = (0, util_1.createRule)({
|
|
name: 'brace-style',
|
|
meta: {
|
|
type: 'layout',
|
|
docs: {
|
|
description: 'Enforce consistent brace style for blocks',
|
|
recommended: false,
|
|
extendsBaseRule: true,
|
|
},
|
|
messages: baseRule.meta.messages,
|
|
fixable: baseRule.meta.fixable,
|
|
hasSuggestions: baseRule.meta.hasSuggestions,
|
|
schema: baseRule.meta.schema,
|
|
},
|
|
defaultOptions: ['1tbs'],
|
|
create(context) {
|
|
const [style, { allowSingleLine } = { allowSingleLine: false }] = context.options;
|
|
const isAllmanStyle = style === 'allman';
|
|
const sourceCode = context.getSourceCode();
|
|
const rules = baseRule.create(context);
|
|
/**
|
|
* Checks a pair of curly brackets based on the user's config
|
|
*/
|
|
function validateCurlyPair(openingCurlyToken, closingCurlyToken) {
|
|
if (allowSingleLine &&
|
|
(0, util_1.isTokenOnSameLine)(openingCurlyToken, closingCurlyToken)) {
|
|
return;
|
|
}
|
|
const tokenBeforeOpeningCurly = sourceCode.getTokenBefore(openingCurlyToken);
|
|
const tokenBeforeClosingCurly = sourceCode.getTokenBefore(closingCurlyToken);
|
|
const tokenAfterOpeningCurly = sourceCode.getTokenAfter(openingCurlyToken);
|
|
if (!isAllmanStyle &&
|
|
!(0, util_1.isTokenOnSameLine)(tokenBeforeOpeningCurly, openingCurlyToken)) {
|
|
context.report({
|
|
node: openingCurlyToken,
|
|
messageId: 'nextLineOpen',
|
|
fix: fixer => {
|
|
const textRange = [
|
|
tokenBeforeOpeningCurly.range[1],
|
|
openingCurlyToken.range[0],
|
|
];
|
|
const textBetween = sourceCode.text.slice(textRange[0], textRange[1]);
|
|
if (textBetween.trim()) {
|
|
return null;
|
|
}
|
|
return fixer.replaceTextRange(textRange, ' ');
|
|
},
|
|
});
|
|
}
|
|
if (isAllmanStyle &&
|
|
(0, util_1.isTokenOnSameLine)(tokenBeforeOpeningCurly, openingCurlyToken)) {
|
|
context.report({
|
|
node: openingCurlyToken,
|
|
messageId: 'sameLineOpen',
|
|
fix: fixer => fixer.insertTextBefore(openingCurlyToken, '\n'),
|
|
});
|
|
}
|
|
if ((0, util_1.isTokenOnSameLine)(openingCurlyToken, tokenAfterOpeningCurly) &&
|
|
tokenAfterOpeningCurly !== closingCurlyToken) {
|
|
context.report({
|
|
node: openingCurlyToken,
|
|
messageId: 'blockSameLine',
|
|
fix: fixer => fixer.insertTextAfter(openingCurlyToken, '\n'),
|
|
});
|
|
}
|
|
if ((0, util_1.isTokenOnSameLine)(tokenBeforeClosingCurly, closingCurlyToken) &&
|
|
tokenBeforeClosingCurly !== openingCurlyToken) {
|
|
context.report({
|
|
node: closingCurlyToken,
|
|
messageId: 'singleLineClose',
|
|
fix: fixer => fixer.insertTextBefore(closingCurlyToken, '\n'),
|
|
});
|
|
}
|
|
}
|
|
return Object.assign(Object.assign({}, rules), { 'TSInterfaceBody, TSModuleBlock'(node) {
|
|
const openingCurly = sourceCode.getFirstToken(node);
|
|
const closingCurly = sourceCode.getLastToken(node);
|
|
validateCurlyPair(openingCurly, closingCurly);
|
|
},
|
|
TSEnumDeclaration(node) {
|
|
const closingCurly = sourceCode.getLastToken(node);
|
|
const openingCurly = sourceCode.getTokenBefore(node.members.length ? node.members[0] : closingCurly);
|
|
validateCurlyPair(openingCurly, closingCurly);
|
|
} });
|
|
},
|
|
});
|
|
//# sourceMappingURL=brace-style.js.map |