-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
New: Add IParseOptions#alternateCommentMode (#968)
This PR adds a new option to IParseOptions, alternateCommentMode. When enabled, this activates an alternate comment parsing mode that preserves double-slash comments.
- Loading branch information
1 parent
d6e3b9e
commit 8400f87
Showing
5 changed files
with
207 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
/** | ||
* File with alternate comment syntax. | ||
* This file uses double slash and regular star-slash comment styles for doc | ||
* strings. | ||
*/ | ||
|
||
syntax = "proto3"; | ||
|
||
// Message with | ||
// a | ||
// multi-line comment. | ||
message Test1 { | ||
|
||
/** | ||
* Field with a doc-block comment. | ||
*/ | ||
string field1 = 1; | ||
|
||
// Field with a single-line comment starting with two slashes. | ||
uint32 field2 = 2; | ||
|
||
/// Field with a single-line comment starting with three slashes. | ||
bool field3 = 3; | ||
|
||
/* Field with a single-line slash-star comment. */ | ||
bool field4 = 4; | ||
|
||
bool field5 = 5; // Field with a trailing single-line two-slash comment. | ||
|
||
bool field6 = 6; /// Field with a trailing single-line three-slash comment. | ||
|
||
bool field7 = 7; /* Field with a trailing single-line slash-star comment. */ | ||
|
||
bool field8 = 8; | ||
|
||
// Field with a | ||
// multi-line comment. | ||
bool field9 = 9; | ||
|
||
/** | ||
* Field with a | ||
* multi-line doc-block comment. | ||
*/ | ||
string field10 = 10; | ||
} | ||
|
||
/* Message | ||
with | ||
a multiline plain slash-star | ||
comment. | ||
*/ | ||
message Test2 { | ||
} | ||
|
||
/* | ||
* Message | ||
* with | ||
* a | ||
* comment and stars. | ||
*/ | ||
enum Test3 { | ||
|
||
/** Value with a comment. */ | ||
ONE = 1; | ||
|
||
// Value with a single-line comment. | ||
TWO = 2; | ||
|
||
/// Value with a triple-slash comment. | ||
THREE = 3; // ignored | ||
|
||
FOUR = 4; /// Other value with a comment. | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
var tape = require("tape"); | ||
|
||
var protobuf = require(".."); | ||
|
||
tape.test("proto comments in alternate-parse mode", function(test) { | ||
test.plan(17); | ||
var options = {alternateCommentMode: true}; | ||
var root = new protobuf.Root(); | ||
root.load("tests/data/comments-alternate-parse.proto", options, function(err, root) { | ||
if (err) | ||
throw test.fail(err.message); | ||
|
||
test.equal(root.lookup("Test1").comment, "Message with\na\nmulti-line comment.", "should parse double-slash multiline comment"); | ||
test.equal(root.lookup("Test2").comment, "Message\nwith\na multiline plain slash-star\ncomment.", "should parse slash-star multiline comment"); | ||
test.equal(root.lookup("Test3").comment, "Message\nwith\na\ncomment and stars.", "should parse doc-block multiline comment"); | ||
|
||
test.equal(root.lookup("Test1.field1").comment, "Field with a doc-block comment.", "should parse doc-block field comment"); | ||
test.equal(root.lookup("Test1.field2").comment, "Field with a single-line comment starting with two slashes.", "should parse double-slash field comment"); | ||
test.equal(root.lookup("Test1.field3").comment, "Field with a single-line comment starting with three slashes.", "should parse triple-slash field comment"); | ||
test.equal(root.lookup("Test1.field4").comment, "Field with a single-line slash-star comment.", "should parse single-line slash-star field comment"); | ||
test.equal(root.lookup("Test1.field5").comment, "Field with a trailing single-line two-slash comment.", "should parse trailing double-slash comment"); | ||
test.equal(root.lookup("Test1.field6").comment, "Field with a trailing single-line three-slash comment.", "should parse trailing triple-slash comment"); | ||
test.equal(root.lookup("Test1.field7").comment, "Field with a trailing single-line slash-star comment.", "should parse trailing slash-star comment"); | ||
test.equal(root.lookup("Test1.field8").comment, null, "should parse no comment"); | ||
test.equal(root.lookup("Test1.field9").comment, "Field with a\nmulti-line comment.", "should parse multiline double-slash field comment"); | ||
test.equal(root.lookup("Test1.field10").comment, "Field with a\nmulti-line doc-block comment.", "should parse multiline doc-block field comment"); | ||
|
||
test.equal(root.lookup("Test3").comments.ONE, "Value with a comment.", "should parse blocks for enum values"); | ||
test.equal(root.lookup("Test3").comments.TWO, "Value with a single-line comment.", "should parse double-slash comments for enum values"); | ||
test.equal(root.lookup("Test3").comments.THREE, "Value with a triple-slash comment.", "should parse lines for enum values and prefer on top over trailing"); | ||
test.equal(root.lookup("Test3").comments.FOUR, "Other value with a comment.", "should not confuse previous trailing comments with comments for the next field"); | ||
|
||
test.end(); | ||
}); | ||
}); |