On Wed, 2009-09-23 at 16:08 -0700, Markus Roberts wrote: > > Started working on this m// thing and found a bug in the > lexer: in > find_regex_token, when we have several tokens matching, then > only the > first one will win which is the contrary of what we want. > > Why? > Because in the if matched_length > length we scan the input > string so we > advance the string pointer and any other matching tokens will > have > difficulties to match again. > It doesn't seem to me to be a feature (or I might be wrong). > > diff --git a/lib/puppet/parser/lexer.rb > b/lib/puppet/parser/lexer.rb > > index 0db6c22..020963d 100644 > --- a/lib/puppet/parser/lexer.rb > +++ b/lib/puppet/parser/lexer.rb > > @@ -297,12 +300,12 @@ class Puppet::Parser::Lexer > > # We've found a longer match > if match_length > length > - value = @scanner.scan(token.regex) > length = value.length > matched_token = token > end > end > > + value = @scanner.scan(matched_token.regex) unless > matched_token.nil? > return matched_token, value > end > > If you just move it out of the loop you'll always get the > last-matching because the length will always be set to 0 (value having > been initialized up top to ''). > > I agree it's a bug but I'm not buying the fix. *smile*
Yes, you're right, I won't buy it either :-) /me should remember to not do puppet development after a 10 hours work day... -- Brice Figureau Follow the latest Puppet Community evolutions on www.planetpuppet.org! --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Developers" 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/puppet-dev?hl=en -~----------~----~----~----~------~----~------~--~---
