Skip to content

Commit bc8f433

Browse files
authored
Merge pull request #8792 from joshcooper/array_concat
(PUP-11318) Use flat_map not +
2 parents 1346415 + 1cb4979 commit bc8f433

File tree

4 files changed

+22
-5
lines changed

4 files changed

+22
-5
lines changed

benchmarks/many_modules/benchmarker.rb

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,24 @@ def generate
7070
)
7171
end
7272

73+
roles = 0.upto(10).to_a
74+
7375
render(File.join(templates, 'module', 'init.pp.erb'),
7476
File.join(manifests, 'init.pp'),
75-
:name => module_name)
77+
:name => module_name,
78+
:roles => roles
79+
)
7680

7781
render(File.join(templates, 'module', 'internal.pp.erb'),
7882
File.join(manifests, 'internal.pp'),
7983
:name => module_name)
84+
85+
roles.each do |j|
86+
render(File.join(templates, 'module', 'role.pp.erb'),
87+
File.join(manifests, "role#{j}.pp"),
88+
:name => module_name,
89+
:index => j)
90+
end
8091
end
8192

8293
render(File.join(templates, 'puppet.conf.erb'),
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
class <%= name %> {
22
class { "<%= name %>::internal": }
3+
<% roles.each do |role| %>
4+
class { "<%= name %>::role<%= role %>": }
5+
<% end %>
36
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class <%= name %>::role<%= index %> {
2+
notify { "<%= name %>::role<%= index %>": }
3+
}

lib/puppet/pops/parser/code_merger.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@ def concatenate(parse_results)
1111
# PUP-5299, some sites have thousands of entries, and run out of stack when evaluating - the logic
1212
# below maps the logic as flatly as possible.
1313
#
14-
children = parse_results.select {|x| !x.nil? && x.code}.reduce([]) do |memo, parsed_class|
14+
children = parse_results.select {|x| !x.nil? && x.code}.flat_map do |parsed_class|
1515
case parsed_class.code
1616
when Puppet::Parser::AST::BlockExpression
1717
# the BlockExpression wraps a single 4x instruction that is most likely wrapped in a Factory
18-
memo + parsed_class.code.children.map {|c| c.is_a?(Puppet::Pops::Model::Factory) ? c.model : c }
18+
parsed_class.code.children.map {|c| c.is_a?(Puppet::Pops::Model::Factory) ? c.model : c }
1919
when Puppet::Pops::Model::Factory
2020
# If it is a 4x instruction wrapped in a Factory
21-
memo + parsed_class.code.model
21+
parsed_class.code.model
2222
else
2323
# It is the instruction directly
24-
memo << parsed_class.code
24+
parsed_class.code
2525
end
2626
end
2727
Puppet::Parser::AST::BlockExpression.new(:children => children)

0 commit comments

Comments
 (0)