eslint-plugin-perfectionist
Version:
ESLint plugin for sorting various data such as objects, imports, types, enums, JSX props, etc.
56 lines (55 loc) • 1.6 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' })
const types = require('@typescript-eslint/types')
const getEslintDisabledRules = require('./get-eslint-disabled-rules.js')
const matches = require('./matches.js')
let isPartitionComment = ({ partitionByComment, comment }) => {
if (
getEslintDisabledRules.getEslintDisabledRules(comment.value) ||
!partitionByComment
) {
return false
}
let trimmedComment = comment.value.trim()
if (
Array.isArray(partitionByComment) ||
typeof partitionByComment === 'boolean' ||
typeof partitionByComment === 'string'
) {
return isTrimmedCommentPartitionComment({
partitionByComment,
trimmedComment,
})
}
let relevantPartitionByComment
if (
comment.type === types.AST_TOKEN_TYPES.Block &&
'block' in partitionByComment
) {
relevantPartitionByComment = partitionByComment.block
}
if (
comment.type === types.AST_TOKEN_TYPES.Line &&
'line' in partitionByComment
) {
relevantPartitionByComment = partitionByComment.line
}
return (
// eslint-disable-next-line no-undefined
relevantPartitionByComment !== void 0 &&
isTrimmedCommentPartitionComment({
partitionByComment: relevantPartitionByComment,
trimmedComment,
})
)
}
let isTrimmedCommentPartitionComment = ({
partitionByComment,
trimmedComment,
}) => {
if (typeof partitionByComment === 'boolean') {
return partitionByComment
}
return matches.matches(trimmedComment, partitionByComment)
}
exports.isPartitionComment = isPartitionComment