mirror of
https://github.com/beego/bee.git
synced 2024-11-22 05:00:54 +00:00
Merge pull request #786 from beego/revert-785-parse-config
Revert "add annotator as a field formatter by annotation"
This commit is contained in:
commit
308b5e3088
@ -5,8 +5,13 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// field formatter by annotation
|
type Annotator interface {
|
||||||
type Annotator struct{}
|
Annotate(string) []map[string]interface{}
|
||||||
|
AnnotateToJson(string) (string, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type Annotation struct {
|
||||||
|
}
|
||||||
|
|
||||||
func isWhitespace(ch byte) bool { return ch == ' ' || ch == '\t' || ch == '\r' }
|
func isWhitespace(ch byte) bool { return ch == ' ' || ch == '\t' || ch == '\r' }
|
||||||
|
|
||||||
@ -39,7 +44,7 @@ func handleWhitespaceValues(values []string) []string {
|
|||||||
|
|
||||||
//parse annotation to generate array with key and values
|
//parse annotation to generate array with key and values
|
||||||
//start with "@" as a key-value pair,key and values are separated by a space,wrap to distinguish values.
|
//start with "@" as a key-value pair,key and values are separated by a space,wrap to distinguish values.
|
||||||
func (a *Annotator) Annotate(comment string) []map[string]interface{} {
|
func (a *Annotation) Annotate(comment string) []map[string]interface{} {
|
||||||
results := make([]map[string]interface{}, 0)
|
results := make([]map[string]interface{}, 0)
|
||||||
//split annotation with '@'
|
//split annotation with '@'
|
||||||
lines := strings.Split(comment, "@")
|
lines := strings.Split(comment, "@")
|
||||||
@ -56,19 +61,8 @@ func (a *Annotator) Annotate(comment string) []map[string]interface{} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//parse annotation to json
|
//parse annotation to json
|
||||||
func (a *Annotator) AnnotateToJson(comment string) (string, error) {
|
func (a *Annotation) AnnotateToJson(comment string) (string, error) {
|
||||||
if comment == "" {
|
|
||||||
return "", nil
|
|
||||||
}
|
|
||||||
annotate := a.Annotate(comment)
|
annotate := a.Annotate(comment)
|
||||||
if len(annotate) == 0 {
|
|
||||||
return "", nil
|
|
||||||
}
|
|
||||||
result, err := json.MarshalIndent(annotate, "", " ")
|
result, err := json.MarshalIndent(annotate, "", " ")
|
||||||
return string(result), err
|
return string(result), err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *Annotator) Format(field *StructField) string {
|
|
||||||
f, _ := a.AnnotateToJson(field.Doc)
|
|
||||||
return f
|
|
||||||
}
|
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
var BeeAnnotator *Annotator
|
var BeeAnnotator Annotator
|
||||||
|
|
||||||
const (
|
const (
|
||||||
Annotation1 = `
|
Annotation1 = `
|
||||||
@ -25,7 +25,7 @@ https://github.com/beego
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestMain(m *testing.M) {
|
func TestMain(m *testing.M) {
|
||||||
BeeAnnotator = &Annotator{}
|
BeeAnnotator = &Annotation{}
|
||||||
retCode := m.Run() //run test
|
retCode := m.Run() //run test
|
||||||
os.Exit(retCode)
|
os.Exit(retCode)
|
||||||
}
|
}
|
||||||
@ -50,7 +50,7 @@ func TestAnnotate(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestAnnotateToJson(t *testing.T) {
|
func TestAnnotateToJson(t *testing.T) {
|
||||||
expect1 := `[
|
expect := `[
|
||||||
{
|
{
|
||||||
"Name": [
|
"Name": [
|
||||||
"Field1"
|
"Field1"
|
||||||
@ -69,11 +69,9 @@ func TestAnnotateToJson(t *testing.T) {
|
|||||||
}
|
}
|
||||||
]`
|
]`
|
||||||
|
|
||||||
actual1, _ := BeeAnnotator.AnnotateToJson(Annotation1)
|
actual, _ := BeeAnnotator.AnnotateToJson(Annotation1)
|
||||||
actual2, _ := BeeAnnotator.AnnotateToJson("")
|
|
||||||
|
|
||||||
assert.Equal(t, expect1, actual1)
|
assert.Equal(t, expect, actual)
|
||||||
assert.Equal(t, "", actual2)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestHandleWhitespaceValues(t *testing.T) {
|
func TestHandleWhitespaceValues(t *testing.T) {
|
||||||
|
@ -3,11 +3,15 @@ package beeParser
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type sampleFormatter struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *sampleFormatter) Format(field *StructField) string {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
func ExampleStructParser() {
|
func ExampleStructParser() {
|
||||||
const src = `
|
const src = `
|
||||||
package p
|
package p
|
||||||
@ -32,9 +36,9 @@ type StructA struct {
|
|||||||
Field7 StructB
|
Field7 StructB
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
annotator := &Annotator{}
|
formatter := &sampleFormatter{}
|
||||||
|
|
||||||
sp, err := NewStructParser("src.go", src, "StructA", annotator)
|
sp, err := NewStructParser("src.go", src, "StructA", formatter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -62,41 +66,3 @@ type StructA struct {
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestParseStructByFieldAnnotation(t *testing.T) {
|
|
||||||
const src = `
|
|
||||||
package p
|
|
||||||
|
|
||||||
type StructA struct {
|
|
||||||
//@Name Field1
|
|
||||||
//@DefaultValues bee test
|
|
||||||
// beego test
|
|
||||||
Field1 string
|
|
||||||
}
|
|
||||||
`
|
|
||||||
|
|
||||||
expect := `[
|
|
||||||
{
|
|
||||||
"Name": [
|
|
||||||
"Field1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"DefaultValues": [
|
|
||||||
"bee test",
|
|
||||||
"beego test"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]`
|
|
||||||
|
|
||||||
annotator := &Annotator{}
|
|
||||||
|
|
||||||
sp, err := NewStructParser("src.go", src, "StructA", annotator)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
actual := sp.FieldFormatter.Format(sp.MainStruct.Fields[0])
|
|
||||||
|
|
||||||
assert.Equal(t, expect, actual)
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user