Skip to content

Commit 4cce163

Browse files
authored
sample: indent request initialization (#43)
Fixes #41.
1 parent 75c494a commit 4cce163

File tree

5 files changed

+64
-51
lines changed

5 files changed

+64
-51
lines changed

cmd/gen-go-sample/main.go

Lines changed: 39 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -271,34 +271,26 @@ func (g *generator) genSample(ifaceName, methName, regTag string, valSet SampleV
271271
p("")
272272
g.imports[pbinfo.ImportSpec{Path: "context"}] = true
273273

274-
for i, name := range argNames {
275-
var sb strings.Builder
276-
fmt.Fprintf(&sb, "// %s := ", name)
277-
if err := argTrees[i].Print(&sb, g); err != nil {
278-
return errors.E(err, "can't initializing parameter: %s", name)
279-
}
280-
s := sb.String()
281-
s = strings.Replace(s, "\n", "\n//", -1)
282-
283-
w := g.pt.Writer()
284-
if _, err := w.Write([]byte(s)); err != nil {
285-
return err
286-
}
287-
if _, err := w.Write([]byte{'\n'}); err != nil {
288-
return err
289-
}
290-
}
291-
292274
{
293-
w := g.pt.Writer()
275+
var buf bytes.Buffer
294276

295-
if _, err := w.Write([]byte("req := ")); err != nil {
296-
return err
277+
for i, name := range argNames {
278+
fmt.Fprintf(&buf, "%s := ", name)
279+
if err := argTrees[i].Print(&buf, g); err != nil {
280+
return errors.E(err, "can't initialize parameter: %s", name)
281+
}
282+
buf.WriteByte('\n')
297283
}
298-
if err := itree.Print(g.pt.Writer(), g); err != nil {
299-
return errors.E(err, "can't initializing request object")
284+
prependLines(&buf, "// ")
285+
286+
buf.WriteString("req := ")
287+
if err := itree.Print(&buf, g); err != nil {
288+
return errors.E(err, "can't initialize request object")
300289
}
301-
if _, err := w.Write([]byte{'\n'}); err != nil {
290+
buf.WriteByte('\n')
291+
prependLines(&buf, "\t")
292+
293+
if _, err := buf.WriteTo(g.pt.Writer()); err != nil {
302294
return err
303295
}
304296
}
@@ -433,3 +425,26 @@ func (g *generator) handleOut(meth *descriptor.MethodDescriptorProto, valSet Sam
433425
}
434426
return nil
435427
}
428+
429+
// prependLines adds prefix to every line in b. A line is defined as a possibly empty run
430+
// of non-newlines terminated by a newline character.
431+
// If b doesn't end with a newline, prependLines panics.
432+
func prependLines(b *bytes.Buffer, prefix string) {
433+
if b.Len() == 0 {
434+
return
435+
}
436+
if b.Bytes()[b.Len()-1] != '\n' {
437+
panic(errors.E(nil, "prependLines: must end with newline"))
438+
}
439+
// Don't split with b.Bytes; we have to make a copy of the content since we're overwriting the buffer.
440+
lines := strings.SplitAfter(b.String(), "\n")
441+
b.Reset()
442+
for _, l := range lines {
443+
// When splitting, we have an empty string after the last newline, ignore it.
444+
if l == "" {
445+
continue
446+
}
447+
b.WriteString(prefix)
448+
b.WriteString(l)
449+
}
450+
}

cmd/gen-go-sample/main_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
package main
1616

1717
import (
18-
"fmt"
1918
"path/filepath"
2019
"testing"
2120

@@ -29,7 +28,6 @@ func TestUnary(t *testing.T) {
2928
t.Parallel()
3029

3130
g := initTestGenerator()
32-
fmt.Println(g.descInfo.Serv)
3331

3432
vs := SampleValueSet{
3533
ID: "my_value_set",

cmd/gen-go-sample/testdata/sample_empty.want

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ func sampleEmptyMethod() error {
3333
return err
3434
}
3535

36-
req := &foopb.PageInType{
37-
}
36+
req := &foopb.PageInType{
37+
}
3838
if err := c.EmptyMethod(ctx, req); err != nil {
3939
return err
4040
}

cmd/gen-go-sample/testdata/sample_paging.want

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ func samplePagingMethod() error {
3434
return err
3535
}
3636

37-
req := &foopb.PageInType{
38-
}
37+
req := &foopb.PageInType{
38+
}
3939
it := c.PagingMethod(ctx, req)
4040
for {
4141
resp, err := it.Next()

cmd/gen-go-sample/testdata/sample_unary.want

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,29 +33,29 @@ func sampleUnaryMethod(theX int64, theB string) error {
3333
return err
3434
}
3535

36-
// theX := 42
37-
// theB := "foobar"
38-
req := &foopb.InputType{
39-
A: &foopb.AType{
40-
X: theX,
41-
Y: 3.14159,
42-
},
43-
B: theB,
44-
E: foopb.AType_FOO,
45-
Group: &foopb.InputType_F{
46-
F: "in a oneof",
47-
},
48-
AArray: []*foopb.AType{
49-
&foopb.AType{
50-
X: 0,
51-
Y: 1,
36+
// theX := 42
37+
// theB := "foobar"
38+
req := &foopb.InputType{
39+
A: &foopb.AType{
40+
X: theX,
41+
Y: 3.14159,
5242
},
53-
&foopb.AType{
54-
X: 2,
55-
Y: 3,
43+
B: theB,
44+
E: foopb.AType_FOO,
45+
Group: &foopb.InputType_F{
46+
F: "in a oneof",
5647
},
57-
},
58-
}
48+
AArray: []*foopb.AType{
49+
&foopb.AType{
50+
X: 0,
51+
Y: 1,
52+
},
53+
&foopb.AType{
54+
X: 2,
55+
Y: 3,
56+
},
57+
},
58+
}
5959
resp, err := c.UnaryMethod(ctx, req)
6060
if err != nil {
6161
return err

0 commit comments

Comments
 (0)