String() is generated now
diff --git a/src/gojsonpointer/pointer.go b/src/gojsonpointer/pointer.go
index c8673b6..da255e2 100644
--- a/src/gojsonpointer/pointer.go
+++ b/src/gojsonpointer/pointer.go
@@ -27,20 +27,20 @@
}
type JsonPointer struct {
- stringRepresentation string
- referenceTokens []string
+ hasFragment bool
+ referenceTokens []string
}
func (p *JsonPointer) parse(jsonPointerString string) error {
var err error
- p.stringRepresentation = jsonPointerString
- if p.stringRepresentation != EMPTY_POINTER {
- if !strings.HasPrefix(p.stringRepresentation, POINTER_SEPARATOR) && !strings.HasPrefix(p.stringRepresentation, FRAGMENT) {
+ if jsonPointerString != EMPTY_POINTER {
+ p.hasFragment = strings.HasPrefix(jsonPointerString, FRAGMENT)
+ if !strings.HasPrefix(jsonPointerString, POINTER_SEPARATOR) && !p.hasFragment {
err = errors.New(INVALID_START)
} else {
- referenceTokens := strings.Split(p.stringRepresentation, POINTER_SEPARATOR)
+ referenceTokens := strings.Split(jsonPointerString, POINTER_SEPARATOR)
for _, referenceToken := range referenceTokens[1:] {
p.referenceTokens = append(p.referenceTokens, decodeReferenceToken(referenceToken))
}
@@ -51,7 +51,19 @@
}
func (p *JsonPointer) String() string {
- return p.stringRepresentation
+
+ tokens := p.referenceTokens
+ for i := range tokens {
+ tokens[i] = encodeReferenceToken(tokens[i])
+ }
+
+ pointerString := strings.Join(tokens, POINTER_SEPARATOR)
+
+ if p.hasFragment {
+ return FRAGMENT + pointerString
+ }
+
+ return pointerString
}
const (