Sha256: 4451210ed89cf503b7e3fa0a80f92167fbf86de5748dff2e9747e9f33b1e10b3
Contents?: true
Size: 1.09 KB
Versions: 4
Compression:
Stored size: 1.09 KB
Contents
# encoding: UTF-8 module Vines class JID include Comparable PATTERN = /^(?:([^@]*)@)??([^@\/]*)(?:\/(.*?))?$/.freeze attr_reader :node, :domain, :resource attr_writer :resource def self.new(node, domain=nil, resource=nil) node.is_a?(JID) ? node : super end def initialize(node, domain=nil, resource=nil) @node, @domain, @resource = node, domain, resource if @domain.nil? && @resource.nil? @node, @domain, @resource = @node.to_s.scan(PATTERN).first end [@node, @domain].each {|piece| piece.downcase! if piece } [@node, @domain, @resource].each do |piece| raise ArgumentError, 'jid too long' if (piece || '').size > 1023 end end def bare JID.new(@node, @domain) end def bare? @resource.nil? end def <=>(jid) self.to_s <=> jid.to_s end def eql?(jid) jid.is_a?(JID) && self == jid end def hash self.to_s.hash end def to_s s = @domain s = "#{@node}@#{s}" if @node s = "#{s}/#{@resource}" if @resource s end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
vines-0.2.1 | lib/vines/jid.rb |
vines-0.2.0 | lib/vines/jid.rb |
vines-0.1.1 | lib/vines/jid.rb |
vines-0.1.0 | lib/vines/jid.rb |