Sha256: 789ffb37810e66fc493977a1dab317fef81dfdf370fc4356e11d171815c0a523

Contents?: true

Size: 759 Bytes

Versions: 6

Compression:

Stored size: 759 Bytes

Contents

module Slacken::Filters
  # Public: Eliminate internal links and blank links.
  class ElimInvalidLinks < Slacken::Filter
    def call(component)
      if invalid_link?(component)
        component.derive(
          component.children.map(&method(:call)),
          type: :span
        )
      else
        component.derive(
          component.children.map(&method(:call)),
        )
      end
    end

    def valid?(component)
      return false if invalid_link?(component)
      component.children.all?(&method(:valid?))
    end

    private

    def invalid_link?(component)
      if component.type.member_of?(:a)
        link = component.attrs[:href]
        link.nil? || !link.match(%r{\Ahttps?://})
      else
        false
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
slacken-0.1.6 lib/slacken/filters/elim_invalid_links.rb
slacken-0.1.5 lib/slacken/filters/elim_invalid_links.rb
slacken-0.1.4 lib/slacken/filters/elim_invalid_links.rb
slacken-0.1.3 lib/slacken/filters/elim_invalid_links.rb
slacken-0.1.2 lib/slacken/filters/elim_invalid_links.rb
slacken-0.1.1 lib/slacken/filters/elim_invalid_links.rb