Просмотр исходного кода

remove GetObject & GetArray from Any

Tao Wen 8 лет назад
Родитель
Сommit
db3f5046d7
4 измененных файлов с 18 добавлено и 97 удалено
  1. 0 12
      feature_any.go
  2. 12 42
      feature_any_array.go
  3. 1 2
      feature_any_invalid.go
  4. 5 41
      feature_any_object.go

+ 0 - 12
feature_any.go

@@ -25,10 +25,6 @@ type Any interface {
 	// TODO: add Set
 	Size() int
 	Keys() []string
-	// TODO: remove me
-	GetArray() []Any
-	// TODO: remove me
-	GetObject() map[string]Any
 	GetInterface() interface{}
 	WriteTo(stream *Stream)
 }
@@ -47,14 +43,6 @@ func (any *baseAny) Keys() []string {
 	return []string{}
 }
 
-func (any *baseAny) GetArray() []Any {
-	return []Any{}
-}
-
-func (any *baseAny) GetObject() map[string]Any {
-	return map[string]Any{}
-}
-
 func (any *baseAny) ToVal(obj interface{}) {
 	panic("not implemented")
 }

+ 12 - 42
feature_any_array.go

@@ -33,65 +33,57 @@ func (any *arrayLazyAny) ToBool() bool {
 func (any *arrayLazyAny) ToInt() int {
 	if any.ToBool() {
 		return 1
-	} else {
-		return 0
 	}
+	return 0
 }
 
 func (any *arrayLazyAny) ToInt32() int32 {
 	if any.ToBool() {
 		return 1
-	} else {
-		return 0
 	}
+	return 0
 }
 
 func (any *arrayLazyAny) ToInt64() int64 {
 	if any.ToBool() {
 		return 1
-	} else {
-		return 0
 	}
+	return 0
 }
 
 func (any *arrayLazyAny) ToUint() uint {
 	if any.ToBool() {
 		return 1
-	} else {
-		return 0
 	}
+	return 0
 }
 
 func (any *arrayLazyAny) ToUint32() uint32 {
 	if any.ToBool() {
 		return 1
-	} else {
-		return 0
 	}
+	return 0
 }
 
 func (any *arrayLazyAny) ToUint64() uint64 {
 	if any.ToBool() {
 		return 1
-	} else {
-		return 0
 	}
+	return 0
 }
 
 func (any *arrayLazyAny) ToFloat32() float32 {
 	if any.ToBool() {
 		return 1
-	} else {
-		return 0
 	}
+	return 0
 }
 
 func (any *arrayLazyAny) ToFloat64() float64 {
 	if any.ToBool() {
 		return 1
-	} else {
-		return 0
 	}
+	return 0
 }
 
 func (any *arrayLazyAny) ToString() string {
@@ -115,10 +107,9 @@ func (any *arrayLazyAny) Get(path ...interface{}) Any {
 		valueBytes := locateArrayElement(iter, firstPath)
 		if valueBytes == nil {
 			return newInvalidAny(path)
-		} else {
-			iter.ResetBytes(valueBytes)
-			return locatePath(iter, path[1:])
 		}
+		iter.ResetBytes(valueBytes)
+		return locatePath(iter, path[1:])
 	case int32:
 		if '*' == firstPath {
 			iter := any.cfg.BorrowIterator(any.buf)
@@ -132,9 +123,8 @@ func (any *arrayLazyAny) Get(path ...interface{}) Any {
 				return true
 			})
 			return wrapArray(arr)
-		} else {
-			return newInvalidAny(path)
 		}
+		return newInvalidAny(path)
 	default:
 		return newInvalidAny(path)
 	}
@@ -152,17 +142,6 @@ func (any *arrayLazyAny) Size() int {
 	return size
 }
 
-func (any *arrayLazyAny) GetArray() []Any {
-	elements := make([]Any, 0)
-	iter := any.cfg.BorrowIterator(any.buf)
-	defer any.cfg.ReturnIterator(iter)
-	iter.ReadArrayCB(func(iter *Iterator) bool {
-		elements = append(elements, iter.ReadAny())
-		return true
-	})
-	return elements
-}
-
 func (any *arrayLazyAny) WriteTo(stream *Stream) {
 	stream.Write(any.buf)
 }
@@ -279,9 +258,8 @@ func (any *arrayAny) Get(path ...interface{}) Any {
 				}
 			}
 			return wrapArray(mappedAll)
-		} else {
-			return newInvalidAny(path)
 		}
+		return newInvalidAny(path)
 	default:
 		return newInvalidAny(path)
 	}
