Sha256: 2e8098686f6addc97b0cc59188d446d9e8d78ae5fc487dba25b81613874631f9

Contents?: true

Size: 732 Bytes

Versions: 7

Compression:

Stored size: 732 Bytes

Contents

require 'httparty'
require 'oga'

module Elsmore
  class Document
    attr_accessor :url

    def initialize url, parent = nil
      self.url = Elsmore::Url.new(url, parent)
    end

    def links
      @links ||= begin
        doc.xpath('//a').map do |element|
          element.attribute('href')
        end.compact.map(&:value).map do |href|
          Elsmore::Document.new(href, url)
        end.compact
      end
    end

    def data
      doc.to_xml
    end

    def write!
      Elsmore::Writer.new(self).write
    end

    def rewrite
      Elsmore::Rewriter.new(self).rewrite
    end

    def doc
      @doc ||= begin
        html = HTTParty.get(url.canonical_url)
        Oga.parse_html(html)
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
elsmore-0.1.7 lib/elsmore/document.rb
elsmore-0.1.6 lib/elsmore/document.rb
elsmore-0.1.5 lib/elsmore/document.rb
elsmore-0.1.4 lib/elsmore/document.rb
elsmore-0.1.3 lib/elsmore/document.rb
elsmore-0.1.2 lib/elsmore/document.rb
elsmore-0.1.1 lib/elsmore/document.rb