Skip to content
This repository was archived by the owner on Jan 19, 2019. It is now read-only.

Commit a5e2293

Browse files
committed
Add another test and fix issues with /* in line comment
1 parent f1649b0 commit a5e2293

7 files changed

+484
-23
lines changed

lib/convert-comments.js

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const ts = require("typescript"),
3030
* @private
3131
*/
3232
function convertTypeScriptCommentToEsprimaComment(block, text, start, end, startLoc, endLoc) {
33-
var comment = {
33+
const comment = {
3434
type: block ? "Block" : "Line",
3535
value: text
3636
};
@@ -58,19 +58,19 @@ function convertTypeScriptCommentToEsprimaComment(block, text, start, end, start
5858
* @private
5959
*/
6060
function getCommentFromTriviaScanner(triviaScanner, ast, code) {
61-
var kind = triviaScanner.getToken();
62-
var isBlock = (kind === ts.SyntaxKind.MultiLineCommentTrivia);
63-
var range = {
61+
const kind = triviaScanner.getToken();
62+
const isBlock = (kind === ts.SyntaxKind.MultiLineCommentTrivia);
63+
const range = {
6464
pos: triviaScanner.getTokenPos(),
6565
end: triviaScanner.getTextPos(),
6666
kind: triviaScanner.getToken()
6767
};
6868

69-
var comment = code.substring(range.pos, range.end);
70-
var text = comment.replace("//", "").replace("/*", "").replace("*/", "");
71-
var loc = nodeUtils.getLocFor(range.pos, range.end, ast);
69+
const comment = code.substring(range.pos, range.end);
70+
const text = (isBlock) ? comment.replace(/^\/\*/, "").replace(/\*\/$/, "") : comment.replace(/^\/\//, "");
71+
const loc = nodeUtils.getLocFor(range.pos, range.end, ast);
7272

73-
var esprimaComment = convertTypeScriptCommentToEsprimaComment(isBlock, text, range.pos, range.end, loc.start, loc.end);
73+
const esprimaComment = convertTypeScriptCommentToEsprimaComment(isBlock, text, range.pos, range.end, loc.start, loc.end);
7474

7575
return esprimaComment;
7676
}
@@ -93,33 +93,34 @@ module.exports = {
9393
* @private
9494
*/
9595
function convertComments(ast, code) {
96-
var comments = [];
96+
const comments = [];
9797

9898
/**
9999
* Create a TypeScript Scanner, with skipTrivia set to false so that
100100
* we can parse the comments
101101
*/
102-
var triviaScanner = ts.createScanner(ast.languageVersion, false, 0, code);
102+
const triviaScanner = ts.createScanner(ast.languageVersion, false, 0, code);
103103

104-
var kind = triviaScanner.scan();
104+
let kind = triviaScanner.scan();
105105
while (kind !== ts.SyntaxKind.EndOfFileToken) {
106-
var start = triviaScanner.getTokenPos();
107-
var end = triviaScanner.getTextPos();
106+
const start = triviaScanner.getTokenPos();
107+
const end = triviaScanner.getTextPos();
108108

109-
var container = null;
109+
let container = null;
110110
switch (kind) {
111111
case ts.SyntaxKind.SingleLineCommentTrivia:
112-
case ts.SyntaxKind.MultiLineCommentTrivia:
113-
var comment = getCommentFromTriviaScanner(triviaScanner, ast, code);
112+
case ts.SyntaxKind.MultiLineCommentTrivia: {
113+
const comment = getCommentFromTriviaScanner(triviaScanner, ast, code);
114114

115115
comments.push(comment);
116116
break;
117+
}
117118
case ts.SyntaxKind.CloseBraceToken:
118119
container = nodeUtils.getNodeContainer(ast, start, end);
119120

120121
if (
121-
container.kind === ts.SyntaxKind.TemplateMiddle
122-
|| container.kind === ts.SyntaxKind.TemplateTail
122+
container.kind === ts.SyntaxKind.TemplateMiddle ||
123+
container.kind === ts.SyntaxKind.TemplateTail
123124
) {
124125
kind = triviaScanner.reScanTemplateToken();
125126
continue;

lib/node-utils.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -644,15 +644,15 @@ function convertTokens(ast) {
644644
* @private
645645
*/
646646
function getNodeContainer(ast, start, end) {
647-
var container = null;
647+
let container = null;
648648

649649
/**
650650
* @param {TSNode} node the TSNode
651651
* @returns {undefined}
652652
*/
653653
function walk(node) {
654-
var nodeStart = node.pos;
655-
var nodeEnd = node.end;
654+
const nodeStart = node.pos;
655+
const nodeEnd = node.end;
656656

657657
if (start >= nodeStart && end <= nodeEnd) {
658658
if (isToken(node)) {
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
module.exports = {
2+
"type": "Program",
3+
"range": [
4+
12,
5+
0
6+
],
7+
"loc": {
8+
"start": {
9+
"line": 2,
10+
"column": 0
11+
},
12+
"end": {
13+
"line": 1,
14+
"column": 0
15+
}
16+
},
17+
"body": [],
18+
"sourceType": "script",
19+
"tokens": [],
20+
"comments": [
21+
{
22+
"type": "Line",
23+
"value": " /*test*/",
24+
"range": [
25+
0,
26+
11
27+
],
28+
"loc": {
29+
"start": {
30+
"line": 1,
31+
"column": 0
32+
},
33+
"end": {
34+
"line": 1,
35+
"column": 11
36+
}
37+
}
38+
}
39+
]
40+
};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// /*test*/

0 commit comments

Comments
 (0)