feat: supports importValue for more path formats (#1569)
`importValueRegex` now can match more path formats Resolves: #1568
This commit is contained in:
@@ -114,13 +114,16 @@ func (p *Parser) parse(filename, content string) (*Api, error) {
|
|||||||
apiAstList = append(apiAstList, root)
|
apiAstList = append(apiAstList, root)
|
||||||
for _, imp := range root.Import {
|
for _, imp := range root.Import {
|
||||||
dir := filepath.Dir(p.src)
|
dir := filepath.Dir(p.src)
|
||||||
imp := filepath.Join(dir, imp.Value.Text())
|
impPath := strings.ReplaceAll(imp.Value.Text(), "\"", "")
|
||||||
data, err := p.readContent(imp)
|
if !filepath.IsAbs(impPath) {
|
||||||
|
impPath = filepath.Join(dir, impPath)
|
||||||
|
}
|
||||||
|
data, err := p.readContent(impPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
nestedApi, err := p.invoke(imp, data)
|
nestedApi, err := p.invoke(impPath, data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import (
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
versionRegex = `(?m)"v[1-9][0-9]*"`
|
versionRegex = `(?m)"v[1-9][0-9]*"`
|
||||||
importValueRegex = `(?m)"(/?[a-zA-Z0-9_#-])+\.api"`
|
importValueRegex = `(?m)"\/?(([a-zA-Z0-9.]+)+(\/?){1})+([a-zA-Z0-9]+)+\.api"`
|
||||||
tagRegex = `(?m)\x60[a-z]+:".+"\x60`
|
tagRegex = `(?m)\x60[a-z]+:".+"\x60`
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -9,3 +9,24 @@ import (
|
|||||||
func TestMatch(t *testing.T) {
|
func TestMatch(t *testing.T) {
|
||||||
assert.False(t, matchRegex("v1ddd", versionRegex))
|
assert.False(t, matchRegex("v1ddd", versionRegex))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestImportRegex(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
value string
|
||||||
|
matched bool
|
||||||
|
}{
|
||||||
|
{`"bar.api"`, true},
|
||||||
|
{`"foo/bar.api"`, true},
|
||||||
|
{`"/foo/bar.api"`, true},
|
||||||
|
{`"../foo/bar.api"`, true},
|
||||||
|
{`"../../foo/bar.api"`, true},
|
||||||
|
|
||||||
|
{`"bar..api"`, false},
|
||||||
|
{`"//bar.api"`, false},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.value, func(t *testing.T) {
|
||||||
|
assert.Equal(t, tt.matched, matchRegex(tt.value, importValueRegex))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user