Class | WWW::Mechanize::Page::Meta |
In: |
lib/www/mechanize/page/meta.rb
|
Parent: | Link |
CONTENT_REGEXP | = | /^\s*(\d+\.?\d*)(;|;\s*url=\s*['"]?(\S*?)['"]?)?\s*$/i |
Matches the content attribute of a meta tag. After the match:
$1:: delay $3:: url |
Parses the delay and url from the content attribute of a meta tag. Parse requires the uri of the current page to infer a url when no url is specified. If a block is given, the parsed delay and url will be passed to it for further processing.
Returns nil if the delay and url cannot be parsed.
# <meta http-equiv="refresh" content="5;url=http://example.com/" /> uri = URI.parse('http://current.com/') Meta.parse("5;url=http://example.com/", uri) # => ['5', 'http://example.com/'] Meta.parse("5;url=", uri) # => ['5', 'http://current.com/'] Meta.parse("5", uri) # => ['5', 'http://current.com/'] Meta.parse("invalid content", uri) # => nil
# File lib/www/mechanize/page/meta.rb, line 32 32: def parse(content, uri) 33: if content && content =~ CONTENT_REGEXP 34: delay, url = $1, $3 35: 36: url = case url 37: when nil, "" then uri.to_s 38: when /^http/i then url 39: else "http://#{uri.host}#{url}" 40: end 41: 42: block_given? ? yield(delay, url) : [delay, url] 43: else 44: nil 45: end 46: end