module Refinements::Strings

Refinements for Strings.

Public Instance Methods

blank?() click to toggle source
# File lib/refinements/strings.rb, line 38
def blank?
  match?(/\A\s*\z/)
end
camelcase() click to toggle source
# File lib/refinements/strings.rb, line 52
def camelcase
  if match?(self.class.delimiters)
    result = join_parts split(%r(\s*\-\s*|\s*\/\s*|\s*\:+\s*)), method: :up, delimiter: "::"
    join_parts result.split(/\s*\_\s*|\s+/), method: :up
  else
    up
  end
end
delimiters() click to toggle source
# File lib/refinements/strings.rb, line 7
def delimiters
  %r([a-z][A-Z]|\s*\-\s*|\s*\/\s*|\s*\:+\s*|\s*\_\s*|\s+)
end
down() click to toggle source
# File lib/refinements/strings.rb, line 47
def down
  return self if empty?
  first.downcase + self[1, size]
end
first(number = 0) click to toggle source
# File lib/refinements/strings.rb, line 14
def first number = 0
  return self if empty?

  max = Integer number

  return self[0] if max.zero?
  return "" if max.negative?

  self[0..(max - 1)]
end
join_parts(parts, method:, delimiter: "") click to toggle source

:reek: DuplicateMethodCall :reek: UtilityFunction

# File lib/refinements/strings.rb, line 83
def join_parts parts, method:, delimiter: ""
  parts.reduce "" do |result, part|
    next part.__send__(method) if result.empty?
    "#{result}#{delimiter}#{part.__send__ method}"
  end
end
last(number = 0) click to toggle source

:reek: TooManyStatements

# File lib/refinements/strings.rb, line 26
def last number = 0
  return self if empty?

  min = Integer number
  max = size - 1

  return self[max] if min.zero?
  return "" if min.negative?

  self[(min + 1)..max]
end
snakecase() click to toggle source
# File lib/refinements/strings.rb, line 61
def snakecase
  if match?(self.class.delimiters)
    result = join_parts split(%r(\s*\-\s*|\s*\/\s*|\s*\:+\s*)), method: :down, delimiter: "/"
    join_parts result.split(/(?=[A-Z])|\s*\_\s*|\s+/), method: :down, delimiter: "_"
  else
    downcase
  end
end
titleize() click to toggle source
# File lib/refinements/strings.rb, line 70
def titleize
  if match?(self.class.delimiters)
    result = join_parts split(/(?=[A-Z])|\s*\_\s*|\s*\-\s*|\s+/), method: :up, delimiter: " "
    join_parts result.split(%r(\s*\/\s*|\s*\:+\s*)), method: :up, delimiter: "/"
  else
    capitalize
  end
end
up() click to toggle source
# File lib/refinements/strings.rb, line 42
def up
  return self if empty?
  first.upcase + self[1, size]
end