Sha256: ef9903434608239b480efbb70f5ad0746ae1e02b0bd0e192b9419e99ad83582d

Contents?: true

Size: 613 Bytes

Versions: 2

Compression:

Stored size: 613 Bytes

Contents

module Kitabu
  module TOC
    class HTML
      class Stream
        attr_accessor :listener, :content
        attr_reader :html

        def initialize(content, listener)
          @content  = content
          @listener = listener
          @html = Nokogiri::HTML.parse(content)
        end

        def parse
          traverse(html)
        end

        def traverse(node)
          node.children.each do |child|
            emit(child)
            traverse(child)
          end
        end

        def emit(node)
          listener.tag(node) if node.name =~ /h[1-6]/
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
kitabu-2.1.0 lib/kitabu/toc/html/stream.rb
kitabu-2.0.4 lib/kitabu/toc/html/stream.rb