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
943fe971
authored
2013-09-13 13:57:40 +0800
by
astaxie
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
support template
1 parent
9d84969b
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
62 additions
and
25 deletions
template.go
template_test.go
template.go
View file @
943fe97
...
...
@@ -65,17 +65,11 @@ func (self *templatefile) visit(paths string, f os.FileInfo, err error) error {
a
=
a
[
len
([]
byte
(
self
.
root
))
:
]
file
:=
strings
.
TrimLeft
(
replace
.
Replace
(
string
(
a
)),
"/"
)
subdir
:=
filepath
.
Dir
(
file
)
t
,
err
:=
getTemplate
(
self
.
root
,
file
)
if
err
!=
nil
{
Trace
(
"parse template err:"
,
file
,
err
)
}
else
{
BeeTemplates
[
file
]
=
t
}
if
_
,
ok
:=
self
.
files
[
subdir
];
ok
{
self
.
files
[
subdir
]
=
append
(
self
.
files
[
subdir
],
paths
)
self
.
files
[
subdir
]
=
append
(
self
.
files
[
subdir
],
file
)
}
else
{
m
:=
make
([]
string
,
1
)
m
[
0
]
=
paths
m
[
0
]
=
file
self
.
files
[
subdir
]
=
m
}
...
...
@@ -119,6 +113,16 @@ func BuildTemplate(dir string) error {
fmt
.
Printf
(
"filepath.Walk() returned %v
\n
"
,
err
)
return
err
}
for
_
,
v
:=
range
self
.
files
{
for
_
,
file
:=
range
v
{
t
,
err
:=
getTemplate
(
self
.
root
,
file
,
v
...
)
if
err
!=
nil
{
Trace
(
"parse template err:"
,
file
,
err
)
}
else
{
BeeTemplates
[
file
]
=
t
}
}
}
return
nil
}
...
...
@@ -152,9 +156,18 @@ func getTplDeep(root, file string, t *template.Template) (*template.Template, er
return
t
,
nil
}
func
getTemplate
(
root
,
file
string
)
(
t
*
template
.
Template
,
err
error
)
{
func
getTemplate
(
root
,
file
string
,
others
...
string
)
(
t
*
template
.
Template
,
err
error
)
{
t
=
template
.
New
(
file
)
.
Delims
(
TemplateLeft
,
TemplateRight
)
.
Funcs
(
beegoTplFuncMap
)
t
,
err
=
getTplDeep
(
root
,
file
,
t
)
for
_
,
otherfile
:=
range
others
{
if
temp
:=
t
.
Lookup
(
otherfile
);
temp
!=
nil
{
continue
}
t
,
err
=
getTplDeep
(
root
,
otherfile
,
t
)
if
err
!=
nil
{
break
}
}
if
err
!=
nil
{
return
nil
,
err
}
...
...
template_test.go
View file @
943fe97
...
...
@@ -6,40 +6,64 @@ import (
"testing"
)
func
TestBuildTemplate
(
t
*
testing
.
T
)
{
var
header
string
=
`{{define "header"}}
<h1>Hello, astaxie!</h1>
{{end}}`
var
index
string
=
`<!DOCTYPE html>
<html>
<head>
<title>beego welcome template</title>
</head>
<body>
{{template "block"}}
{{template "header"}}
{{template "blocks/block.tpl"}}
</body>
</html>
`
var
block
string
=
`{{define "block"}}
<h1>Hello, blocks!</h1>
{{end}}`
func
TestTemplate
(
t
*
testing
.
T
)
{
dir
:=
"_beeTmp"
files
:=
[]
string
{
"1.tpl"
,
"2.html"
,
"3.htmltpl"
,
"4.mystyle"
,
"header.tpl"
,
"index.tpl"
,
"blocks/block.tpl"
,
}
if
err
:=
os
.
MkdirAll
(
dir
,
0777
);
err
!=
nil
{
t
.
Fatal
(
err
)
}
for
_
,
name
:=
range
files
{
for
k
,
name
:=
range
files
{
os
.
MkdirAll
(
filepath
.
Dir
(
filepath
.
Join
(
dir
,
name
)),
0777
)
if
f
,
err
:=
os
.
Create
(
filepath
.
Join
(
dir
,
name
));
err
!=
nil
{
t
.
Fatal
(
err
)
}
else
{
f
.
Close
()
}
if
k
==
0
{
f
.
WriteString
(
header
)
}
else
if
k
==
1
{
f
.
WriteString
(
index
)
}
else
if
k
==
2
{
f
.
WriteString
(
block
)
}
if
err
:=
BuildTemplate
(
dir
);
err
!=
nil
{
t
.
Fatal
(
err
)
f
.
Close
(
)
}
if
len
(
BeeTemplates
)
!=
2
{
t
.
Fatalf
(
"should be 2 but got %v"
,
len
(
BeeTemplates
))
}
AddTemplateExt
(
"mystyle"
)
if
err
:=
BuildTemplate
(
dir
);
err
!=
nil
{
t
.
Fatal
(
err
)
}
if
len
(
BeeTemplates
)
!=
3
{
t
.
Fatalf
(
"should be 3 but got %v"
,
len
(
BeeTemplates
))
}
if
err
:=
BeeTemplates
[
"index.tpl"
]
.
ExecuteTemplate
(
os
.
Stdout
,
"index.tpl"
,
nil
);
err
!=
nil
{
t
.
Fatal
(
err
)
}
for
_
,
name
:=
range
files
{
os
.
Remove
(
filepath
.
Join
(
dir
,
name
))
os
.
Remove
All
(
filepath
.
Join
(
dir
,
name
))
}
os
.
Remove
(
dir
)
os
.
Remove
All
(
dir
)
}
...
...
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