module SugarUtils

@api

Constants

VERSION

Public Class Methods

ensure_boolean(value) click to toggle source

@param value [Object]

@return [Boolean]

# File lib/sugar_utils.rb, line 11
def self.ensure_boolean(value)
  return false if value.respond_to?(:to_s) && value.to_s.casecmp('false').zero?

  value ? true : false
end
ensure_integer(value) click to toggle source

@param value [String, Float, Integer]

@raise [ArgumentError] if the value is a string which cannot be converted @raise [TypeError] if value is type which cannot be converted

@return [Integer]

# File lib/sugar_utils.rb, line 23
def self.ensure_integer(value)
  return value      if value.is_a?(Integer)
  return value.to_i if value.is_a?(Float)

  Float(value).to_i
end
scrub_encoding(data, replacement_character = nil) click to toggle source

@overload scrub_encoding(data)

Scrub the string's encoding, and replace any bad characters with ''.
@param data [String]

@overload scrub_encoding(data, replacement_character)

Scrub the string's encoding, and replace any bad characters with the
specified character.
@param data [String]
@param replacement_character [String]

@return [String]

# File lib/sugar_utils.rb, line 40
def self.scrub_encoding(data, replacement_character = nil)
  replacement_character = '' unless replacement_character.is_a?(String)

  # If the Ruby version being used supports String#scrub, then just use it.
  return data.scrub(replacement_character) if data.respond_to?(:scrub)

  # Otherwise, fall back to String#encode.
  data.encode(
    data.encoding,
    'binary',
    invalid: :replace,
    undef:   :replace, # rubocop:disable Layout/AlignHash
    replace: replacement_character
  )
end