Best unofficial Apache Server developers community
Username
Forgot password?
Sign in with Twitter account
Sign in with Facebook account
List archives

Re: [PATCH/puppet 1/1] [4638] Cleanup of plurals and inheritance relationships in AST

Patch to improve Naginator functionality
(75 lines)
PATCH/puppet 1/1] Fix for #4637 --use of namevar missed in refactor
(29 lines)
Sep 3, 2010
Matt Robinson
Matt Robinson
+1.  I reviewed parts of this in person with Paul, and then briefly
got confused when I went to +1 it since he had posted a slightly
different version of this patch under ticket #4633.  #4633 was
rejected in favor of this solution which doesn't flatten arrays.

On Fri, Aug 27, 2010 at 10:40 AM, Paul Berry <pa### @puppetlabs.com>
wrote:
 Changed the grammar so that the following "plural" constructs always
 parse as an ASTArray:

 - funcvalues
 - rvalues
 - resourceinstances
 - anyparams
 - params
 - caseopts
 - casevalues

 And the following "singluar" construct never parses as an ASTArray:

 - statement

 The previous behavior was for these constructs to parse as a scalar
 when they represented a single item and an ASTArray when they
 contained zero or multiple items.  ("Statement" could sometimes
 represent a single item because a single resource declaration could
 represent multiple resources).  This complicated other grammar rules
 and caused ambiguous handling of nested arrays.

 Also made these changes to the AST class hierarchy:

 - ResourceInstance no longer derives from ASTArray.  This
relationship
  was not meaningful because a ResourceInstance is a (title,
  parameters) pair, not an array, and it produced complications when
  we wanted to represent an array of ResourceInstance objects.

 - Resource no longer derives from ResourceReference.  No significant
  functionality was being inherited and the relationship doesn't make
  sense in an AST context.

 - ResourceOverride no longer derives from Resource.  No significant
  functionality was being inherited and the relationship doesn't make
  sense in an AST context.

 - Resource can now represent a compound resource instance such as
  "notify { foo: ; bar: }".  This saves the parser from having to
  use represent a statement as an array of objects.

 - ASTArray's evaluate method never flattens out arrays of arrays.

 Signed-off-by: Paul Berry <pa### @puppetlabs.com>
 ---
  lib/puppet/parser/ast.rb                   |    1 +
  lib/puppet/parser/ast/astarray.rb          |   34 +--
  lib/puppet/parser/ast/caseopt.rb           |   36 +--
  lib/puppet/parser/ast/resource.rb          |   93 +++----
  lib/puppet/parser/ast/resource_instance.rb |    9 +
  lib/puppet/parser/ast/resource_override.rb |    5 +-
  lib/puppet/parser/grammar.ra               |  131 ++------
  lib/puppet/parser/parser.rb                |  454
+++++++++++++
Reply
Tags: arraysresource
Messages in this thread
Re: [PATCH/puppet 1/1] [4638] Cleanup of plurals and inheritance relationships in AST
Similar Threads