Class: Dommy::CharacterDataNode

Inherits:
Object
  • Object
show all
Includes:
Node
Defined in:
lib/dommy/element.rb

Overview

CharacterData base — TextNode and CommentNode share the data / nodeValue / textContent API and ‘remove` / `cloneNode` semantics.

Direct Known Subclasses

CommentNode, TextNode

Constant Summary

Constants included from Node

Node::ATTRIBUTE_NODE, Node::CDATA_SECTION_NODE, Node::COMMENT_NODE, Node::DOCUMENT_FRAGMENT_NODE, Node::DOCUMENT_NODE, Node::DOCUMENT_POSITION_CONTAINED_BY, Node::DOCUMENT_POSITION_CONTAINS, Node::DOCUMENT_POSITION_DISCONNECTED, Node::DOCUMENT_POSITION_FOLLOWING, Node::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, Node::DOCUMENT_POSITION_PRECEDING, Node::DOCUMENT_TYPE_NODE, Node::ELEMENT_NODE, Node::PROCESSING_INSTRUCTION_NODE, Node::TEXT_NODE

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(document, nokogiri_node) ⇒ CharacterDataNode

Returns a new instance of CharacterDataNode.



162
163
164
165
# File 'lib/dommy/element.rb', line 162

def initialize(document, nokogiri_node)
  @document = document
  @__node__ = nokogiri_node
end

Instance Attribute Details

#__node__Object (readonly)

Returns the value of attribute __node__.



160
161
162
# File 'lib/dommy/element.rb', line 160

def __node__
  @__node__
end

Instance Method Details

#[](key) ⇒ Object



210
211
212
# File 'lib/dommy/element.rb', line 210

def [](key)
  __js_get__(key.to_s)
end

#[]=(key, value) ⇒ Object



214
215
216
# File 'lib/dommy/element.rb', line 214

def []=(key, value)
  __js_set__(key.to_s, value)
end

#__js_call__(method, _args) ⇒ Object



246
247
248
249
250
251
252
# File 'lib/dommy/element.rb', line 246

def __js_call__(method, _args)
  case method
  when "remove"
    @__node__.unlink
    nil
  end
end

#__js_get__(key) ⇒ Object



218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
# File 'lib/dommy/element.rb', line 218

def __js_get__(key)
  case key
  when "nodeType"
    node_type
  when "textContent"
    @__node__.content
  when "data"
    @__node__.content
  when "nodeValue"
    @__node__.content
  when "parentNode"
    parent_node
  when "nextSibling"
    next_sibling
  when "previousSibling"
    previous_sibling
  end
end

#__js_set__(key, value) ⇒ Object



237
238
239
240
241
242
243
244
# File 'lib/dommy/element.rb', line 237

def __js_set__(key, value)
  case key
  when "textContent", "data", "nodeValue"
    write_data(value)
  end

  nil
end

#dataObject

Snake_case facade (CRuby idiomatic)



169
170
171
# File 'lib/dommy/element.rb', line 169

def data
  @__node__.content
end

#data=(value) ⇒ Object



173
174
175
# File 'lib/dommy/element.rb', line 173

def data=(value)
  write_data(value)
end

#next_siblingObject



202
203
204
# File 'lib/dommy/element.rb', line 202

def next_sibling
  @__node__.next && @document.wrap_node(@__node__.next)
end

#node_valueObject



177
178
179
# File 'lib/dommy/element.rb', line 177

def node_value
  @__node__.content
end

#node_value=(value) ⇒ Object



181
182
183
# File 'lib/dommy/element.rb', line 181

def node_value=(value)
  write_data(value)
end

#parent_nodeObject



198
199
200
# File 'lib/dommy/element.rb', line 198

def parent_node
  @__node__.parent && @document.wrap_node(@__node__.parent)
end

#previous_siblingObject



206
207
208
# File 'lib/dommy/element.rb', line 206

def previous_sibling
  @__node__.previous && @document.wrap_node(@__node__.previous)
end

#removeObject



193
194
195
196
# File 'lib/dommy/element.rb', line 193

def remove
  @__node__.unlink
  nil
end

#text_contentObject



185
186
187
# File 'lib/dommy/element.rb', line 185

def text_content
  @__node__.content
end

#text_content=(value) ⇒ Object



189
190
191
# File 'lib/dommy/element.rb', line 189

def text_content=(value)
  write_data(value)
end