Please email it to me as an attachment with a one paragraph explanation in the code itself about what you changed.
On May 19, 3:05 pm, Ian Reinhart Geiser <[email protected]> wrote: > Oh no, it works exactly as i expect. I was just wondering because I > was changing the implementation and did not want to change the > behavior. Well no changes other than to call the specialized version > of .elements(...) > > Here is the change I have added so far: > def elements(self, *args, **kargs): > """ > find all component that match the supplied attribute > dictionary, > or None if nothing could be found > > All components of the components are searched. > """ > # make a copy of the components > matches = [] > first_only = False > if kargs.has_key("first_only"): > first_only = kargs["first_only"] > del kargs["first_only"] > try: > # check if the component has an attribute with the same > # value as provided > check = True > tag = getattr(self,'tag').replace("/","") > if args and tag not in args: > check = False > for (key, value) in kargs.items(): > if self[key] != value: > check = False > # if found, return the component > if check: > matches.append(self) > if first_only: > return matches > except: > pass > # loop the copy > for c in self.components: > if isinstance(c, XmlComponent): > kargs['first_only'] = first_only > child_matches = c.elements( *args, **kargs ) > if first_only and len(child_matches) != 0: > return child_matches > matches.extend( child_matches ) > return matches > > How might I go about getting this considered for web2py? > > mdipierro wrote: > > It makes a copy of the list of components (shallowcopy), not a > > deepcopy. that means that it returns a new list but the objects in > > there should still be references to the original helpers and you can > > modify them. Does this cause unexpected behaviour? If so can you post > > an example? Perhaps we can improve it. > > > On May 19, 1:38 pm, Ian Reinhart Geiser <[email protected]> wrote: > > > Greetings, is there a technical reason why DIV.elements makes a copy > > > of the elements that it returns? The reason I am asking is because I > > > am making a minor change to it to allow it to call children's > > > elements() method. This way I can overload the elements() method in > > > those children. The reason I am doing this is I have some SCRIPT() > > > objects that are being created in the children but only after all of > > > their children have been added. Then I am using > > > DIV.elements('script') to extract all of these individual scripts and > > > place them as a preceding sibling SCRIPT object to the top level DIV. > > > At any rate, I just want to make sure that there is a good reason that > > > a copy is being performed so I can preserve that when I finish the > > > refactoring. > > > > As a side note, from what I can tell is DIV.siblings is the same > > > story, but it doesn't make a copy of the elements it returns.

