class Slacken::Filters::SanitizeList

Public: Sanitize not allowed tags in list.

Public Instance Methods

call(component) click to toggle source
# File lib/slacken/filters/sanitize_list.rb, line 4
def call(component)
  case component.type.name
  when :ul, :ol, :dl
    component.derive(component.children.map(&method(:sanitize_list)))
  else
    component.derive(component.children.map(&method(:call)))
  end
end
valid?(component) click to toggle source
# File lib/slacken/filters/sanitize_list.rb, line 13
def valid?(component)
  case component.type.name
  when :ul, :ol, :dl
    component.children.all?(&method(:list_sanitized?))
  else
    component.children.all?(&method(:valid?))
  end
end

Private Instance Methods

list_sanitized?(component) click to toggle source
# File lib/slacken/filters/sanitize_list.rb, line 49
def list_sanitized?(component)
  if component.type.allowed_in_list?
    component.children.all?(&method(:list_sanitized?))
  else
    false
  end
end
sanitize_list(component) click to toggle source
# File lib/slacken/filters/sanitize_list.rb, line 24
def sanitize_list(component)
  if component.type.member_of?(:li, :dd)
    head, *tails = component.children
    component.derive(
      [sanitize_list_item(head), *tails.map(&method(:sanitize_list))]
    )
  elsif component.type.allowed_in_list?
    component.derive(component.children.map(&method(:sanitize_list)))
  else
    component.derive(
      component.children.map(&method(:sanitize_list)),
      type: component.block? ? :div : :span
    )
  end
end
sanitize_list_item(component) click to toggle source
# File lib/slacken/filters/sanitize_list.rb, line 40
def sanitize_list_item(component)
  if component.type.allowed_as_list_item?
    component.derive(component.children.map(&method(:sanitize_list_item)))
  else
    # No block tags are allowed.
    component.derive(component.children.map(&method(:sanitize_list_item)), type: :span)
  end
end