module Lazier::String

Extensions for the `String` class.

Public Instance Methods

ensure_url_with_scheme(protocol = "http", secure: false) click to toggle source

Makes sure the string starts with the scheme for the specified protocol.

@param protocol [String] The protocol for the URL. @param secure [Boolean] If the scheme should be secure or not.

# File lib/lazier/string.rb, line 24
def ensure_url_with_scheme(protocol = "http", secure: false)
  schema = protocol + (secure ? "s" : "")
  self !~ /^(#{protocol}(s?):\/\/)/ ? "#{schema}://#{self}" : self
end
ensure_valid_utf8(replacement = "") click to toggle source

Makes sure the string only contains valid UTF-8 sequences.

@param replacement [String] The string to use to replace invalid sequences. @return [String] The string with any invalid UTF-8 sequences replaced.

# File lib/lazier/string.rb, line 15
def ensure_valid_utf8(replacement = "")
  # This odd line is because if need to specify a different encoding (without losing infos) to replace invalid bytes and then we go back to utf-8
  encode("utf-16", invalid: :replace, undef: :replace, replace: replacement).encode("utf-8")
end
remove_accents() click to toggle source

Removes accents from the string, normalizing to the normal letter.

“`ruby “èòàù”.remove_accents # => “eoau” “`

@return The string with all accents removed.

# File lib/lazier/string.rb, line 60
def remove_accents
  ::I18n.transliterate(self)
end
tokenize(no_blanks: true, strip: true, no_duplicates: false, pattern: /\s*,\s*/, presence_method: :present?) click to toggle source

Splits a string containing tokens using a specified pattern and applying some sanitizations.

@param no_blanks [Boolean] If filter out blank tokens. @param strip [Boolean] If strip single tokens. @param no_duplicates [Boolean] If return uniques elements. @param pattern [String|Regexp] The pattern to use. @param presence_method [Symbol] The method to use to check if a token is present or not. @return [Array] An array of tokens.

# File lib/lazier/string.rb, line 44
def tokenize(no_blanks: true, strip: true, no_duplicates: false, pattern: /\s*,\s*/, presence_method: :present?)
  rv = split(pattern)
  rv.map!(&:strip) if strip
  rv.select!(&presence_method) if no_blanks
  rv.uniq! if no_duplicates
  rv
end
value() click to toggle source

Returns the string itself for use in form helpers.

@return [String] The string itself.

# File lib/lazier/string.rb, line 32
def value
  self
end