Sha256: 4a66e80988dd449b9bba5e13c34b5ea78d3a2c5c6b3153dd041661e9f11722c2

Contents?: true

Size: 1.46 KB

Versions: 9

Compression:

Stored size: 1.46 KB

Contents

String.class_eval do
  def dirname
    File.expand_path(File.dirname(self))
  end
  
  def parent_dirname
    File.expand_path(File.dirname(self) + "/..")
  end
  
  def expand_path
    File.expand_path(self)
  end
  
  def to_reader
    self.to_sym
  end
  
  def to_writer
    "#{self}=".to_sym
  end
  
  def to_iv
    "@#{self}"
  end
  
  def to_a
    [self]
  end
  
  def interpolate binding
    binding.must_be.a Binding
    return gsub(/\#\{.+?\}/) do |term|
      identifier = term.slice(2 .. term.size-2)
      binding.eval identifier
    end
  end
  
  def self.secure_token
    original = [Time.now, (1..10).map{ rand.to_s }]
    Digest::SHA1.hexdigest(original.flatten.join('--'))
  end
  
  def underscore
    word = self.dup
    word.gsub!(/::/, '/')
    word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
    word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
    word.tr!("-", "_")
    word.downcase!
    word
  end
  
  def camelize first_letter_in_uppercase = true
    if first_letter_in_uppercase
      gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
    else
      self[0].chr.downcase + camelize(lower_case_and_underscored_word)[1..-1]
    end
  end
  
  def constantize
    names = self.split('::')
    names.shift if names.empty? || names.first.empty?

    constant = Object
    names.each do |name|
      constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
    end
    constant
  end
  
  alias_method :blank?, :empty?
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
ruby_ext-0.4.21 lib/ruby_ext/core/string.rb
ruby_ext-0.4.20 lib/ruby_ext/core/string.rb
ruby_ext-0.4.19 lib/ruby_ext/core/string.rb
ruby_ext-0.4.18 lib/ruby_ext/core/string.rb
ruby_ext-0.4.17 lib/ruby_ext/core/string.rb
ruby_ext-0.4.16 lib/ruby_ext/core/string.rb
ruby_ext-0.4.15 lib/ruby_ext/core/string.rb
ruby_ext-0.4.14 lib/ruby_ext/core/string.rb
ruby_ext-0.4.13 lib/ruby_ext/core/string.rb