On Jul 20, 2009, at 12:27 AM, Brice Figureau wrote:

>
> On Sun, 2009-07-19 at 23:36 -0700, Luke Kanies wrote:
>> On Jul 18, 2009, at 4:13 AM, Brice Figureau wrote:
>>
>>>
>>> Since there isn't any unit test for puppetdoc rdoc code (my fault),
>>> nobody noticed it was using direct access to the parser AST array.
>>> This changeset fixes the way puppetdoc uses the parser results.
>>>
>>> Signed-off-by: Brice Figureau <[email protected]>
>>> ---
>>> lib/puppet/parser/loaded_code.rb |    6 ++++++
>>> lib/puppet/util/rdoc/parser.rb   |    6 +++---
>>> spec/unit/parser/loaded_code.rb  |    7 +++++++
>>> 3 files changed, 16 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/lib/puppet/parser/loaded_code.rb b/lib/puppet/parser/
>>> loaded_code.rb
>>> index 7c918d4..6c51961 100644
>>> --- a/lib/puppet/parser/loaded_code.rb
>>> +++ b/lib/puppet/parser/loaded_code.rb
>>> @@ -65,6 +65,12 @@ class Puppet::Parser::LoadedCode
>>>        find(namespace, name, :definition)
>>>    end
>>>
>>> +    [:hostclasses, :nodes, :definitions].each do |m|
>>> +        define_method(m) do
>>> +            instance_variable_get("@#{m}").dup
>>> +        end
>>> +    end
>>> +
>>>    private
>>
>> I'd feel much more comfortable providing a list method, rather than
>> providing direct access to the variables.  The whole point of the
>> LoadedCode class is to protect access to these variables so that we
>> can wrap them in a mutex if necessary.
>
> That's why I dup'ed the structure before returning it. It respects the
> encapsulation and still allows mutexes to be used.
> My first thought was to have an each_(hostclasses|definitions|nodes)  
> but
> in puppetdoc, we're doing a: @loadedcode.hostclasses.values.sort,  
> doing
> the same with an each_hostclasses would mean in the end dup'ing the
> whole structure just to be able to sort it, so I thought it was way
> simpler, being the only client to make it this way.
>
> Now, if you prefer, I can provide list accessors instead of those.

Ah, duh; I somehow missed that dup.

+1, then.

-- 
If you're not part of the solution, you're part of the precipitate.
     -- Henry J. Tillman
---------------------------------------------------------------------
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to