Class: HTML::Text

Inherits:
Node show all
Defined in:
lib/action_controller/vendor/html-scanner/html/node.rb

Overview

A node that represents text, rather than markup.

Direct Known Subclasses

CDATA

Instance Attribute Summary collapse

Attributes inherited from Node

#children, #line, #parent, #position

Instance Method Summary collapse

Methods inherited from Node

#find_all, parse, #tag?, #validate_conditions

Constructor Details

#initialize(parent, line, pos, content) ⇒ Text

Creates a new text node as a child of the given parent, with the given content.



219
220
221
222
# File 'lib/action_controller/vendor/html-scanner/html/node.rb', line 219

def initialize(parent, line, pos, content)
  super(parent, line, pos)
  @content = content
end

Instance Attribute Details

#contentObject (readonly)

:nodoc:



215
216
217
# File 'lib/action_controller/vendor/html-scanner/html/node.rb', line 215

def content
  @content
end

Instance Method Details

#==(node) ⇒ Object



265
266
267
268
# File 'lib/action_controller/vendor/html-scanner/html/node.rb', line 265

def ==(node)
  return false unless super
  content == node.content
end

#find(conditions) ⇒ Object

Returns self if this node meets the given conditions. Text nodes support conditions of the following kinds:

  • if conditions is a string, it must be a substring of the node’s content

  • if conditions is a regular expression, it must match the node’s content

  • if conditions is a hash, it must contain a :content key that is either a string or a regexp, and which is interpreted as described above.



239
240
241
# File 'lib/action_controller/vendor/html-scanner/html/node.rb', line 239

def find(conditions)
  match(conditions) && self
end

#match(conditions) ⇒ Object

Returns non-nil if this node meets the given conditions, or nil otherwise. See the discussion of #find for the valid conditions.



245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
# File 'lib/action_controller/vendor/html-scanner/html/node.rb', line 245

def match(conditions)
  case conditions
    when String
      @content == conditions
    when Regexp
      @content =~ conditions
    when Hash
      conditions = validate_conditions(conditions)

      # Text nodes only have :content, :parent, :ancestor
      unless (conditions.keys - [:content, :parent, :ancestor]).empty?
        return false
      end

      match(conditions[:content])
    else
      nil
  end
end

#to_sObject

Returns the content of this node.



225
226
227
# File 'lib/action_controller/vendor/html-scanner/html/node.rb', line 225

def to_s
  @content
end