Class: Wunderbar::CDATANode
- Inherits:
-
PreformattedNode
- Object
- Node
- PreformattedNode
- Wunderbar::CDATANode
- Defined in:
- lib/wunderbar/node.rb
Direct Known Subclasses
Constant Summary
Constants inherited from Node
Instance Attribute Summary
Attributes inherited from Node
#attrs, #children, #name, #node, #parent, #text
Class Method Summary collapse
Instance Method Summary collapse
Methods inherited from PreformattedNode
Methods inherited from Node
#add_child, #at, #initialize, #method_missing, parse_css_selector, #preserve_spaces?, #root, #search, #walk
Constructor Details
This class inherits a constructor from Wunderbar::Node
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Wunderbar::Node
Class Method Details
.normalize(data, indent = '') ⇒ Object
275 276 277 278 279 280 281 282 283 284 285 |
# File 'lib/wunderbar/node.rb', line 275 def self.normalize(data, indent='') data = data.sub(/\n\s*\Z/, '').sub(/\A\s*\n/, '') unindent = data.sub(/s+\Z/,'').scan(/^ *\S/).map(&:length).min || 0 before = ::Regexp.new('^'.ljust(unindent)) node = @node data.gsub! before, indent data.gsub! /^#{indent}$/, '' if unindent == 0 data end |
Instance Method Details
#serialize(options = {}, result = [], indent = '') ⇒ Object
287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 |
# File 'lib/wunderbar/node.rb', line 287 def serialize( = {}, result = [], indent='') if @text and @text.include? "\n" tindent = (indent ? "#{indent}#{[:indent]}" : indent) children.unshift CDATANode.normalize(@text, tindent).rstrip @text = nil end if @text and @text =~ /[<^>]/ indent += [:indent] if indent children.unshift @text.gsub(/^/, indent).gsub(/^ +$/,'').rstrip @text = nil super(.merge(pre: pre, post: post), result, indent) elsif children && children.any? {|node| String===node && node =~ /[<^>]/} super(.merge(pre: pre, post: post), result, indent) else super end end |