|
 |
 |
 |
Examples
|
[[ Spyce ]]
Python Server Pages by Rimon Barr |
examples/automaton.spy
|
[[.import name=automaton]]
[[.import name=session args="'session_dir', '/tmp', auto=10"]]
[[\
if not session.auto: session.auto = {
'name': '',
}
step1send = [[spy:
<html><body>
<form action=automaton.spy method=post>
<table border=0>
<tr><td colspan=2>Name: <input type=text size=20></td></tr>
<tr>
<input type=hidden name=state value=step1>
<td></td>
<td align=right><input type=submit name=dir value="next"></td>
</tr>
</table>
</form>
</body></html>]]
def step1recv():
if request.post1('dir') == 'next': return 'next'
step2send = [[spy:
<html><body>
<form action=automaton.spy method=post>
<table border=0>
<tr><td colspan=2>Age: <input type=text size=20></td></tr>
<tr>
<input type=hidden name=state value=step2>
<td align=left><input type=submit name=dir value="prev"></td>
<td align=right><input type=submit name=dir value="next"></td>
</tr>
</table>
</form>
</body></html>]]
def step2recv():
if request.post1('dir') == 'prev': return 'prev'
if request.post1('dir') == 'next': return 'next'
step3send = [[spy:
<html><body>
<form action=automaton.spy method=post>
step3
<input type=hidden name=state value=step3>
<input type=submit name=dir value=prev>
<input type=submit name=dir value=next>
</form>
</body></html>]]
def step3recv():
if request.post1('dir') == 'prev': return 'prev'
if request.post1('dir') == 'next': return 'next'
step4send = [[spy:
<html><body>
Thanks.
</body></html>]]
def step4recv():
pass
automaton.define({
'step1': ( step1send, step1recv, {
'next': 'step2',
}),
'step2': ( step2send, step2recv, {
'next': 'step3',
'prev': 'step1',
}),
'step3': ( step3send, step3recv, {
'next': 'step4',
'prev': 'step2',
}),
'step4': ( step4send, step4recv, {
}),
}, 'step1')
state = request.post1('state')
automaton.step(state)
]]
[[--
spyce file
spyce inline
function or method reference
inline code
--]]
|
Run this code.
(requires Spyce-enabled web server)
|
Back to List of Examples
|