fix(selector): allow dashes in selector names
This functionality will be further enhanced in #80. Resolves #66
This commit is contained in:
@@ -11,7 +11,7 @@ import (
|
|||||||
var (
|
var (
|
||||||
indexRegex = regexp.MustCompile(`^-?\d+$`)
|
indexRegex = regexp.MustCompile(`^-?\d+$`)
|
||||||
sliceRegex = regexp.MustCompile(`^((\-?\d+:\-?\d*)|(\-?\d*:\-?\d+))$`)
|
sliceRegex = regexp.MustCompile(`^((\-?\d+:\-?\d*)|(\-?\d*:\-?\d+))$`)
|
||||||
fieldRegex = regexp.MustCompile(`^\.[a-zA-Z_]*?$`)
|
fieldRegex = regexp.MustCompile(`^\.[a-zA-Z_-]*?$`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func Parse(str string) (Selector, error) {
|
func Parse(str string) (Selector, error) {
|
||||||
|
|||||||
@@ -30,6 +30,29 @@ func TestParse(t *testing.T) {
|
|||||||
require.Empty(t, sel[0].Slice())
|
require.Empty(t, sel[0].Slice())
|
||||||
require.Equal(t, sel[0].Field(), "foo")
|
require.Equal(t, sel[0].Field(), "foo")
|
||||||
require.Empty(t, sel[0].Index())
|
require.Empty(t, sel[0].Index())
|
||||||
|
|
||||||
|
sel, err = Parse(".foo_bar")
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, 1, len(sel))
|
||||||
|
require.False(t, sel[0].Identity())
|
||||||
|
require.False(t, sel[0].Optional())
|
||||||
|
require.False(t, sel[0].Iterator())
|
||||||
|
require.Empty(t, sel[0].Slice())
|
||||||
|
require.Equal(t, sel[0].Field(), "foo_bar")
|
||||||
|
require.Empty(t, sel[0].Index())
|
||||||
|
|
||||||
|
sel, err = Parse(".foo-bar")
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, 1, len(sel))
|
||||||
|
require.False(t, sel[0].Identity())
|
||||||
|
require.False(t, sel[0].Optional())
|
||||||
|
require.False(t, sel[0].Iterator())
|
||||||
|
require.Empty(t, sel[0].Slice())
|
||||||
|
require.Equal(t, sel[0].Field(), "foo-bar")
|
||||||
|
require.Empty(t, sel[0].Index())
|
||||||
|
|
||||||
|
sel, err = Parse(".foo*bar")
|
||||||
|
require.ErrorContains(t, err, "invalid segment")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("explicit field", func(t *testing.T) {
|
t.Run("explicit field", func(t *testing.T) {
|
||||||
|
|||||||
Reference in New Issue
Block a user