Andrew Kenneth Milton <akm@mail.theinternet.com.au> wrote:
+-------[ Kip Rugger ]---------------------- | | [snip] | | <dtml-if "0"> | crap | more crap | <dtml-if "0"> | Lots of crap | </dtml-if> | </dtml-if> | | by analogy with the common practice of #if 0 in C
Won't work, the container will still be parsed for correctness at 'save' time. The problem isn't getting nested comments per se, we already have that. The problem is to completely ignore the contents of the comment tag whilst still allowing nested comments.
Th second part of the problem is that ChrisW(hinger) really wants it, but, doesn't want to do what is necessary to do it. So the problem is simplified to not actually doing anything except talking about doing it. d8)
Thankyou for playing d8)
Since I put my stupid foot into it, I just had to write the patch. For penitence and to learn about DocumentTemplate. This should let you nest <dtml-comment> arb stuff </dtml-comment> without any syntactical value being ascribed to the contents. I am too new to Zope to know if this is even desirable :-) so I just offer it as more of an amusement than anything else. Patch against 2.2.1 source. --- DT_String.py.orig Thu Aug 17 08:46:48 2000 +++ DT_String.py Thu Sep 7 22:27:42 2000 @@ -237,7 +237,11 @@ if s: result.append(s) start=l+len(tag) - if hasattr(command,'blockContinuations'): + if command == Comment: + start = self.parse_comment(text, start, result, tagre, tag, l, + command, args) + + elif hasattr(command,'blockContinuations'): start=self.parse_block(text, start, result, tagre, tag, l, args, command) else: @@ -280,7 +284,11 @@ try: tag, args, command, coname= self._parseTag(tagre,scommand,sa) except ParseError, m: self.parse_error(m[0],m[1], text, l) - if command: + if command == Comment: + start=l+len(tag) + start = self.parse_comment(text, start, result, tagre, tag, l, + command, args) + elif command: start=l+len(tag) if hasattr(command, 'blockContinuations'): # New open tag. Need to find closing tag. @@ -325,6 +333,35 @@ start=self.parse_close(text, start, tagre, tag, l, command,args) elif not coname: return start + + def parse_comment(self, text, start, result, tagre, + stag, sloc, sargs, scommand): + nest = 1 + while 1: + + l=tagre.search(text,start) + if l < 0: self.parse_error('No closing tag', stag, text, sloc) + + tag, name = tagre.group(0, 'name') + start = l + len(tag) + if name == 'comment': + try: + end = tagre.group('end') + except: + try: + end = tagre.group('fmt') + if end != ']': end = '' + except: + self.parse_error('Delimiter problems', + stag, text, sloc) + if end == '': + nest = nest + 1 + else: + nest = nest - 1 + + if nest == 0: + start=self.skip_eol(text, start) + return start shared_globals__roles__=() shared_globals={}