Sha256: 4fda7367a23cf65ff6fdbde04f5ab18c3fe3fb0f4569b6a46d6bdd9e07a4bf0d

Contents?: true

Size: 1019 Bytes

Versions: 4

Compression:

Stored size: 1019 Bytes

Contents

class String

  Alpha26 = ("a".."z").to_a

  def to_i26
    result = 0
    downcase!
    (1..length).each do |i|
      char = self[-i]
      result += 26**(i-1) * (Alpha26.index(char) + 1)
    end
    result
  end

  def clean_whitespace
    return strip.gsub(/\s{2,}/, ' ')
  end

  def unindent
    gsub(/^#{self[/\A\s*/]}/, '')
  end

  # Convert string to boolean.
  def to_bool
    return true  if self[/\A(true)|(1)|(y(es)?)\z/i]
    return false if self[/\A(false)|(0)|(no?)|(nil)\z/i] || self == ""
    raise(ArgumentError.new "could not interpret '#{self}' as boolean.")
  end

  # convert an URI query string into a symbol hash, does not support array query records (yet)
  def to_query_hash
    raise ArgumentError.new("Looks like unsupported array query is used, sorry!") if self.to_s[/\[\]\=/].present?

    query_hash = split("&").reduce({}) do |mem, i|
      key = i.split("=").first
      value = i.split("=").second

      mem[key.to_s] = value.to_s
      mem
    end

    return query_hash
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
creative_rails_utilities-0.4.8 lib/creative_rails_utilities/string.rb
creative_rails_utilities-0.4.7 lib/creative_rails_utilities/string.rb
creative_rails_utilities-0.4.6 lib/creative_rails_utilities/string.rb
creative_rails_utilities-0.4.5 lib/creative_rails_utilities/string.rb