Sha256: c4f65edd45a2c0d4db62d28bf764788fb81d272f109504866663278dfed987cd
Contents?: true
Size: 1.1 KB
Versions: 2
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\s*\Z/).nil? else component.children.empty? || component.children.all?(&method(:blank?)) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
slacken-0.1.3 | lib/slacken/filters/elim_blanks.rb |
slacken-0.1.2 | lib/slacken/filters/elim_blanks.rb |