Merge pull request #81 from ucan-wg/fix/66/allow-dash-in-policy-segment

fix(selector): allow dashes in selector names
This commit is contained in:
Michael Muré
2024-11-21 11:27:14 +01:00
committed by GitHub
2 changed files with 24 additions and 1 deletions

View File

@@ -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) {

View File

@@ -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) {