feat: supports `importValue` for more path formats (#1569)

`importValueRegex` now can match more path formats

Resolves: #1568
master
Fyn 3 years ago committed by GitHub
parent e0454138e0
commit db949e40f1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

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

Loading…
Cancel
Save