format service and add test (#197)

Co-authored-by: kim <xutao@xiaoheiban.cn>
This commit is contained in:
kingxt
2020-11-09 17:41:07 +08:00
committed by GitHub
parent afbd565d87
commit 3f389a55c2
5 changed files with 75 additions and 104 deletions

View File

@@ -1,6 +1,7 @@
package format
import (
"bufio"
"errors"
"fmt"
"go/format"
@@ -144,10 +145,28 @@ func apiFormat(data string) (string, error) {
result += strings.TrimSpace(string(fs)) + "\n\n"
}
if len(strings.TrimSpace(apiStruct.Service)) > 0 {
result += strings.TrimSpace(apiStruct.Service) + "\n\n"
result += formatService(apiStruct.Service) + "\n\n"
}
return result, nil
return strings.TrimSpace(result), nil
}
func formatService(str string) string {
var builder strings.Builder
scanner := bufio.NewScanner(strings.NewReader(str))
var tapCount = 0
for scanner.Scan() {
line := strings.TrimSpace(scanner.Text())
if line == ")" || line == "}" {
tapCount -= 1
}
util.WriteIndent(&builder, tapCount)
builder.WriteString(line + "\n")
if strings.HasSuffix(line, "(") || strings.HasSuffix(line, "{") {
tapCount += 1
}
}
return strings.TrimSpace(builder.String())
}
func countRune(s string, r rune) int {

View File

@@ -0,0 +1,47 @@
package format
import (
"testing"
"github.com/stretchr/testify/assert"
)
const (
notFormattedStr = `
type Request struct {
Name string
}
type Response struct {
Message string
}
service A-api {
@server(
handler: GreetHandler
)
get /greet/from/:name(Request) returns (Response)
}
`
formattedStr = `type Request struct {
Name string
}
type Response struct {
Message string
}
service A-api {
@server(
handler: GreetHandler
)
get /greet/from/:name(Request) returns (Response)
}`
)
func TestInlineTypeNotExist(t *testing.T) {
r, err := apiFormat(notFormattedStr)
assert.Nil(t, err)
assert.Equal(t, r, formattedStr)
}