Sha256: 3a6f31195392366fb3b175ae692d1f785f29e2b3b71659a81b982f2735b3df5f

Contents?: true

Size: 1.37 KB

Versions: 2

Compression:

Stored size: 1.37 KB

Contents

module WWW
  class Mechanize
    class Page < WWW::Mechanize::File
      # This class encapsulates links.  It contains the text and the URI for
      # 'a' tags parsed out of an HTML page.  If the link contains an image,
      # the alt text will be used for that image.
      #
      # For example, the text for the following links with both be 'Hello World':
      #
      # <a href="http://rubyforge.org">Hello World</a>
      # <a href="http://rubyforge.org"><img src="test.jpg" alt="Hello World"></a>
      class Link
        attr_reader :node
        attr_reader :href
        attr_reader :text
        attr_reader :attributes
        attr_reader :page
        alias :to_s :text
        alias :referer :page
      
        def initialize(node, mech, page)
          @node = node
          @href = node['href'] 
          @text = node.inner_text
          @page = page
          @mech = mech
          @attributes = node

          # If there is no text, try to find an image and use it's alt text
          if (@text.nil? || @text.length == 0) && node.search('img').length > 0
            @text = ''
            node.search('img').each do |e|
              @text << ( e['alt'] || '')
            end
          end

        end

        def uri
          URI.parse(@href)
        end

        # Click on this link
        def click
          @mech.click self
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mechanize-0.8.5 lib/www/mechanize/page/link.rb
mechanize-0.9.0 lib/www/mechanize/page/link.rb