72 lines
1.2 KiB
Ruby
Vendored
72 lines
1.2 KiB
Ruby
Vendored
class Symbol
|
|
include Comparable
|
|
|
|
alias intern to_sym
|
|
|
|
##
|
|
# call-seq:
|
|
# sym.capitalize -> symbol
|
|
#
|
|
# Same as `sym.to_s.capitalize.intern`.
|
|
|
|
def capitalize
|
|
(self.to_s.capitalize! || self).to_sym
|
|
end
|
|
|
|
##
|
|
# call-seq:
|
|
# sym.downcase -> symbol
|
|
#
|
|
# Same as `sym.to_s.downcase.intern`.
|
|
|
|
def downcase
|
|
(self.to_s.downcase! || self).to_sym
|
|
end
|
|
|
|
##
|
|
# call-seq:
|
|
# sym.upcase -> symbol
|
|
#
|
|
# Same as `sym.to_s.upcase.intern`.
|
|
|
|
def upcase
|
|
(self.to_s.upcase! || self).to_sym
|
|
end
|
|
|
|
##
|
|
# call-seq:
|
|
# sym.casecmp(other) -> -1, 0, +1 or nil
|
|
#
|
|
# Case-insensitive version of `Symbol#<=>`.
|
|
|
|
def casecmp(other)
|
|
return nil unless other.kind_of?(Symbol)
|
|
lhs = self.to_s; lhs.upcase!
|
|
rhs = other.to_s.upcase
|
|
lhs <=> rhs
|
|
end
|
|
|
|
##
|
|
# call-seq:
|
|
# sym.casecmp?(other) -> true, false, or nil
|
|
#
|
|
# Returns true if sym and other_sym are equal after case folding,
|
|
# false if they are not equal, and nil if other_sym is not a string.
|
|
|
|
def casecmp?(sym)
|
|
c = self.casecmp(sym)
|
|
return nil if c.nil?
|
|
return c == 0
|
|
end
|
|
|
|
#
|
|
# call-seq:
|
|
# sym.empty? -> true or false
|
|
#
|
|
# Returns that _sym_ is :"" or not.
|
|
|
|
def empty?
|
|
self.length == 0
|
|
end
|
|
|
|
end
|