Class Jabber::JID
In: lib/xmpp4r/jid.rb
Parent: Object

The JID class represents a Jabber Identifier as described by RFC3920 section 3.1.

Note that you can use JIDs also for Sorting, Hash keys, …

Methods

<=>   ==   bare   bare!   bared?   domain   domain=   empty?   eql?   escape   hash   new   node   node=   resource   resource=   strip   strip!   stripped?   to_s  

Included Modules

Comparable

Constants

PATTERN = /^(?:([^@]*)@)??([^@\/]*)(?:\/(.*?))?$/
USE_STRINGPREP = true
USE_STRINGPREP = false

Public Class methods

Escape JID

[Source]

     # File lib/xmpp4r/jid.rb, line 152
152:     def JID::escape(jid)
153:       return jid.to_s.gsub('@', '%')
154:     end

Create a new JID. If called as new(‘a@b/c’), parse the string and split (node, domain, resource)

[Source]

    # File lib/xmpp4r/jid.rb, line 26
26:     def initialize(node = "", domain = nil, resource = nil)
27:       @resource = resource
28:       @domain = domain
29:       @node = node
30:       if @domain.nil? and @resource.nil? and @node
31:         @node, @domain, @resource = @node.to_s.scan(PATTERN).first
32:       end
33: 
34:       if USE_STRINGPREP
35:         @node = IDN::Stringprep.nodeprep(@node) if @node
36:         @domain = IDN::Stringprep.nameprep(@domain) if @domain
37:         @resource = IDN::Stringprep.resourceprep(@resource) if @resource
38:       else
39:         @node.downcase! if @node
40:         @domain.downcase! if @domain
41:       end
42: 
43:       raise ArgumentError, 'Node too long' if (@node || '').length > 1023
44:       raise ArgumentError, 'Domain too long' if (@domain || '').length > 1023
45:       raise ArgumentError, 'Resource too long' if (@resource || '').length > 1023
46:     end

Public Instance methods

Compare two JIDs, helpful for sorting etc.

String representations are compared, see JID#to_s

[Source]

     # File lib/xmpp4r/jid.rb, line 107
107:     def <=>(o)
108:       to_s <=> o.to_s
109:     end

Ccompare to another JID

String representations are compared, see JID#to_s

[Source]

     # File lib/xmpp4r/jid.rb, line 98
 98:     def ==(o)
 99:       to_s == o.to_s
100:     end
bare()

Alias for strip

bare!()

Alias for strip!

bared?()

Alias for stripped?

Get the JID‘s domain

[Source]

     # File lib/xmpp4r/jid.rb, line 125
125:     def domain
126:       return nil if @domain.empty?
127:       @domain
128:     end

Set the JID‘s domain

[Source]

     # File lib/xmpp4r/jid.rb, line 131
131:     def domain=(v)
132:       @domain = v.to_s
133:       if USE_STRINGPREP
134:         @domain = IDN::Stringprep.nodeprep(@domain)
135:       end
136:     end

Test if jid is empty

[Source]

     # File lib/xmpp4r/jid.rb, line 157
157:     def empty?
158:       to_s.empty?
159:     end

Ccompare to another JID

String representations are compared, see JID#to_s

[Source]

    # File lib/xmpp4r/jid.rb, line 90
90:     def eql?(o)
91:       to_s.eql?(o.to_s)
92:     end

Returns a hash value of the String representation (see JID#to_s)

[Source]

    # File lib/xmpp4r/jid.rb, line 82
82:     def hash
83:       return to_s.hash
84:     end

Get the JID‘s node

[Source]

     # File lib/xmpp4r/jid.rb, line 112
112:     def node
113:       @node
114:     end

Set the JID‘s node

[Source]

     # File lib/xmpp4r/jid.rb, line 117
117:     def node=(v)
118:       @node = v.to_s
119:       if USE_STRINGPREP
120:         @node = IDN::Stringprep.nodeprep(@node) if @node
121:       end
122:     end

Get the JID‘s resource

[Source]

     # File lib/xmpp4r/jid.rb, line 139
139:     def resource
140:       @resource
141:     end

Set the JID‘s resource

[Source]

     # File lib/xmpp4r/jid.rb, line 144
144:     def resource=(v)
145:       @resource = v.to_s
146:       if USE_STRINGPREP
147:         @resource = IDN::Stringprep.nodeprep(@resource)
148:       end
149:     end

Returns a new JID with resource removed.

return:[JID]

[Source]

    # File lib/xmpp4r/jid.rb, line 65
65:     def strip
66:       JID::new(@node, @domain)
67:     end

Removes the resource (sets it to nil)

return:[JID] self

[Source]

    # File lib/xmpp4r/jid.rb, line 73
73:     def strip!
74:       @resource = nil
75:       self
76:     end

Test id jid is strepped

[Source]

     # File lib/xmpp4r/jid.rb, line 162
162:     def stripped?
163:       @resource.nil?
164:     end

Returns a string representation of the JID

[Source]

    # File lib/xmpp4r/jid.rb, line 55
55:     def to_s
56:       s = @domain
57:       s = "#{@node}@#{s}" if @node
58:       s += "/#{@resource}" if @resource
59:       return s
60:     end

[Validate]