Stack of 2
| 1/2 | Update watch_test+41 -38 | |
| 2/2 | Update parser+20 -17 |
patchstack/tests main
Update parser
Patch does not have a description.
1 file changed+20 -17
parser/v2/gocommentparser.go | 37 |
parser/v2/gocommentparser.go+20 -17
@@ -4,38 +4,40 @@ 4 4 "github.com/a-h/parse" 5 5) 6 6 7 var goSingleLineCommentStart = parse.String("//") 8 var goSingleLineCommentEnd = parse.Any(parse.NewLine, parse.EOF[string]()) 9 10 type goSingleLineCommentParser struct { 11 } 7var ( 8 goSingleLineCommentStart = parse.String("//") 9 goSingleLineCommentEnd = parse.Any(parse.NewLine, parse.EOF[string]()) 10) 11 12type goSingleLineCommentParser struct{} 12 13 13 14var goSingleLineComment = goSingleLineCommentParser{} 14 15 15 16func (p goSingleLineCommentParser) Parse(pi *parse.Input) (n Node, ok bool, err error) { 16 17 // Comment start. 17 var c GoComment 18 start := pi.Position() 18 19 if _, ok, err = goSingleLineCommentStart.Parse(pi); err != nil || !ok { 19 20 return 20 21 } 21 22 // Once we've got the comment start sequence, parse anything until the end 22 23 // sequence as the comment contents. 24 c := &GoComment{} 23 25 if c.Contents, ok, err = parse.StringUntil(goSingleLineCommentEnd).Parse(pi); err != nil || !ok { 24 26 err = parse.Error("expected end comment literal '\n' not found", pi.Position()) 25 27 return 26 28 } 27 // Move past the end element. 28 _, _, _ = goSingleLineCommentEnd.Parse(pi) 29 29 // Return the comment. 30 30 c.Multiline = false 31 return c, true, nil 32 } 33 34 var goMultiLineCommentStart = parse.String("/*") 35 var goMultiLineCommentEnd = parse.String("*/") 36 37 type goMultiLineCommentParser struct { 38 } 31 c.Range = NewRange(start, pi.Position()) 32 return c, true, nil 33} 34 35var ( 36 goMultiLineCommentStart = parse.String("/*") 37 goMultiLineCommentEnd = parse.String("*/") 38) 39 40type goMultiLineCommentParser struct{} 39 41 40 42var goMultiLineComment = goMultiLineCommentParser{} 41 43 @@ -42,7 +44,6 @@ 42 44func (p goMultiLineCommentParser) Parse(pi *parse.Input) (n Node, ok bool, err error) { 43 45 // Comment start. 44 46 start := pi.Position() 45 var c GoComment 46 47 if _, ok, err = goMultiLineCommentStart.Parse(pi); err != nil || !ok { 47 48 return 48 49 } @@ -49,6 +50,7 @@ 49 50 50 51 // Once we've got the comment start sequence, parse anything until the end 51 52 // sequence as the comment contents. 53 c := &GoComment{} 52 54 if c.Contents, ok, err = parse.StringUntil(goMultiLineCommentEnd).Parse(pi); err != nil || !ok { 53 55 err = parse.Error("expected end comment literal '*/' not found", start) 54 56 return @@ -57,6 +59,7 @@ 57 59 _, _, _ = goMultiLineCommentEnd.Parse(pi) 58 60 // Return the comment. 59 61 c.Multiline = true 62 c.Range = NewRange(start, pi.Position()) 60 63 return c, true, nil 61 64} 62 651
good