Class: Mechanize::Page::MetaRefresh
- Defined in:
- lib/mechanize/page/meta_refresh.rb
Overview
This class encapsulates a meta element with a refresh http-equiv. Mechanize treats meta refresh elements just like ‘a’ tags. MetaRefresh objects will contain links, but most likely will have no text.
Constant Summary collapse
- CONTENT_REGEXP =
Matches the content attribute of a meta refresh element. After the match:
$1:: delay $3:: url
/^\s*(\d+\.?\d*)\s*(?:;(?:\s*url\s*=\s*(['"]?)(\S*)\2)?\s*)?$/i
- UNSAFE =
Regexp of unsafe URI characters that excludes % for Issue #177
/[^\-_.!~*'()a-zA-Z\d;\/?:@&%=+$,\[\]]/
Instance Attribute Summary collapse
-
#delay ⇒ Object
readonly
Time to wait before next refresh.
-
#link_self ⇒ Object
readonly
This MetaRefresh links did not contain a url= in the content attribute and links to itself.
Attributes inherited from Link
#attributes, #href, #node, #page
Class Method Summary collapse
- .from_node(node, page, uri = nil) ⇒ Object
-
.parse(content, base_uri = nil) ⇒ Object
Parses the delay and url from the content attribute of a meta refresh element.
Instance Method Summary collapse
-
#initialize(node, page, delay, href, link_self = false) ⇒ MetaRefresh
constructor
A new instance of MetaRefresh.
- #noreferrer? ⇒ Boolean
Methods inherited from Link
#click, #dom_class, #dom_id, #pretty_print, #rel, #rel?, #resolved_uri, #text, #uri
Constructor Details
#initialize(node, page, delay, href, link_self = false) ⇒ MetaRefresh
Returns a new instance of MetaRefresh.
67 68 69 70 71 72 73 |
# File 'lib/mechanize/page/meta_refresh.rb', line 67 def initialize node, page, delay, href, link_self = false super node, page.mech, page @delay = delay.include?(?.) ? delay.to_f : delay.to_i @href = href @link_self = link_self end |
Instance Attribute Details
#delay ⇒ Object (readonly)
Time to wait before next refresh
12 13 14 |
# File 'lib/mechanize/page/meta_refresh.rb', line 12 def delay @delay end |
#link_self ⇒ Object (readonly)
This MetaRefresh links did not contain a url= in the content attribute and links to itself.
18 19 20 |
# File 'lib/mechanize/page/meta_refresh.rb', line 18 def link_self @link_self end |
Class Method Details
.from_node(node, page, uri = nil) ⇒ Object
56 57 58 59 60 61 62 63 64 65 |
# File 'lib/mechanize/page/meta_refresh.rb', line 56 def self.from_node node, page, uri = nil http_equiv = node['http-equiv'] and /\ARefresh\z/i =~ http_equiv or return delay, uri, link_self = parse node['content'], uri return unless delay new node, page, delay, uri, link_self end |
.parse(content, base_uri = nil) ⇒ Object
Parses the delay and url from the content attribute of a meta refresh element.
Returns an array of [delay, url, link_self], where the first two are strings containing the respective parts of the refresh value, and link_self is a boolean value that indicates whether the url part is missing or empty. If base_uri, the URI of the current page is given, the value of url becomes an absolute URI.
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/mechanize/page/meta_refresh.rb', line 43 def self.parse content, base_uri = nil m = CONTENT_REGEXP.match(content) or return delay, url = m[1], m[3] url &&= url.empty? ? nil : Mechanize::Util.uri_escape(url, UNSAFE) link_self = url.nil? if base_uri url = url ? base_uri + url : base_uri end return delay, url, link_self end |
Instance Method Details
#noreferrer? ⇒ Boolean
75 76 77 |
# File 'lib/mechanize/page/meta_refresh.rb', line 75 def noreferrer? true end |