routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
Generated
Vendored
+37
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* Returns a list of comments before a given node, excluding ones that are right
|
||||
* after code. Includes comment blocks, ignore shebang comments.
|
||||
*
|
||||
* @param params - Parameters object.
|
||||
* @param params.node - The node to get comments before.
|
||||
* @param params.sourceCode - The source code object.
|
||||
* @param [params.tokenValueToIgnoreBefore] - Allows the following token to
|
||||
* directly precede the node.
|
||||
* @returns An array of comments before the given node.
|
||||
*/
|
||||
function getCommentsBefore({ tokenValueToIgnoreBefore, sourceCode, node }) {
|
||||
let commentsBefore = getRelevantCommentsBeforeNodeOrToken(sourceCode, node)
|
||||
let tokenBeforeNode = sourceCode.getTokenBefore(node)
|
||||
if (
|
||||
commentsBefore.length > 0 ||
|
||||
!tokenValueToIgnoreBefore ||
|
||||
tokenBeforeNode?.value !== tokenValueToIgnoreBefore
|
||||
) {
|
||||
return commentsBefore
|
||||
}
|
||||
return getRelevantCommentsBeforeNodeOrToken(sourceCode, tokenBeforeNode)
|
||||
}
|
||||
function getRelevantCommentsBeforeNodeOrToken(source, node) {
|
||||
return source
|
||||
.getCommentsBefore(node)
|
||||
.filter(comment => !isShebangComment(comment))
|
||||
.filter(comment => {
|
||||
return (
|
||||
source.getTokenBefore(comment)?.loc.end.line !== comment.loc.end.line
|
||||
)
|
||||
})
|
||||
}
|
||||
function isShebangComment(comment) {
|
||||
return comment.type === 'Shebang' || comment.type === 'Hashbang'
|
||||
}
|
||||
export { getCommentsBefore }
|
||||
Reference in New Issue
Block a user