class String
Public Class Methods
try_convert(x)
click to toggle source
# File lib/backports/1.9.1/string/try_convert.rb, line 4 def String.try_convert(x) Backports.try_convert(x, String, :to_str) end
Public Instance Methods
+@()
click to toggle source
# File lib/backports/2.3.0/string/uplus.rb, line 3 def +@ frozen? ? dup : self end
-@()
click to toggle source
# File lib/backports/2.3.0/string/uminus.rb, line 3 def -@ frozen? ? self : dup.freeze end
ascii_only?()
click to toggle source
# File lib/backports/1.9.1/string/ascii_only.rb, line 3 def ascii_only? !(self =~ /[^\x00-\x7f]/) end
byteslice(start, len = Backports::Undefined)
click to toggle source
# File lib/backports/1.9.3/string/byteslice.rb, line 5 def byteslice(start, len = Backports::Undefined) # Argument parsing & checking if Backports::Undefined == len if start.is_a?(Range) range = start start = Backports.coerce_to_int(range.begin) start += bytesize if start < 0 last = Backports.coerce_to_int(range.end) last += bytesize if last < 0 last += 1 unless range.exclude_end? len = last - start else start = Backports.coerce_to_int(start) start += bytesize if start < 0 len = 1 return if start >= bytesize end else start = Backports.coerce_to_int(start) start += bytesize if start < 0 len = Backports.coerce_to_int(len) return if len < 0 end return if start < 0 || start > bytesize len = 0 if len < 0 # Actual implementation: str = unpack("@#{start}a#{len}").first str = dup.replace(str) unless self.instance_of?(String) # Must return subclass str.force_encoding(encoding) if respond_to?(:encoding) str end
camelize(first_letter = :upper)
click to toggle source
Standard in rails. See official documentation
# File lib/backports/rails/string.rb, line 3 def camelize(first_letter = :upper) if first_letter == :upper gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase } else self[0..0].downcase + camelize[1..-1] end end
chr()
click to toggle source
# File lib/backports/1.9.1/string/chr.rb, line 3 def chr chars.first || "" end
clear()
click to toggle source
# File lib/backports/1.9.1/string/clear.rb, line 3 def clear self[0,length] = "" self end
codepoints() { |cp| ... }
click to toggle source
# File lib/backports/1.9.1/string/codepoints.rb, line 3 def codepoints return to_enum(:codepoints) unless block_given? unpack("U*").each{|cp| yield cp} end
constantize()
click to toggle source
Standard in rails. See official documentation
# File lib/backports/rails/string.rb, line 12 def constantize names = split('::') names.shift if names.empty? || names.first.empty? constant = Object names.each do |name| constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name) end constant end
dasherize()
click to toggle source
Standard in rails. See official documentation
# File lib/backports/rails/string.rb, line 24 def dasherize gsub(/_/, '-') end
delete_prefix(prefix)
click to toggle source
# File lib/backports/2.5.0/string/delete_prefix.rb, line 5 def delete_prefix(prefix) prefix = Backports.coerce_to_str(prefix) if rindex(prefix, 0) self[prefix.length..-1] else dup end end
delete_prefix!(prefix)
click to toggle source
# File lib/backports/2.5.0/string/delete_prefix.rb, line 20 def delete_prefix!(prefix) prefix = Backports.coerce_to_str(prefix) chomp! if frozen? len = prefix.length if len > 0 && rindex(prefix, 0) self[0...prefix.length] = '' self else nil end end
delete_suffix(suffix)
click to toggle source
# File lib/backports/2.5.0/string/delete_suffix.rb, line 5 def delete_suffix(suffix) suffix = Backports.coerce_to_str(suffix) len = suffix.length if len > 0 && index(suffix, -len) self[0...-len] else dup end end
delete_suffix!(suffix)
click to toggle source
# File lib/backports/2.5.0/string/delete_suffix.rb, line 21 def delete_suffix!(suffix) suffix = Backports.coerce_to_str(suffix) chomp! if frozen? len = suffix.length if len > 0 && index(suffix, -len) self[-len..-1] = '' self else nil end end
demodulize()
click to toggle source
Standard in rails. See official documentation
# File lib/backports/rails/string.rb, line 29 def demodulize gsub(/^.*::/, '') end
each_char() { |c| ... }
click to toggle source
# File lib/backports/1.8.7/string/each_char.rb, line 6 def each_char return to_enum(:each_char) unless block_given? scan(/./m) {|c| yield c} end
end_with?(*suffixes)
click to toggle source
# File lib/backports/1.8.7/string/end_with.rb, line 3 def end_with?(*suffixes) suffixes.any? do |suffix| if suffix.respond_to? :to_str suffix = suffix.to_str self[-suffix.length, suffix.length] == suffix end end end
length()
click to toggle source
# File lib/backports/force/string_length.rb, line 5 def length unpack("U*").length end
match?(*args)
click to toggle source
# File lib/backports/2.4.0/string/match.rb, line 3 def match?(*args) !match(*args).nil? end
ord()
click to toggle source
# File lib/backports/1.9.1/string/ord.rb, line 3 def ord codepoints.first or raise ArgumentError, "empty string" end
partition_with_new_meaning(pattern = Backports::Undefined) { |c| ... }
click to toggle source
# File lib/backports/1.8.7/string/partition.rb, line 6 def partition_with_new_meaning(pattern = Backports::Undefined) return partition_without_new_meaning{|c| yield c} if pattern == Backports::Undefined pattern = Backports.coerce_to(pattern, String, :to_str) unless pattern.is_a? Regexp i = index(pattern) return [self, "", ""] unless i if pattern.is_a? Regexp match = Regexp.last_match [match.pre_match, match[0], match.post_match] else last = i+pattern.length [self[0...i], self[i...last], self[last...length]] end end
prepend(other_str)
click to toggle source
# File lib/backports/1.9.3/string/prepend.rb, line 5 def prepend(other_str) replace Backports.coerce_to_str(other_str) + self self end
rpartition(pattern)
click to toggle source
# File lib/backports/1.8.7/string/rpartition.rb, line 5 def rpartition(pattern) pattern = Backports.coerce_to(pattern, String, :to_str) unless pattern.is_a? Regexp i = rindex(pattern) return ["", "", self] unless i if pattern.is_a? Regexp match = Regexp.last_match [match.pre_match, match[0], match.post_match] else last = i+pattern.length [self[0...i], self[i...last], self[last...length]] end end
start_with?(*prefixes)
click to toggle source
# File lib/backports/1.8.7/string/start_with.rb, line 3 def start_with?(*prefixes) prefixes.any? do |prefix| if prefix.respond_to? :to_str prefix = prefix.to_str self[0, prefix.length] == prefix end end end
underscore()
click to toggle source
Standard in rails. See official documentation
# File lib/backports/rails/string.rb, line 34 def underscore gsub(/::/, '/'). gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). gsub(/([a-z\d])([A-Z])/,'\1_\2'). tr("-", "_"). downcase end
unicode_normalize(form = :nfc)
click to toggle source
# File lib/backports/2.2.0/string/unicode_normalize.rb, line 6 def unicode_normalize(form = :nfc) require 'backports/tools/normalize.rb' unless defined? UnicodeNormalize ## The following line can be uncommented to avoid repeated checking for ## UnicodeNormalize. However, tests didn't show any noticeable speedup ## when doing this. This comment also applies to the commented out lines ## in String#unicode_normalize! and String#unicode_normalized?. # String.send(:define_method, :unicode_normalize, ->(form = :nfc) { UnicodeNormalize.normalize(self, form) } ) UnicodeNormalize.normalize(self, form) end
unicode_normalize!(form = :nfc)
click to toggle source
# File lib/backports/2.2.0/string/unicode_normalize.rb, line 16 def unicode_normalize!(form = :nfc) require 'backports/tools/normalize.rb' unless defined? UnicodeNormalize # String.send(:define_method, :unicode_normalize!, ->(form = :nfc) { replace(unicode_normalize(form)) } ) replace(unicode_normalize(form)) end
unicode_normalized?(form = :nfc)
click to toggle source
# File lib/backports/2.2.0/string/unicode_normalize.rb, line 22 def unicode_normalized?(form = :nfc) require 'backports/tools/normalize.rb' unless defined? UnicodeNormalize # String.send(:define_method, :unicode_normalized?, ->(form = :nfc) { UnicodeNormalize.normalized?(self, form) } ) UnicodeNormalize.normalized?(self, form) end
upto_with_exclusive(to, excl=false) { |s| ... }
click to toggle source
# File lib/backports/1.8.7/string/upto.rb, line 6 def upto_with_exclusive(to, excl=false) return upto_without_exclusive(to){|s| yield s} if block_given? && !excl r = Range.new(self, to, excl) return r.to_enum unless block_given? r.each{|s| yield s} self end