mirror of https://github.com/tidwall/tile38.git
strip whitespace from properties
This commit is contained in:
parent
659a715065
commit
bdcbc9c7cc
|
@ -46,9 +46,11 @@ func fillFeatureMap(json string) (Feature, []byte, error) {
|
||||||
}
|
}
|
||||||
id := gjson.Get(json, "id")
|
id := gjson.Get(json, "id")
|
||||||
if id.Exists() || propsExists {
|
if id.Exists() || propsExists {
|
||||||
raw := make([]byte, len(id.Raw)+len(props.Raw)+1)
|
idRaw := stripWhitespace(id.Raw)
|
||||||
copy(raw, id.Raw)
|
propsRaw := stripWhitespace(props.Raw)
|
||||||
copy(raw[len(id.Raw)+1:], props.Raw)
|
raw := make([]byte, len(idRaw)+len(propsRaw)+1)
|
||||||
|
copy(raw, idRaw)
|
||||||
|
copy(raw[len(idRaw)+1:], propsRaw)
|
||||||
g.idprops = string(raw)
|
g.idprops = string(raw)
|
||||||
}
|
}
|
||||||
return g, nil, err
|
return g, nil, err
|
||||||
|
|
|
@ -344,3 +344,43 @@ func mustMarshalString(s string) bool {
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func stripWhitespace(s string) string {
|
||||||
|
var p []byte
|
||||||
|
var str bool
|
||||||
|
var escs int
|
||||||
|
for i := 0; i < len(s); i++ {
|
||||||
|
c := s[i]
|
||||||
|
if str {
|
||||||
|
// We're inside of a string. Look out for '"' and '\' characters.
|
||||||
|
if c == '\\' {
|
||||||
|
// Increment the escape character counter.
|
||||||
|
escs++
|
||||||
|
} else {
|
||||||
|
if c == '"' && escs%2 == 0 {
|
||||||
|
// We reached the end of string
|
||||||
|
str = false
|
||||||
|
}
|
||||||
|
// Reset the escape counter
|
||||||
|
escs = 0
|
||||||
|
}
|
||||||
|
} else if c == '"' {
|
||||||
|
// We encountared a double quote character.
|
||||||
|
str = true
|
||||||
|
} else if c <= ' ' {
|
||||||
|
// Ignore the whitespace
|
||||||
|
if p == nil {
|
||||||
|
p = []byte(s[:i])
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
// Append the character
|
||||||
|
if p != nil {
|
||||||
|
p = append(p, c)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if p == nil {
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
return string(p)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue