You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							59 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
	
	
							59 lines
						
					
					
						
							2.0 KiB
						
					
					
				"use strict"; | 
						|
 | 
						|
// comment fixes | 
						|
module.exports = function(ast, comments, tokens) { | 
						|
  if (comments.length) { | 
						|
    var firstComment = comments[0]; | 
						|
    var lastComment = comments[comments.length - 1]; | 
						|
    // fixup program start | 
						|
    if (!tokens.length) { | 
						|
      // if no tokens, the program starts at the end of the last comment | 
						|
      ast.start = lastComment.end; | 
						|
      ast.loc.start.line = lastComment.loc.end.line; | 
						|
      ast.loc.start.column = lastComment.loc.end.column; | 
						|
 | 
						|
      if (ast.leadingComments === null && ast.innerComments.length) { | 
						|
        ast.leadingComments = ast.innerComments; | 
						|
      } | 
						|
    } else if (firstComment.start < tokens[0].start) { | 
						|
      // if there are comments before the first token, the program starts at the first token | 
						|
      var token = tokens[0]; | 
						|
      // ast.start = token.start; | 
						|
      // ast.loc.start.line = token.loc.start.line; | 
						|
      // ast.loc.start.column = token.loc.start.column; | 
						|
 | 
						|
      // estraverse do not put leading comments on first node when the comment | 
						|
      // appear before the first token | 
						|
      if (ast.body.length) { | 
						|
        var node = ast.body[0]; | 
						|
        node.leadingComments = []; | 
						|
        var firstTokenStart = token.start; | 
						|
        var len = comments.length; | 
						|
        for (var i = 0; i < len && comments[i].start < firstTokenStart; i++) { | 
						|
          node.leadingComments.push(comments[i]); | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
    // fixup program end | 
						|
    if (tokens.length) { | 
						|
      var lastToken = tokens[tokens.length - 1]; | 
						|
      if (lastComment.end > lastToken.end) { | 
						|
        // If there is a comment after the last token, the program ends at the | 
						|
        // last token and not the comment | 
						|
        // ast.end = lastToken.end; | 
						|
        ast.range[1] = lastToken.end; | 
						|
        ast.loc.end.line = lastToken.loc.end.line; | 
						|
        ast.loc.end.column = lastToken.loc.end.column; | 
						|
      } | 
						|
    } | 
						|
  } else { | 
						|
    if (!tokens.length) { | 
						|
      ast.loc.start.line = 1; | 
						|
      ast.loc.end.line = 1; | 
						|
    } | 
						|
  } | 
						|
  if (ast.body && ast.body.length > 0) { | 
						|
    ast.loc.start.line = ast.body[0].loc.start.line; | 
						|
    ast.range[0] = ast.body[0].start; | 
						|
  } | 
						|
};
 | 
						|
 |