Class: Jabber::JID
Overview
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, …
Constant Summary collapse
- PATTERN =
/^(?:([^@]*)@)??([^@\/]*)(?:\/(.*?))?$/
Class Method Summary collapse
-
.escape(jid) ⇒ Object
Escape JID.
Instance Method Summary collapse
-
#<=>(o) ⇒ Object
Compare two JIDs, helpful for sorting etc.
-
#==(o) ⇒ Object
Ccompare to another JID.
-
#domain ⇒ Object
Get the JID’s domain.
-
#domain=(v) ⇒ Object
Set the JID’s domain.
-
#empty? ⇒ Boolean
Test if jid is empty.
-
#eql?(o) ⇒ Boolean
Ccompare to another JID.
-
#hash ⇒ Object
Returns a hash value of the String representation (see JID#to_s).
-
#initialize(node = "", domain = nil, resource = nil) ⇒ JID
constructor
Create a new JID.
-
#node ⇒ Object
Get the JID’s node.
-
#node=(v) ⇒ Object
Set the JID’s node.
-
#resource ⇒ Object
Get the JID’s resource.
-
#resource=(v) ⇒ Object
Set the JID’s resource.
-
#strip ⇒ Object
(also: #bare)
Returns a new JID with resource removed.
-
#strip! ⇒ Object
(also: #bare!)
- Removes the resource (sets it to nil) return
- JID
-
self.
-
#stripped? ⇒ Boolean
(also: #bared?)
Test id jid is strepped.
-
#to_s ⇒ Object
Returns a string representation of the JID * “” * “domain” * “node@domain” * “domain/resource” * “node@domain/resource”.
Constructor Details
#initialize(node = "", domain = nil, resource = nil) ⇒ JID
Create a new JID. If called as new(‘a@b/c’), parse the string and split (node, domain, resource)
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/xmpp4r/jid.rb', line 26 def initialize(node = "", domain = nil, resource = nil) @resource = resource @domain = domain @node = node if @domain.nil? and @resource.nil? and @node @node, @domain, @resource = @node.to_s.scan(PATTERN).first end if USE_STRINGPREP @node = IDN::Stringprep.nodeprep(@node) if @node @domain = IDN::Stringprep.nameprep(@domain) if @domain @resource = IDN::Stringprep.resourceprep(@resource) if @resource else @node.downcase! if @node @domain.downcase! if @domain end raise ArgumentError, 'Node too long' if (@node || '').length > 1023 raise ArgumentError, 'Domain too long' if (@domain || '').length > 1023 raise ArgumentError, 'Resource too long' if (@resource || '').length > 1023 end |
Class Method Details
.escape(jid) ⇒ Object
Escape JID
152 153 154 |
# File 'lib/xmpp4r/jid.rb', line 152 def JID::escape(jid) return jid.to_s.gsub('@', '%') end |
Instance Method Details
#<=>(o) ⇒ Object
Compare two JIDs, helpful for sorting etc.
String representations are compared, see JID#to_s
107 108 109 |
# File 'lib/xmpp4r/jid.rb', line 107 def <=>(o) to_s <=> o.to_s end |
#==(o) ⇒ Object
Ccompare to another JID
String representations are compared, see JID#to_s
98 99 100 |
# File 'lib/xmpp4r/jid.rb', line 98 def ==(o) to_s == o.to_s end |
#domain ⇒ Object
Get the JID’s domain
125 126 127 128 |
# File 'lib/xmpp4r/jid.rb', line 125 def domain return nil if @domain.empty? @domain end |
#domain=(v) ⇒ Object
Set the JID’s domain
131 132 133 134 135 136 |
# File 'lib/xmpp4r/jid.rb', line 131 def domain=(v) @domain = v.to_s if USE_STRINGPREP @domain = IDN::Stringprep.nodeprep(@domain) end end |
#empty? ⇒ Boolean
Test if jid is empty
157 158 159 |
# File 'lib/xmpp4r/jid.rb', line 157 def empty? to_s.empty? end |
#eql?(o) ⇒ Boolean
Ccompare to another JID
String representations are compared, see JID#to_s
90 91 92 |
# File 'lib/xmpp4r/jid.rb', line 90 def eql?(o) to_s.eql?(o.to_s) end |
#hash ⇒ Object
Returns a hash value of the String representation (see JID#to_s)
82 83 84 |
# File 'lib/xmpp4r/jid.rb', line 82 def hash return to_s.hash end |
#node ⇒ Object
Get the JID’s node
112 113 114 |
# File 'lib/xmpp4r/jid.rb', line 112 def node @node end |
#node=(v) ⇒ Object
Set the JID’s node
117 118 119 120 121 122 |
# File 'lib/xmpp4r/jid.rb', line 117 def node=(v) @node = v.to_s if USE_STRINGPREP @node = IDN::Stringprep.nodeprep(@node) if @node end end |
#resource ⇒ Object
Get the JID’s resource
139 140 141 |
# File 'lib/xmpp4r/jid.rb', line 139 def resource @resource end |
#resource=(v) ⇒ Object
Set the JID’s resource
144 145 146 147 148 149 |
# File 'lib/xmpp4r/jid.rb', line 144 def resource=(v) @resource = v.to_s if USE_STRINGPREP @resource = IDN::Stringprep.nodeprep(@resource) end end |
#strip ⇒ Object Also known as: bare
Returns a new JID with resource removed.
- return
- JID
65 66 67 |
# File 'lib/xmpp4r/jid.rb', line 65 def strip JID.new(@node, @domain) end |
#strip! ⇒ Object Also known as: bare!
Removes the resource (sets it to nil)
- return
- JID
-
self
73 74 75 76 |
# File 'lib/xmpp4r/jid.rb', line 73 def strip! @resource = nil self end |
#stripped? ⇒ Boolean Also known as: bared?
Test id jid is strepped
162 163 164 |
# File 'lib/xmpp4r/jid.rb', line 162 def stripped? @resource.nil? end |
#to_s ⇒ Object
Returns a string representation of the JID
-
“”
-
“domain”
-
“node@domain”
-
“domain/resource”
-
“node@domain/resource”
55 56 57 58 59 60 |
# File 'lib/xmpp4r/jid.rb', line 55 def to_s s = @domain s = "#{@node}@#{s}" if @node s += "/#{@resource}" if @resource return s end |