You are a complete animal, wow.
Reviews to follow...
On Jul 26, 2009, at 9:03 AM, Brice Figureau wrote:
>
> Hi,
>
> James wanted to merge this patch for 0.25 (although I'm myself not
> sure
> it is a good idea), so I'm posting a new version fixing all bugs
> I could find and takig into account the various comments I received.
>
> Note to reviewers:
> 0002 and 0003 weren't touched, but all other patches were
> re-written or modified, so they are worth re-reading.
>
> Notes for this version:
> * scope ephemeral vars are now in their own symbol table
>
> * lexer returns a Regexp when it lexes a puppet regex
>
> * AST::Leaf nodes now supports a evaluate_match method which
> at the same time self-safeevaluate and "match" (either by equality
> for regular ast nodes or in the regexp sense for AST::Regex).
> This methods allows unification and simplification of AST if, case
> and selector code.
>
> * I added several spec tests for selector/case.
>
> * I changed loaded_code namespace finding tests which were using
> nodes (which IMHO doesn't support namespacing) to use hostclass
> instead (as there is no namespace support for the new node name
> using HostName instead of a String).
>
> * I don't know exactly how the first version of Regex nodes could have
> worked, but I discovered that the node classname is really important.
>
> When we evaluate the node to a resource the node classname (ie our
> regex
> converted to string) becomes the resource title.
> Of course using a regex source here broke everything (ie invalid
> tags, impossible
> to find the resource afterwards in the compiler...).
> So to fix this issue, in 0009 I introduced AST::Node#get_classname
> which
> if the node is a regex node returns the currently connected node
> name which
> is valid and mimics what would have happened if the node was a
> string nodename.
> But this has a drawback which IMHO isn't solvable easily: namely it
> isn't
> possible to inherits from a regex node (but IMHO it has no sense
> doing this).
>
>
> Thanks,
> Please review!
>
> Brice
>
> Brice Figureau (9):
> Implement ephemeral scope variables
> Allow variable $0 to $9 to be interpolated, if ephemeral
> Add regex, match and not match token to the lexer
> Add regexes and regex match operators to the parser
> Add AST::Regex, an AST leaf node representing a regex
> Fix #2033 - Allow regexp in if expression
> Enhance selector and case statements to match with regexp
> Make sure node are referenced by their names
> Implement node matching with regexes
>
> lib/puppet/parser/ast.rb | 1 +
> lib/puppet/parser/ast/caseopt.rb | 10 +
> lib/puppet/parser/ast/casestatement.rb | 11 +-
> lib/puppet/parser/ast/definition.rb | 6 +-
> lib/puppet/parser/ast/ifstatement.rb | 17 +-
> lib/puppet/parser/ast/leaf.rb | 83 ++-
> lib/puppet/parser/ast/match_operator.rb | 31 +
> lib/puppet/parser/ast/node.rb | 14 +-
> lib/puppet/parser/ast/selector.rb | 12 +-
> lib/puppet/parser/ast/vardef.rb | 2 +-
> lib/puppet/parser/grammar.ra | 24 +-
> lib/puppet/parser/lexer.rb | 7 +
> lib/puppet/parser/loaded_code.rb | 17 +-
> lib/puppet/parser/parser.rb | 1770 ++++++++++++++
> +--------------
> lib/puppet/parser/parser_support.rb | 4 +-
> lib/puppet/parser/scope.rb | 70 +-
> spec/unit/parser/ast/casestatement.rb | 143 +++
> spec/unit/parser/ast/definition.rb | 18 +
> spec/unit/parser/ast/ifstatement.rb | 75 ++
> spec/unit/parser/ast/leaf.rb | 194 ++++-
> spec/unit/parser/ast/match_operator.rb | 50 +
> spec/unit/parser/ast/node.rb | 20 +
> spec/unit/parser/ast/selector.rb | 156 +++
> spec/unit/parser/ast/vardef.rb | 4 +-
> spec/unit/parser/lexer.rb | 14 +
> spec/unit/parser/loaded_code.rb | 114 ++-
> spec/unit/parser/parser.rb | 90 ++-
> spec/unit/parser/scope.rb | 98 ++-
> test/data/snippets/casestatement.pp | 7 +
> test/data/snippets/ifexpression.pp | 12 +
> test/data/snippets/ifexpression.rb | 6 -
> test/data/snippets/selectorvalues.pp | 7 +
> test/language/ast.rb | 5 +-
> test/language/snippets.rb | 7 +-
> test/lib/puppettest/parsertesting.rb | 5 +
> test/lib/puppettest/support/collection.rb | 2 +-
> 36 files changed, 2163 insertions(+), 943 deletions(-)
> create mode 100644 lib/puppet/parser/ast/match_operator.rb
> create mode 100755 spec/unit/parser/ast/casestatement.rb
> create mode 100755 spec/unit/parser/ast/ifstatement.rb
> create mode 100755 spec/unit/parser/ast/match_operator.rb
> create mode 100755 spec/unit/parser/ast/selector.rb
> create mode 100644 test/data/snippets/ifexpression.pp
> delete mode 100644 test/data/snippets/ifexpression.rb
>
>
> >
--
It's very hard to predict things . . . Especially the future.
-- Prof. Charles Kelemen, Swarthmore CS Dept.
---------------------------------------------------------------------
Luke Kanies | http://reductivelabs.com | http://madstop.com
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---