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.

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.



208
209
210
211
# File 'lib/action_controller/vendor/html-scanner/html/node.rb', line 208

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

Instance Attribute Details

#contentObject (readonly)

:nodoc:



204
205
206
# File 'lib/action_controller/vendor/html-scanner/html/node.rb', line 204

def content
  @content
end

Instance Method Details

#==(node) ⇒ Object



254
255
256
257
# File 'lib/action_controller/vendor/html-scanner/html/node.rb', line 254

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.



228
229
230
# File 'lib/action_controller/vendor/html-scanner/html/node.rb', line 228

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.



234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
# File 'lib/action_controller/vendor/html-scanner/html/node.rb', line 234

def match(conditions)
  case conditions
    when String
      @content.index(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.



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

def to_s
  @content
end