class Slacken::Filters::GroupInlines
Public: Group inline elements and wrap them in a wrapper node.
Wrapper nodes are introduced to group inline nodes in a paragraph.
Public Instance Methods
call(component)
click to toggle source
# File lib/slacken/filters/group_inlines.rb, line 5 def call(component) if component.block? component.derive(group_component(component)) else component.derive(component.children.map(&method(:call))) end end
valid?(component)
click to toggle source
# File lib/slacken/filters/group_inlines.rb, line 13 def valid?(component) if component.type.member_of?(:wrapper) true elsif component.inline? false else component.children.all?(&method(:valid?)) end end
Private Instance Methods
group_component(component)
click to toggle source
# File lib/slacken/filters/group_inlines.rb, line 25 def group_component(component) component.children.map(&method(:call)).chunk(&:inline?).map do |is_inline, group| is_inline ? component.class.new(:wrapper, group) : group end.flatten end