formam
formam copied to clipboard
Allow map keys with brackets
fixed #44
yeah... it looks like complete rewrite of func (dec *Decoder) analyzePath()
, that is bad for review,
but i guess i had no other option =\
now it looks more like parsing state machine except formam.go:265
// found a field, we need to know if the field is next to a closing bracket,
// if it is then no need to traverse again
// for example: [0].Field
if traversedByBracket {
traversedByBracket = false
lastPos = i + 1
continue
}
where we need to skip traversing if .
is following ]
s[k]w
== s[k].w
(extra dot after closing bracket)
I need to think about this one a bit to ensure there are no edge cases where Weird Stuff™ happens; I'm a bit nervous about that. I need to get back to this.
@arp242 please apply this pr , we want use this lib in our project and need this fix.
I haven't had the time to look at it yet @stufently, but you can use replace github.com/monoculum/formam => [..]
in your go.mod
to use this branch (or any other version) if you want – you don't need to use the master branch.
updated to recent master resolving conflicts