Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
张磊
/
FileStorageBeego
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
52fdfc56
authored
2014-08-12 00:02:27 +0800
by
astaxie
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
beego: fix the tree addTree for regexp
1 parent
8ed6d065
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
43 additions
and
11 deletions
tree.go
tree.go
View file @
52fdfc5
...
...
@@ -46,22 +46,38 @@ func (t *Tree) addtree(segments []string, tree *Tree, wildcards []string, reg st
}
seg
:=
segments
[
0
]
iswild
,
params
,
regexpStr
:=
splitSegment
(
seg
)
if
len
(
segments
)
==
1
&&
seg
!=
""
{
if
len
(
segments
)
==
1
{
if
iswild
{
wildcards
=
append
(
wildcards
,
params
...
)
if
regexpStr
!=
""
{
for
_
,
w
:=
range
params
{
if
reg
==
""
{
rr
:=
""
for
_
,
w
:=
range
wildcards
{
if
w
==
"."
||
w
==
":"
{
continue
}
if
w
==
":splat"
{
rr
=
rr
+
"(.+)/"
}
else
{
rr
=
rr
+
"([^/]+)/"
}
}
regexpStr
=
rr
+
regexpStr
}
else
{
regexpStr
=
"/"
+
regexpStr
}
}
else
{
for
_
,
w
:=
range
wildcards
{
if
w
==
"."
||
w
==
":"
{
continue
}
regexpStr
=
"
([^/]+)/
"
+
regexpStr
regexpStr
=
"
/([^/]+)
"
+
regexpStr
}
}
reg
=
reg
+
regexpStr
filterTreeWithPrefix
(
tree
,
wildcards
,
reg
)
filterTreeWithPrefix
(
tree
,
append
(
wildcards
,
params
...
)
,
reg
)
t
.
wildcard
=
tree
}
else
{
filterTreeWithPrefix
(
tree
,
wildcards
,
reg
)
filterTreeWithPrefix
(
tree
,
append
(
wildcards
,
params
...
)
,
reg
)
t
.
fixrouters
[
seg
]
=
tree
}
return
...
...
@@ -70,21 +86,37 @@ func (t *Tree) addtree(segments []string, tree *Tree, wildcards []string, reg st
if
t
.
wildcard
==
nil
{
t
.
wildcard
=
NewTree
()
}
wildcards
=
append
(
wildcards
)
if
regexpStr
!=
""
{
for
_
,
w
:=
range
params
{
if
reg
==
""
{
rr
:=
""
for
_
,
w
:=
range
wildcards
{
if
w
==
"."
||
w
==
":"
{
continue
}
if
w
==
":splat"
{
rr
=
rr
+
"(.+)/"
}
else
{
rr
=
rr
+
"([^/]+)/"
}
}
regexpStr
=
rr
+
regexpStr
}
else
{
regexpStr
=
"/"
+
regexpStr
}
}
else
{
for
_
,
w
:=
range
wildcards
{
if
w
==
"."
||
w
==
":"
{
continue
}
regexpStr
=
"
([^/]+)/
"
+
regexpStr
regexpStr
=
"
/([^/]+)
"
+
regexpStr
}
}
reg
=
reg
+
regexpStr
t
.
wildcard
.
addtree
(
segments
[
1
:
],
tree
,
wildcards
,
reg
)
t
.
wildcard
.
addtree
(
segments
[
1
:
],
tree
,
append
(
wildcards
,
params
...
)
,
reg
)
}
else
{
subTree
:=
NewTree
()
t
.
fixrouters
[
seg
]
=
subTree
subTree
.
addtree
(
segments
[
1
:
],
tree
,
wildcards
,
reg
)
subTree
.
addtree
(
segments
[
1
:
],
tree
,
append
(
wildcards
,
params
...
)
,
reg
)
}
}
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment