Class: Nokogiri::XML::Builder::NodeBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/nokogiri/xml/builder.rb

Overview

:nodoc:

Instance Method Summary collapse

Constructor Details

#initialize(node, doc_builder) ⇒ NodeBuilder

Returns a new instance of NodeBuilder.



361
362
363
364
# File 'lib/nokogiri/xml/builder.rb', line 361

def initialize node, doc_builder
  @node = node
  @doc_builder = doc_builder
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object



374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
# File 'lib/nokogiri/xml/builder.rb', line 374

def method_missing(method, *args, &block)
  opts = args.last.is_a?(Hash) ? args.pop : {}
  case method.to_s
  when /^(.*)!$/
    @node['id'] = $1
    @node.content = args.first if args.first
  when /^(.*)=/
    @node[$1] = args.first
  else
    @node['class'] =
      ((@node['class'] || '').split(/\s/) + [method.to_s]).join(' ')
    @node.content = args.first if args.first
  end

  # Assign any extra options
  opts.each do |k,v|
    @node[k.to_s] = ((@node[k.to_s] || '').split(/\s/) + [v]).join(' ')
  end

  if block_given?
    old_parent = @doc_builder.parent
    @doc_builder.parent = @node
    value = @doc_builder.instance_eval(&block)
    @doc_builder.parent = old_parent
    return value
  end
  self
end

Instance Method Details

#[](k) ⇒ Object



370
371
372
# File 'lib/nokogiri/xml/builder.rb', line 370

def [] k
  @node[k]
end

#[]=(k, v) ⇒ Object



366
367
368
# File 'lib/nokogiri/xml/builder.rb', line 366

def []= k, v
  @node[k] = v
end