visual indentation
Jeremy Dillworth
jwdillworth at yahoo.com
Fri Aug 22 16:51:45 EDT 2003
Here's another idea:
def world1():
RiColor(1.0,1.0,1.0)
RiSurface('constant')
RiSphere(1.0,-1.0,1.0,360)
def world2():
RiColor(1.0,1.0,1.0)
RiSurface('constant')
RiSphere(1.0,-1.0,1.0,360)
worlds_to_build = [world1, world2]
for world in worlds_to_build:
RiWorldBegin()
world()
RiWorldEnd()
--- achrist at easystreet.com wrote:
> Hilbert wrote:
> >
> > Hello,
> >
> > I'm using python to output RIB streams for Renderman.
> > The RIB stream is a bunch of statements which describes
> > a 3d image. The Rib standard allows for blocks which we
> > usually indent for better visualization for example:
> >
> > WorldBegin
> > Color [1 1 1]
> > Surface "constant"
> > Sphere(1.0, -1.0, 1.0, 360)
> > WorldEnd
> >
> > I'm using CGKit in python which has a Renderman binding,
> > so to output the same RIB I'd write:
> >
> > RiWorldBegin()
> > RiColor(1.0,1.0,1.0)
> > RiSurface('constant')
> > RiSphere(1.0,-1.0,1.0,360)
> > RiWorldEnd()
> >
> > But I get an error, because python interprets my indentation
> > as a block in the python code. So the only way to write this
> > is without the indentation:
> >
> > RiWorldBegin()
> > RiColor(1.0,1.0,1.0)
> > RiSurface('constant')
> > RiSphere(1.0,-1.0,1.0,360)
> > RiWorldEnd()
> >
> > But this is a lot harder to read.
> >
> > Is there any way to use such "visual" indentation in python?
> >
>
> If the code is purely sequential, how about something like this:
>
> import string
> def RunTheseStatements(s):
> stmts = map(string.strip, s.split("\n"))
> for stmt in stmts:
> eval(stmt)
>
> RunTheseStatements("""
>
>
> RiWorldBegin()
> RiColor(1.0,1.0,1.0)
> RiSurface('constant')
> RiSphere(1.0,-1.0,1.0,360)
> RiWorldEnd()
>
>
> """)
>
>
> Al
> --
> http://mail.python.org/mailman/listinfo/python-list
More information about the Python-list
mailing list