On 5 August 2014 16:25, Reid Vandewiele <r...@puppetlabs.com> wrote: > On Mon, Aug 4, 2014 at 3:18 PM, Henrik Lindberg < > henrik.lindb...@cloudsmith.com> wrote: > >> >> So, to summarize: The use of * => as an operator is not liked but the >> concept of being able to set attributes from a hash is. Unfortunately, it >> is not possible to directly allow an expression at the position in >> question, there must be a syntactical marker. >> >> As pointed out earlier, the * => was thought to read as "any_attribute => >> from_these_values", but I totally grok if people have an allergic reaction. >> >> We can do this though: >> >> file { default: ($hash) } >> >> This works because it is impossible to have an attribute name in >> parentheses. >> >> In use: >> >> file ( >> default : ($my_file_defaults + { mode => '0666' }); >> '/tmp/foo': ; >> '/tmp/bar': ; >> } >> >> Is that better? No new operator, but you have to use parentheses around >> the expression. >> >> We can naturally also revert the functionality, but it seems it is liked >> conceptually. >> >> >> - henrik >> > > > I think the parenthesis are far preferable over *=>. That isn't to say I > like them - I don't particularly. But the functionality is desirable, and > if it's a matter of a technical limitation then parenthesis are a Good > Enough (TM) compromise from the more ideal direct use of a hash. >
I really prefer the use of * => over the parenthesis. Especially if you need to merge things into the hash. For example look at this example: # using parenthesis hash style class foo ( $servername = $::fqdn, $port = 80, $ssl = false, $extra_opts={}, ) { apache::vhost { $servername: ($extra_opts + { port => $port, ssl => $ssl, }) } } # using * => class foo ( $servername = $::fqdn, $port = 80, $ssl = false, $extra_opts={}, ) { apache::vhost { $servername: port => $port, ssl => $ssl, * => $extra_opts, } } IMO the *=> is way more readable (as gist here if formatting is screwed up for you: https://gist.github.com/dalen/57b37b80a9ba1879b78c). This is quite similar to what I linked earlier that I am doing in https://github.com/spotify/puppet-puppetexplorer/blob/master/manifests/init.pp#L89-L97 So it is not just a contrived example. -- Erik Dalén -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to puppet-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-dev/CAAAzDLdQv5iC40X0Qpx9pFaEhKf6FBPwf%3DKoLjtO7oDnDVt5bw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.