Sha256: 41d5c1c910b55810859298766b5596527322ccd25b68e804357b74689dde7ebd
Contents?: true
Size: 1.1 KB
Versions: 3
Compression:
Stored size: 1.1 KB
Contents
module Slacken::Filters # Public: Reject blank elements. class ElimBlanks < Slacken::Filter def call(component) if component.type.member_of?(:pre) component else component.derive( component.children.reject(&method(:blank?)).map(&method(:call)) ) end end def valid?(component) if component.type.member_of?(:pre) true else !blank?(component) && component.children.all?(&method(:valid?)) end end private def blank?(component) # Reduce complexity of calculation by marking. # (`blank?` traces the given tree to its leaf nodes.) return component.marks[:blank] if component.marks.has_key?(:blank) component.marks[:blank] = case component.type.name when :pre, :ul, :li, :br, :hr, :img, :checkbox, :td false when :text, :emoji content = component.attrs[:content] content.nil? || !content.match(/\A\n*\Z/).nil? else component.children.empty? || component.children.all?(&method(:blank?)) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
slacken-0.1.6 | lib/slacken/filters/elim_blanks.rb |
slacken-0.1.5 | lib/slacken/filters/elim_blanks.rb |
slacken-0.1.4 | lib/slacken/filters/elim_blanks.rb |