mirror of
				https://github.com/beego/bee.git
				synced 2025-11-04 09:23:24 +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:
		@@ -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)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user