demo/typescript.js
function isInsideComment(sourceFile, token, position) {
        // The position has to be: 1. in the leading trivia (before token.getStart()), and 2. within a comment
        return position <= token.getStart(sourceFile) &&
            (isInsideCommentRange(ts.getTrailingCommentRanges(sourceFile.text, token.getFullStart())) ||
            isInsideCommentRange(ts.getLeadingCommentRanges(sourceFile.text, token.getFullStart())));
        function isInsideCommentRange(comments) {
            return ts.forEach(comments, function (comment) {
                // either we are 1. completely inside the comment, or 2. at the end of the comment
                if (comment.pos < position && position < comment.end) {
                    return true;
                }
                else if (position === comment.end) {
                    var text = sourceFile.text;
                    var width = comment.end - comment.pos;
                    // is single line comment or just /*
                    if (width <= 2 || text.charCodeAt(comment.pos + 1) === 47 /* slash */) {
                        return true;
                    }
                    else {
                        // is unterminated multi-line comment
                        return !(text.charCodeAt(comment.end - 1) === 47 /* slash */ &&
                        text.charCodeAt(comment.end - 2) === 42 /* asterisk */);
                    }
                }
                return false;
            });
        }
    }
function isInsideComment(sourceFile, token, position) {
        // The position has to be: 1. in the leading trivia (before token.getStart()), and 2. within a comment
        return position <= token.getStart(sourceFile) &&
            (isInsideCommentRange(ts.getTrailingCommentRanges(sourceFile.text, token.getFullStart())) ||
            isInsideCommentRange(ts.getLeadingCommentRanges(sourceFile.text, token.getFullStart())));
        function isInsideCommentRange(comments) {
            return ts.forEach(comments, function (comment) {
                // either we are 1. completely inside the comment, or 2. at the end of the comment
                if (comment.pos < position && position < comment.end) {
                    return true;
                }
                else if (position === comment.end) {
                    var text = sourceFile.text;
                    var width = comment.end - comment.pos;
                    // is single line comment or just /*
                    if (width <= 2 || text.charCodeAt(comment.pos + 1) === 47 /* slash */) {
                        return true;
                    }
                    else {
                        // is unterminated multi-line comment
                        return !(text.charCodeAt(comment.end - 1) === 47 /* slash */ &&
                        text.charCodeAt(comment.end - 2) === 42 /* asterisk */);
                    }
                }
                return false;
            });
        }
    }
function isInsideComment ( sourceFile , token , position ) { // The position has to be: 1. in the leading trivia (before token.getStart()), and 2. within a comment return position <= token . getStart ( sourceFile ) && ( isInsideCommentRange ( ts . getTrailingCommentRanges ( sourceFile . text , token . getFullStart ( ) ) ) || isInsideCommentRange ( ts . getLeadingCommentRanges ( sourceFile . text , token . getFullStart ( ) ) ) ) ; function isInsideCommentRange ( comments ) { return ts . forEach ( comments , function ( comment ) { // either we are 1. completely inside the comment, or 2. at the end of the comment if ( comment . pos < position && position < comment . end ) { return true ; } else if ( position === comment . end ) { var text = sourceFile . text ; var width = comment . end - comment . pos ; // is single line comment or just /* if ( width <= 2 || text . charCodeAt ( comment . pos + 1 ) === 47 /* slash */ ) { return true ; } else { // is unterminated multi-line comment return ! ( text . charCodeAt ( comment . end - 1 ) === 47 /* slash */ && text . charCodeAt ( comment . end - 2 ) === 42 /* asterisk */ ) ; } } return false ; } ) ; } }
Returns true if the position is within a comment
Returns true if the position is within a comment