Class: Autolinker::HTML::Text

Inherits:
Node
  • Object
show all
Defined in:
lib/autolinker/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.



216
217
218
219
# File 'lib/autolinker/html/node.rb', line 216

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

Instance Attribute Details

#contentObject (readonly)

:nodoc:



212
213
214
# File 'lib/autolinker/html/node.rb', line 212

def content
  @content
end

Instance Method Details

#==(node) ⇒ Object



262
263
264
265
# File 'lib/autolinker/html/node.rb', line 262

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.



236
237
238
# File 'lib/autolinker/html/node.rb', line 236

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.



242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
# File 'lib/autolinker/html/node.rb', line 242

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.



222
223
224
# File 'lib/autolinker/html/node.rb', line 222

def to_s
  @content
end