spyce
home
license
community
download
examples
resources
wishlist
contrib (@sf)
documentation
intro
lang
runtime
modules
tags
install
exits
sourceforge
statistics
freshmeat

transparent transparent transparent
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


© 2002 Rimon Barr
email: rimon AT acm DOT org
Spyce Powered SourceForge Logo [[ Spyce ]]
Python Server Pages
version 1.3.10