routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
Generated
Vendored
+109
@@ -0,0 +1,109 @@
|
||||
import { getEslintDisabledRules } from './get-eslint-disabled-rules.js'
|
||||
import { matches } from './matches.js'
|
||||
/**
|
||||
* Determines if a comment should be treated as a partition separator.
|
||||
*
|
||||
* Partition comments divide code into independent sections that are sorted
|
||||
* separately. This prevents elements from being moved across these boundaries
|
||||
* during sorting operations.
|
||||
*
|
||||
* The function handles various configuration formats:
|
||||
*
|
||||
* - `true`: All comments are partition comments
|
||||
* - `false`: No comments are partition comments
|
||||
* - String/Regex: Comments matching the pattern are partitions
|
||||
* - Array: Comments matching any pattern in the array are partitions
|
||||
* - Object: Different patterns for block and line comments.
|
||||
*
|
||||
* ESLint disable comments are never treated as partition comments to avoid
|
||||
* interfering with ESLint's functionality.
|
||||
*
|
||||
* @example
|
||||
*
|
||||
* ```ts
|
||||
* // Configuration: partitionByComment: true
|
||||
* isPartitionComment({ partitionByComment: true, comment })
|
||||
* // Returns: true for any non-ESLint-disable comment
|
||||
* ```
|
||||
*
|
||||
* @example
|
||||
*
|
||||
* ```ts
|
||||
* // Configuration: partitionByComment: 'Section:'
|
||||
* const comment = { value: ' Section: Utils ', type: 'Line' }
|
||||
* isPartitionComment({ partitionByComment: 'Section:', comment })
|
||||
* // Returns: true (comment contains 'Section:')
|
||||
* ```
|
||||
*
|
||||
* @example
|
||||
*
|
||||
* ```ts
|
||||
* // Configuration: partitionByComment: { block: true, line: '^-' }
|
||||
* const blockComment = { value: ' Helper functions ', type: 'Block' }
|
||||
* const lineComment = { value: '--- Utils ---', type: 'Line' }
|
||||
* isPartitionComment({
|
||||
* partitionByComment: { block: true, line: '^-' },
|
||||
* comment: blockComment,
|
||||
* })
|
||||
* // Returns: true (all block comments are partitions)
|
||||
* isPartitionComment({
|
||||
* partitionByComment: { block: true, line: '^-' },
|
||||
* comment: lineComment,
|
||||
* })
|
||||
* // Returns: true (line comment starts with '-')
|
||||
* ```
|
||||
*
|
||||
* @param params - Parameters for partition check.
|
||||
* @returns True if the comment is a partition separator, false otherwise.
|
||||
*/
|
||||
function isPartitionComment({ partitionByComment, comment }) {
|
||||
if (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 === 'Block' && 'block' in partitionByComment) {
|
||||
relevantPartitionByComment = partitionByComment.block
|
||||
}
|
||||
if (comment.type === 'Line' && 'line' in partitionByComment) {
|
||||
relevantPartitionByComment = partitionByComment.line
|
||||
}
|
||||
return (
|
||||
relevantPartitionByComment !== void 0 &&
|
||||
isTrimmedCommentPartitionComment({
|
||||
partitionByComment: relevantPartitionByComment,
|
||||
trimmedComment,
|
||||
})
|
||||
)
|
||||
}
|
||||
/**
|
||||
* Checks if a trimmed comment matches the partition criteria.
|
||||
*
|
||||
* Helper function that performs the actual matching logic against a trimmed
|
||||
* comment string. Handles both boolean flags and pattern matching.
|
||||
*
|
||||
* @param params - Parameters for matching.
|
||||
* @param params.partitionByComment - Boolean flag or pattern to match against.
|
||||
* @param params.trimmedComment - Comment text with whitespace trimmed.
|
||||
* @returns True if the comment matches the partition criteria.
|
||||
*/
|
||||
function isTrimmedCommentPartitionComment({
|
||||
partitionByComment,
|
||||
trimmedComment,
|
||||
}) {
|
||||
if (typeof partitionByComment === 'boolean') {
|
||||
return partitionByComment
|
||||
}
|
||||
return matches(trimmedComment, partitionByComment)
|
||||
}
|
||||
export { isPartitionComment }
|
||||
Reference in New Issue
Block a user