mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-06 20:14:01 -06:00
Use regex for repacing comments content.
Use space for indents
This commit is contained in:
parent
00b389d477
commit
638e4b758a
@ -428,8 +428,8 @@ namespace ts {
|
||||
switch (token) {
|
||||
case SyntaxKind.SingleLineCommentTrivia:
|
||||
case SyntaxKind.MultiLineCommentTrivia:
|
||||
// replace comments with whitespaces to preserve original characters position
|
||||
output += replaceWithWhitespaces(scanner.getTokenText());
|
||||
// replace comments with whitespace to preserve original character positions
|
||||
output += scanner.getTokenText().replace(/\S/g, " ");
|
||||
break;
|
||||
default:
|
||||
output += scanner.getTokenText();
|
||||
@ -437,30 +437,6 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
return output;
|
||||
|
||||
function replaceWithWhitespaces(commentTokenText: string): string {
|
||||
let result = "";
|
||||
let pos = 0;
|
||||
let start = 0;
|
||||
while (pos < commentTokenText.length) {
|
||||
if (isLineBreak(commentTokenText.charCodeAt(pos))) {
|
||||
let nbCharToReplace = pos - start;
|
||||
result += nSpaces(nbCharToReplace);
|
||||
result += commentTokenText.charAt(pos);
|
||||
pos += 1;
|
||||
start = pos;
|
||||
}
|
||||
else {
|
||||
pos += 1;
|
||||
}
|
||||
}
|
||||
result += nSpaces(pos - start);
|
||||
return result;
|
||||
|
||||
function nSpaces(n: number): string {
|
||||
return new Array(n + 1).join(" ");
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -1,86 +1,86 @@
|
||||
/// <reference path="..\..\..\src\harness\harness.ts" />
|
||||
/// <reference path="..\..\..\src\compiler\commandLineParser.ts" />
|
||||
|
||||
module ts {
|
||||
describe('parseConfigFileTextToJson', () => {
|
||||
function assertParseResult(jsonText: string, expectedConfigObject: { config?: any; error?: Diagnostic }) {
|
||||
let parsed = ts.parseConfigFileTextToJson("/apath/tsconfig.json", jsonText);
|
||||
assert.equal(JSON.stringify(parsed), JSON.stringify(expectedConfigObject));
|
||||
}
|
||||
|
||||
function assertParseError(jsonText: string) {
|
||||
let parsed = ts.parseConfigFileTextToJson("/apath/tsconfig.json", jsonText);
|
||||
assert.isTrue(undefined === parsed.config);
|
||||
assert.isTrue(undefined !== parsed.error);
|
||||
}
|
||||
namespace ts {
|
||||
describe('parseConfigFileTextToJson', () => {
|
||||
function assertParseResult(jsonText: string, expectedConfigObject: { config?: any; error?: Diagnostic }) {
|
||||
let parsed = ts.parseConfigFileTextToJson("/apath/tsconfig.json", jsonText);
|
||||
assert.equal(JSON.stringify(parsed), JSON.stringify(expectedConfigObject));
|
||||
}
|
||||
|
||||
it("returns empty config for file with only whitespaces", () => {
|
||||
assertParseResult("", { config : {} });
|
||||
assertParseResult(" ", { config : {} });
|
||||
});
|
||||
|
||||
it("returns empty config for file with comments only", () => {
|
||||
assertParseResult("// Comment", { config: {} });
|
||||
assertParseResult("/* Comment*/", { config: {} });
|
||||
});
|
||||
function assertParseError(jsonText: string) {
|
||||
let parsed = ts.parseConfigFileTextToJson("/apath/tsconfig.json", jsonText);
|
||||
assert.isTrue(undefined === parsed.config);
|
||||
assert.isTrue(undefined !== parsed.error);
|
||||
}
|
||||
|
||||
it("returns empty config when config is empty object", () => {
|
||||
assertParseResult("{}", { config: {} });
|
||||
});
|
||||
it("returns empty config for file with only whitespaces", () => {
|
||||
assertParseResult("", { config : {} });
|
||||
assertParseResult(" ", { config : {} });
|
||||
});
|
||||
|
||||
it("returns config object without comments", () => {
|
||||
assertParseResult(
|
||||
`{ // Excluded files
|
||||
"exclude": [
|
||||
// Exclude d.ts
|
||||
"file.d.ts"
|
||||
]
|
||||
}`, { config: { exclude: ["file.d.ts"] } });
|
||||
|
||||
assertParseResult(
|
||||
`{
|
||||
/* Excluded
|
||||
Files
|
||||
*/
|
||||
"exclude": [
|
||||
/* multiline comments can be in the middle of a line */"file.d.ts"
|
||||
]
|
||||
}`, { config: { exclude: ["file.d.ts"] } });
|
||||
});
|
||||
it("returns empty config for file with comments only", () => {
|
||||
assertParseResult("// Comment", { config: {} });
|
||||
assertParseResult("/* Comment*/", { config: {} });
|
||||
});
|
||||
|
||||
it("keeps string content untouched", () => {
|
||||
assertParseResult(
|
||||
`{
|
||||
"exclude": [
|
||||
"xx//file.d.ts"
|
||||
]
|
||||
}`, { config: { exclude: ["xx//file.d.ts"] } });
|
||||
assertParseResult(
|
||||
`{
|
||||
"exclude": [
|
||||
"xx/*file.d.ts*/"
|
||||
]
|
||||
}`, { config: { exclude: ["xx/*file.d.ts*/"] } });
|
||||
it("returns empty config when config is empty object", () => {
|
||||
assertParseResult("{}", { config: {} });
|
||||
});
|
||||
|
||||
it("returns config object without comments", () => {
|
||||
assertParseResult(
|
||||
`{ // Excluded files
|
||||
"exclude": [
|
||||
// Exclude d.ts
|
||||
"file.d.ts"
|
||||
]
|
||||
}`, { config: { exclude: ["file.d.ts"] } });
|
||||
|
||||
assertParseResult(
|
||||
`{
|
||||
/* Excluded
|
||||
Files
|
||||
*/
|
||||
"exclude": [
|
||||
/* multiline comments can be in the middle of a line */"file.d.ts"
|
||||
]
|
||||
}`, { config: { exclude: ["file.d.ts"] } });
|
||||
});
|
||||
|
||||
it("keeps string content untouched", () => {
|
||||
assertParseResult(
|
||||
`{
|
||||
"exclude": [
|
||||
"xx//file.d.ts"
|
||||
]
|
||||
}`, { config: { exclude: ["xx//file.d.ts"] } });
|
||||
assertParseResult(
|
||||
`{
|
||||
"exclude": [
|
||||
"xx/*file.d.ts*/"
|
||||
]
|
||||
}`, { config: { exclude: ["xx/*file.d.ts*/"] } });
|
||||
});
|
||||
|
||||
it("handles escaped characters in strings correctly", () => {
|
||||
assertParseResult(
|
||||
`{
|
||||
"exclude": [
|
||||
"xx\\"//files"
|
||||
]
|
||||
}`, { config: { exclude: ["xx\"//files"] } });
|
||||
|
||||
assertParseResult(
|
||||
`{
|
||||
"exclude": [
|
||||
"xx\\\\" // end of line comment
|
||||
]
|
||||
}`, { config: { exclude: ["xx\\"] } });
|
||||
});
|
||||
|
||||
it("returns object with error when json is invalid", () => {
|
||||
assertParseError("invalid");
|
||||
});
|
||||
});
|
||||
|
||||
it("handles escaped characters in strings correctly", () => {
|
||||
assertParseResult(
|
||||
`{
|
||||
"exclude": [
|
||||
"xx\\"//files"
|
||||
]
|
||||
}`, { config: { exclude: ["xx\"//files"] } });
|
||||
|
||||
assertParseResult(
|
||||
`{
|
||||
"exclude": [
|
||||
"xx\\\\" // end of line comment
|
||||
]
|
||||
}`, { config: { exclude: ["xx\\"] } });
|
||||
});
|
||||
|
||||
it("returns object with error when json is invalid", () => {
|
||||
assertParseError("invalid");
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user