Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
pystache_custom
Overview
Overview
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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenEdx
pystache_custom
Commits
d68ae32f
Commit
d68ae32f
authored
Nov 05, 2009
by
Chris Wanstrath
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add failing (but almost passing) ComplexView test. Fixes #2
parent
b186f009
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
62 additions
and
7 deletions
+62
-7
examples/complex_view.mustache
+17
-0
examples/complex_view.py
+20
-0
pystache/template.py
+3
-5
pystache/view.py
+13
-2
tests/test_view.py
+9
-0
No files found.
examples/complex_view.mustache
0 → 100644
View file @
d68ae32f
<h1>
{{
header
}}
</h1>
{{#
list
}}
<ul>
{{#
item
}}
{{#
current
}}
<li><strong>
{{
name
}}
</strong></li>
{{/
current
}}
{{#
link
}}
<li><a
href=
"
{{
url
}}
"
>
{{
name
}}
</a></li>
{{/
link
}}
{{/
item
}}
</ul>
{{/
list
}}
{{#
empty
}}
<p>
The list is empty.
</p>
{{/
empty
}}
\ No newline at end of file
examples/complex_view.py
0 → 100644
View file @
d68ae32f
import
pystache
class
ComplexView
(
pystache
.
View
):
template_path
=
'examples'
def
header
(
self
):
return
"Colors"
def
item
(
self
):
items
=
[]
items
.
append
({
'name'
:
'red'
,
'current'
:
True
,
'url'
:
'#Red'
})
items
.
append
({
'name'
:
'green'
,
'link'
:
True
,
'url'
:
'#Green'
})
items
.
append
({
'name'
:
'blue'
,
'link'
:
True
,
'url'
:
'#Blue'
})
return
items
def
list
(
self
):
return
not
self
.
empty
()
def
empty
(
self
):
return
len
(
self
.
item
())
==
0
pystache/template.py
View file @
d68ae32f
...
...
@@ -30,16 +30,14 @@ class Template(object):
section
,
section_name
,
inner
=
match
.
group
(
0
,
1
,
2
)
it
=
context
.
get
(
section_name
)
it
=
context
.
get
(
section_name
,
None
)
replacer
=
''
if
it
and
not
hasattr
(
it
,
'__iter__'
):
replacer
=
inner
elif
it
:
insides
=
[]
for
item
in
context
[
section_name
]:
ctx
=
context
.
copy
()
ctx
.
update
(
item
)
insides
.
append
(
self
.
render
(
inner
,
ctx
))
for
item
in
it
:
insides
.
append
(
self
.
render
(
inner
,
item
))
replacer
=
''
.
join
(
insides
)
template
=
template
.
replace
(
section
,
replacer
)
...
...
pystache/view.py
View file @
d68ae32f
from
pystache
import
Template
import
os.path
import
re
class
View
(
object
):
# Path where this view's template(s) live
...
...
@@ -33,8 +34,18 @@ class View(object):
f
.
close
()
return
template
def
template_name
(
self
):
return
self
.
__class__
.
__name__
def
template_name
(
self
,
name
=
None
):
"""TemplatePartial => template_partial
Takes a string but defaults to using the current class' name.
"""
if
not
name
:
name
=
self
.
__class__
.
__name__
def
repl
(
match
):
return
'_'
+
match
.
group
(
0
)
.
lower
()
return
re
.
sub
(
'[A-Z]'
,
repl
,
name
)[
1
:]
def
get
(
self
,
attr
,
default
):
if
attr
in
self
.
context
:
...
...
tests/test_view.py
View file @
d68ae32f
import
unittest
import
pystache
from
examples.simple
import
Simple
from
examples.complex_view
import
ComplexView
class
TestView
(
unittest
.
TestCase
):
def
test_basic
(
self
):
...
...
@@ -19,3 +20,11 @@ class TestView(unittest.TestCase):
view
=
Simple
()
self
.
assertEquals
(
view
.
render
(),
"Hi pizza!"
)
def
test_complex
(
self
):
self
.
assertEquals
(
ComplexView
()
.
render
(),
"""<h1>Colors</h1>
<ul>
<li><strong>red</strong></li>
<li><a href="#Green">green</a></li>
<li><a href="#Blue">blue</a></li>
</ul>
"""
)
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