class Blather::Stanza::Iq::Vcard::Vcard

Vcard stanza fragment

Constants

VCARD_NS

@private

Public Class Methods

find_or_create(parent) click to toggle source

Find or create vCard node in Vcard Iq and converts it to Vcard::Vcard

@param [Vcard] parent a Vcard Iq where to find or create vCard

@return [Vcard::Vcard]

# File lib/blather/stanza/iq/vcard.rb, line 95
def self.find_or_create(parent)
  if found_vcard = parent.find_first('//ns:vCard', :ns => VCARD_NS)
    vcard = self.new found_vcard
    found_vcard.remove
  else
    vcard = self.new
  end
  parent << vcard

  vcard
end
new(node = nil) click to toggle source

Create a new Vcard::Vcard object

@param [XML::Node, nil] node a node to inherit from

@return [Vcard::Vcard]

Calls superclass method
# File lib/blather/stanza/iq/vcard.rb, line 83
def self.new(node = nil)
  new_node = super :vCard
  new_node.namespace = VCARD_NS
  new_node.inherit node if node
  new_node
end

Public Instance Methods

[](name) click to toggle source

Find the element's value by name

@param [String] name the name of the element

@return [String, nil]

# File lib/blather/stanza/iq/vcard.rb, line 112
def [](name)
  name = name.split("/").map{|child| "ns:#{child}"}.join("/")

  if elem = find_first(name, :ns => VCARD_NS)
    elem.content
  else
    nil
  end
end
[]=(name, value) click to toggle source

Set the element's value

@param [String] name the name of the element @param [String, nil] value the new value of element

@return [String, nil]

# File lib/blather/stanza/iq/vcard.rb, line 128
def []=(name, value)
  elem = nil
  parent = self

  name.split("/").each do |child|
    elem = parent.find_first("ns:#{child}", :ns => VCARD_NS)
    unless elem
      elem = XMPPNode.new(child, parent.document)
      parent << elem
      parent = elem
    else
      parent = elem
    end
  end

  elem.content = value
end