class String

Public Instance Methods

camelize(first_letter_in_uppercase = true) click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 4
def camelize(first_letter_in_uppercase = true)
  if first_letter_in_uppercase != :lower
    to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
  else
    to_s[0].chr.downcase + camelize(self)[1..-1]
  end
end
camelize!(first_letter_in_uppercase = true) click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 14
def camelize!(first_letter_in_uppercase = true)
  replace(camelize(first_letter_in_uppercase))
end
domain(options={}) click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 79
def domain(options={})
  url = dup
  url =~ (/^(?:\w+:\/\/)?([^\/?]+)(?:\/|\?|$)/) ? $1 : url
end
downcase?() click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 84
def downcase?
  downcase == self
end
ellipsize(options={}) click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 88
def ellipsize(options={})
   length    = options[:length]    || 30
   separator = options[:separator] || '...'
   return self if size <= length
   offset    = options[:offset]    || 4
   self[0,offset] + separator + self[-offset,offset]
end
ends_with?(suffix) click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 20
def ends_with?(suffix)
  suffix = suffix.to_s
  self[-suffix.length, suffix.length] == suffix
end
gnix(string) click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 96
def gnix(string)
  gsub(string, "")
end
gnix!(string) click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 100
def gnix!(string)
  gsub!(string, "")
end
humanize(options = {}) click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 27
def humanize(options = {})
  underscore.
  gsub(/_id$/, "").
  tr('_', ' ').
  gsub(/([a-z\d]*)/i) { |match| match.downcase }.
  gsub(/^\w/) { |match| match.upcase } if options.fetch(:capitalize, true)
end
humanize!(options = {}) click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 37
def humanize!(options = {})
  replace(humanize)
end
mixedcase?() click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 104
def mixedcase?
  !upcase? && !downcase?
end
nix(string) click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 108
def nix(string)
  sub(string, "")
end
nix!(string) click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 112
def nix!(string)
  sub!(string, "")
end
pollute(delimiter="^--^--^") click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 116
def pollute(delimiter="^--^--^")
  split('').map{ |letter| "#{letter}#{delimiter}" }.join
end
slugify() click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 120
def slugify
  gsub(/[^\x00-\x7F]+/, '').    # Remove anything non-ASCII entirely (e.g. diacritics).
  gsub(/[^\w_ \-]+/i,   '').    # Remove unwanted chars.
  gsub(/[ \-]+/i,      '-').    # No more than one of the separator in a row.
  gsub(/^\-|\-$/i,      '').    # Remove leading/trailing separator.
  downcase
end
slugify!() click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 128
def slugify!
  replace(slugify)
end
squish() click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 132
def squish
  strip.gsub(/\s+/, ' ')
end
squish!() click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 136
def squish!
  replace(squish)
end
starts_with?(prefix) click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 57
def starts_with?(prefix)
  prefix = prefix.to_s
  self[0, prefix.length] == prefix
end
strip_tags() click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 140
def strip_tags
  gsub(/<\/?[^>]*>/, "")
end
strip_tags!() click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 144
def strip_tags!
  replace(strip_tags)
end
strip_whitespace() click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 148
def strip_whitespace
  gnix("\t").split(" ").remove_blanks.join(" ")
end
strip_whitespace!() click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 152
def strip_whitespace!
  replace(strip_whitespace)
end
titleize() click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 43
def titleize
  underscore.
  humanize.
  gsub(/\b(?<!['’`])[a-z]/) { $&.capitalize }
end
titleize!() click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 51
def titleize!
  replace(titleize)
end
truncate_preserving_words(options={}) click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 156
def truncate_preserving_words(options={})
  separator = options[:separator] || '...'
  max_words = options[:max_words] || nil
  if max_words
    words = split
    return self if words.size < max_words
    words = words[0..(max_words-1)]
    words << separator
    words.join(" ")
  else
    max_chars = options[:max_chars] || 30
    return self if size < max_chars
    out = self[0..(max_chars-1)].split(" ")
    out.pop
    out << separator
    out.join(" ")
  end
end
underscore() click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 64
def underscore
  gsub(/::/, '/').
  gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
  gsub(/([a-z\d])([A-Z])/,'\1_\2').
  tr("-", "_").
  downcase
end
underscore!() click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 74
def underscore!
  replace(underscore)
end
unpollute(delimiter="^--^--^") click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 175
def unpollute(delimiter="^--^--^")
  gsub(delimiter, "")
end
upcase?() click to toggle source
# File lib/nobiru/extensions/string_extension.rb, line 179
def upcase?
  upcase == self
end