Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
beego
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
beego
Commits
52fdfc56
Commit
52fdfc56
authored
Aug 11, 2014
by
astaxie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
beego: fix the tree addTree for regexp
parent
8ed6d065
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
43 additions
and
11 deletions
+43
-11
tree.go
tree.go
+43
-11
No files found.
tree.go
View file @
52fdfc56
...
@@ -46,22 +46,38 @@ func (t *Tree) addtree(segments []string, tree *Tree, wildcards []string, reg st
...
@@ -46,22 +46,38 @@ func (t *Tree) addtree(segments []string, tree *Tree, wildcards []string, reg st
}
}
seg
:=
segments
[
0
]
seg
:=
segments
[
0
]
iswild
,
params
,
regexpStr
:=
splitSegment
(
seg
)
iswild
,
params
,
regexpStr
:=
splitSegment
(
seg
)
if
len
(
segments
)
==
1
&&
seg
!=
""
{
if
len
(
segments
)
==
1
{
if
iswild
{
if
iswild
{
wildcards
=
append
(
wildcards
,
params
...
)
if
regexpStr
!=
""
{
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
==
":"
{
if
w
==
"."
||
w
==
":"
{
continue
continue
}
}
regexpStr
=
"
([^/]+)/
"
+
regexpStr
regexpStr
=
"
/([^/]+)
"
+
regexpStr
}
}
}
}
reg
=
reg
+
regexpStr
reg
=
reg
+
regexpStr
filterTreeWithPrefix
(
tree
,
wildcards
,
reg
)
filterTreeWithPrefix
(
tree
,
append
(
wildcards
,
params
...
)
,
reg
)
t
.
wildcard
=
tree
t
.
wildcard
=
tree
}
else
{
}
else
{
filterTreeWithPrefix
(
tree
,
wildcards
,
reg
)
filterTreeWithPrefix
(
tree
,
append
(
wildcards
,
params
...
)
,
reg
)
t
.
fixrouters
[
seg
]
=
tree
t
.
fixrouters
[
seg
]
=
tree
}
}
return
return
...
@@ -70,21 +86,37 @@ func (t *Tree) addtree(segments []string, tree *Tree, wildcards []string, reg st
...
@@ -70,21 +86,37 @@ func (t *Tree) addtree(segments []string, tree *Tree, wildcards []string, reg st
if
t
.
wildcard
==
nil
{
if
t
.
wildcard
==
nil
{
t
.
wildcard
=
NewTree
()
t
.
wildcard
=
NewTree
()
}
}
wildcards
=
append
(
wildcards
)
if
regexpStr
!=
""
{
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
==
":"
{
if
w
==
"."
||
w
==
":"
{
continue
continue
}
}
regexpStr
=
"
([^/]+)/
"
+
regexpStr
regexpStr
=
"
/([^/]+)
"
+
regexpStr
}
}
}
}
reg
=
reg
+
regexpStr
reg
=
reg
+
regexpStr
t
.
wildcard
.
addtree
(
segments
[
1
:
],
tree
,
wildcards
,
reg
)
t
.
wildcard
.
addtree
(
segments
[
1
:
],
tree
,
append
(
wildcards
,
params
...
)
,
reg
)
}
else
{
}
else
{
subTree
:=
NewTree
()
subTree
:=
NewTree
()
t
.
fixrouters
[
seg
]
=
subTree
t
.
fixrouters
[
seg
]
=
subTree
subTree
.
addtree
(
segments
[
1
:
],
tree
,
wildcards
,
reg
)
subTree
.
addtree
(
segments
[
1
:
],
tree
,
append
(
wildcards
,
params
...
)
,
reg
)
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment