class Polites::CodeGrouper
Take a list of items and collapse a collection of subsequent code blocks into a single one separated by newlines.
Public Instance Methods
call(items)
click to toggle source
@param [Array<Polites::Node>] items @return [Array<Polites::Node>]
# File lib/polites/code_grouper.rb, line 9 def call(items) items .chunk { |i| i.is_a?(Block::CodeBlock) }.to_a .inject([]) do |acc, (k, contents)| acc + (k ? [combine(contents)] : contents) end end
Private Instance Methods
combine(items)
click to toggle source
# File lib/polites/code_grouper.rb, line 19 def combine(items) Block::CodeBlock.new( items .inject([]) { |acc, item| acc + item.children + [Text.new("\n")] } .slice(0..-2), items.first.syntax ) end