@@ -291,14 +269,6 @@ func (any *arrayAny) Size() int {
 	return any.val.Len()
 }
 
-func (any *arrayAny) GetArray() []Any {
-	elements := make([]Any, any.val.Len())
-	for i := 0; i < any.val.Len(); i++ {
-		elements[i] = Wrap(any.val.Index(i).Interface())
-	}
-	return elements
-}
-
 func (any *arrayAny) WriteTo(stream *Stream) {
 	stream.WriteVal(any.val)
 }

+ 1 - 2
feature_any_invalid.go

@@ -69,9 +69,8 @@ func (any *invalidAny) WriteTo(stream *Stream) {
 func (any *invalidAny) Get(path ...interface{}) Any {
 	if any.err == nil {
 		return &invalidAny{baseAny{}, fmt.Errorf("get %v from invalid", path)}
-	} else {
-		return &invalidAny{baseAny{}, fmt.Errorf("%v, get %v from invalid", any.err, path)}
 	}
+	return &invalidAny{baseAny{}, fmt.Errorf("%v, get %v from invalid", any.err, path)}
 }
 
 func (any *invalidAny) Parse() *Iterator {

+ 5 - 41
feature_any_object.go

@@ -81,10 +81,9 @@ func (any *objectLazyAny) Get(path ...interface{}) Any {
 		valueBytes := locateObjectField(iter, firstPath)
 		if valueBytes == nil {
 			return newInvalidAny(path)
-		} else {
-			iter.ResetBytes(valueBytes)
-			return locatePath(iter, path[1:])
 		}
+		iter.ResetBytes(valueBytes)
+		return locatePath(iter, path[1:])
 	case int32:
 		if '*' == firstPath {
 			mappedAll := map[string]Any{}
@@ -98,9 +97,8 @@ func (any *objectLazyAny) Get(path ...interface{}) Any {
 				return true
 			})
 			return wrapMap(mappedAll)
-		} else {
-			return newInvalidAny(path)
 		}
+		return newInvalidAny(path)
 	default:
 		return newInvalidAny(path)
 	}
@@ -130,17 +128,6 @@ func (any *objectLazyAny) Size() int {
 	return size
 }
 
-func (any *objectLazyAny) GetObject() map[string]Any {
-	asMap := map[string]Any{}
-	iter := any.cfg.BorrowIterator(any.buf)
-	defer any.cfg.ReturnIterator(iter)
-	iter.ReadObjectCB(func(iter *Iterator, field string) bool {
-		asMap[field] = iter.ReadAny()
-		return true
-	})
-	return asMap
-}
-
 func (any *objectLazyAny) WriteTo(stream *Stream) {
 	stream.Write(any.buf)
 }
@@ -243,9 +230,8 @@ func (any *objectAny) Get(path ...interface{}) Any {
 				}
 			}
 			return wrapMap(mappedAll)
-		} else {
-			return newInvalidAny(path)
 		}
+		return newInvalidAny(path)
 	default:
 		return newInvalidAny(path)
 	}
@@ -263,17 +249,6 @@ func (any *objectAny) Size() int {
 	return any.val.NumField()
 }
 
-func (any *objectAny) GetObject() map[string]Any {
-	object := map[string]Any{}
-	for i := 0; i < any.val.NumField(); i++ {
-		field := any.val.Field(i)
-		if field.CanInterface() {
-			object[any.val.Type().Field(i).Name] = Wrap(field.Interface())
-		}
-	}
-	return object
-}
-
 func (any *objectAny) WriteTo(stream *Stream) {
 	stream.WriteVal(any.val)
 }
@@ -367,9 +342,8 @@ func (any *mapAny) Get(path ...interface{}) Any {
 				}
 			}
 			return wrapMap(mappedAll)
-		} else {
-			return newInvalidAny(path)
 		}
+		return newInvalidAny(path)
 	default:
 		value := any.val.MapIndex(reflect.ValueOf(firstPath))
 		if !value.IsValid() {
@@ -391,16 +365,6 @@ func (any *mapAny) Size() int {
 	return any.val.Len()
 }
 
-func (any *mapAny) GetObject() map[string]Any {
-	object := map[string]Any{}
-	for _, key := range any.val.MapKeys() {
-		keyAsStr := key.String()
-		element := Wrap(any.val.MapIndex(key).Interface())
-		object[keyAsStr] = element
-	}
-	return object
-}
-
 func (any *mapAny) WriteTo(stream *Stream) {
 	stream.WriteVal(any.val)
 }