# =XMPP4R - XMPP Library for Ruby # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option. # Website::http://home.gna.org/xmpp4r/ require 'xmpp4r/rexmladdons' module Jabber ## # A class used to build/parse elements # # These elements may occur as "attachments" # in [Message] and [Presence] stanzas class X < REXML::Element @@namespace_classes = {} ## # Initialize a element # # Does nothing more than setting the element's name to 'x' def initialize super("x") end ## # Create a new [X] from an XML-Element # element:: [REXML::Element] to import, will be automatically converted if namespace appropriate def X.import(element) if @@namespace_classes.has_key?(element.namespace) @@namespace_classes[element.namespace]::new.import(element) else X::new.import(element) end end ## # Add a class by namespace for automatic X conversion (see X.import) # ns:: [String] Namespace (e.g. 'jabber:x:delay') # xclass:: [X] x class derived from X def X.add_namespaceclass(ns, xclass) @@namespace_classes[ns] = xclass end end end