Wow, I can be blind some days, thanks for pointing that out; fixed.

py.xml and the library he made are both interesting, I'd even use them 
myself, they are elegant in their own ways.

I don't really see how his code works like mine. Sure the result is the 
same, but that's not really relevant ;-)

His code assembles the nodes of the document at run time, with mine it's 
predefined (but you can add to it at run time). I do like how he uses 
addition to assemble his documents though, it seems quite flexible. It 
is something I might think about adding to my own.

"You will be assimilated. Resistance is futile."
Sean

Jorge Vargas wrote:

> hi Sean first of all I want to apologize for sending in something and 
> then just leaving, I have been busy with other stuff and haven't had 
> the time to pick it up again, by the way there is a reference to 
> redkey (or redsomething) still left.
>
> anyway I promise I'll soon make my patch work but I was reading Bruce 
> Eckel blog, i'm not sure if you know him but he is a big guy in Java 
> and recently has move to python a LOT, basically he did what your code 
> does :) maybe you want to make a post there telling him of ur code.
>
> http://www.artima.com/weblogs/viewpost.jsp?thread=163393
>
> On 5/27/06, *Sean Jamieson * <[EMAIL PROTECTED] 
> <mailto:[EMAIL PROTECTED]>> wrote:
>
>     Ok, so I started playing with your patch.
>     I made a couple changes to get it closer to working
>     (most of the diff makes formatting consistent, sorry)
>
>     The important changes are:
>         1. call _createTree through self
>         2. add an argument to _createTree, which is a reference to the
>     current node object (and Element doesnt have the XMLAttrs
>     attribute ;-)
>
>     Line 76: self._createTree( rootNode, self )
>
>     Line 79: def _createTree( self, node, obj ):
>     Line 80:     for attr, value in obj.XMLAttrs.iteritems ():
>
>     Line 83:         if isinstance( v, XMLNode ) or inspect.isclass( v
>     ) and
>     issubclass( v, XMLNode ):
>
>     Line 85:         elif isinstance( v, XMLValue ):
>
>     But, for some reason, it is recursing infinitely (boy was that
>     looooong
>     backtrace scrolling up my screen fun)
>
>     Unfortunately the message is useless, and I don't know anything about
>     ElementTree to understand the details of what your code does at
>     the moment.
>
>     Sean
>
>     Jorge Vargas wrote:
>
>     > On 5/25/06, *Sean Jamieson* <[EMAIL PROTECTED]
>     <mailto:[EMAIL PROTECTED]>
>     > <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>> wrote:
>     >
>     >
>     >     Yep, working code is on pypi:
>     http://www.python.org/pypi/xmlmodel
>     >
>     >
>     > nice /me goes to poke around.
>     >
>     > some comments
>     > ------------
>     > where does this comes from?
>     > from meta import TrackableTrackerMeta
>     > its failing in after easy_install
>     >
>     > >>> import xmlmodel
>     > Traceback (most recent call last):
>     >   File "<stdin>", line 1, in ?
>     >   File "build\bdist.win32\egg\xmlmodel\__init__.py", line 1, in ?
>     >   File "build\bdist.win32\egg\xmlmodel\main.py", line 4, in ?
>     > ImportError: No module named meta
>     >
>     > and I have never heard of that module
>     > -------------
>     > I notice your using DictObj from
>     > http://trac.turbogears.org/turbogears/ticket/779
>     > I think it could be replace with Bunch, as TG did
>     > -------------
>     > one thing that let me wondering is where does _order comes from
>     in XMLNode
>     > -------------
>     > I really love your generators for the XML very nice implementation
>     > ------------
>     > Now this will be funny even without getting it to compile I did an
>     > elementTree layout so as Linus ones said about a kernel
>     > If it works you should be double impress :)
>     >
>     > I added 2 methods to XMLModel which mimic what your toXML do, but
>     > since it's objects not a string I just made the recursive call
>     there,
>     > since I couldn't run it I'm not sure I got the correct value for v
>     >
>     >     Jorge Vargas wrote:
>     >
>     >     > On 5/25/06, *Sean Jamieson* < [EMAIL PROTECTED]
>     <mailto:[EMAIL PROTECTED]>
>     >     <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
>     >     > <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>     <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>>> wrote:
>     >     >
>     >     >
>     >     >     I was thinking about integrating cElementTree in the
>     future,
>     >     >
>     >     >
>     >     > I think that is the way to go, it gives everything you
>     need and has
>     >     > been tested a lot.
>     >     >
>     >     >     but to make
>     >     >     a quick proof of concept, I just have my toxml() manually
>     >     assembling a
>     >     >     string, using generators.
>     >     >
>     >     >
>     >     > that's ok,  but soon you'll need a nice backend :)
>     >     >
>     >     > you actually got workign code? if it's possible can I take
>     a look?
>     >     >
>     >     >     currently, XMLValue and it's subclasses are optional,
>     with a
>     >     >     'required'
>     >     >     bool keyword argument to __init__, also an XMLNodeList can
>     >     have 0
>     >     >     items
>     >     >     (and therefore not appear)
>     >     >
>     >     >     I could add another magic attribute parsed from
>     XMLAttrs, like
>     >     >     _tagname,
>     >     >     called _required ...
>     >     >
>     >     >
>     >     > I think there should be a general way (classes,fields) to
>     tell the
>     >     > engine which fields are optional and which aren't, so the
>     render
>     >     > function can detect a malform object, but this could turn
>     into a
>     >     huge
>     >     > validation scheme which I'm not sure if you want. Although if
>     >     you ever
>     >     > generate some xml-based std, there should be a validation
>     >     >
>     >     >     but generally if a tag has child tags, its going to be
>     used.
>     >     >
>     >     >
>     >     > yes that's the way it should
>     >     >
>     >     >     I've seen hypy before, some months ago, it's yet another
>     >     template
>     >     >     language;
>     >     >     It is an interesting idea though.
>     >     >
>     >     >
>     >     > I like the indentation thing which is basically what your
>     doing
>     >     here,
>     >     > what i don't like is the placeholder which you avoid with
>     the class
>     >     > structure.
>     >     >
>     >     > ------
>     >     >
>     >     >     Sean
>     >     >
>     >     >
>     >     >     Jorge Vargas wrote:
>     >     >
>     >     >     > On 4/28/06, *Sean Jamieson* < [EMAIL PROTECTED]
>     <mailto:[EMAIL PROTECTED]>
>     >     <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
>     >     >     <mailto: [EMAIL PROTECTED]
>     <mailto:[EMAIL PROTECTED]> <mailto:[EMAIL PROTECTED]
>     <mailto:[EMAIL PROTECTED]>>>
>     >     >     > <mailto:[EMAIL PROTECTED]
>     <mailto:[EMAIL PROTECTED]> <mailto: [EMAIL PROTECTED]
>     <mailto:[EMAIL PROTECTED]>>
>     >     <mailto: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>     <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>>>> wrote:
>     >     >     >
>     >     >     > Sorry for bringing this old topic up, but I was just
>     >     playing with
>     >     >     > ElementTree yesterday and I made a link to this
>     >     >     > I believe your model can be implemented on top of
>     >     ElementTree,
>     >     >     to give
>     >     >     > it a more friendly interface.
>     >     >     >
>     >     >     >     class RSS2( XMLModel ):
>     >     >     >         class XMLAttrs:
>     >     >     >             _tagname = 'rss'
>     >     >     >             version = ' 2.0'
>     >     >     >
>     >     >     >         class channel( XMLNode ):
>     >     >     >             title = XMLString()
>     >     >     >             description = XMLString()
>     >     >     >             link = XMLString()
>     >     >     >             lastBuildDate = XMLDate( format = "%a, %d %b
>     >     %Y %H:%M:%S
>     >     >     >     EST" )
>     >     >     >             generator = XMLString()
>     >     >     >             docs = XMLString()
>     >     >     >
>     >     >     >             class item( XMLNodeList ):
>     >     >     >                 title = XMLString()
>     >     >     >                 link = XMLString()
>     >     >     >                 description = XMLString()
>     >     >     >                 category = XMLList( type =
>     XMLString() )
>     >     >     >                 pubDate = XMLDate( format = "%a, %d
>     %b %Y
>     >     >     %H:%M:%S EST" )
>     >     >     >
>     >     >     >
>     >     >     > Based on your example
>     >     >     > all the helper classes extend the Element
>     >     >     > even XMLModel is an extension to the Element.
>     >     >     >
>     >     >     > So all that needs to be done is a render function that
>     >     will take
>     >     >     your
>     >     >     > class and do some calls to SubElement
>     >     >     >
>     >     >     > One question, how will you manage optional elements
>     in the
>     >     template?
>     >     >     >
>     >     >     > how is that?
>     >     >     >
>     >     >     > on the other hand I remenber looking at
>     >     >     > http://manatlan.online.fr/hypy.php
>     >     >     > < http://manatlan.online.fr/hypy.php> it's something
>     >     similar but
>     >     >     based
>     >     >     > on indentation no classes.
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/turbogears
-~----------~----~----~----~------~----~------~--~---

Reply via email to