Sha256: 9e59fb1d2f6daffc0dc21957c629d584bfa04cc4f9b608d610d39b135736aea0

Contents?: true

Size: 1.34 KB

Versions: 5

Compression:

Stored size: 1.34 KB

Contents

require 'sugar-high/array'

class String
  def self.random_letters count, type = :lower
   letters(type).pick(count)
  end

  def self.letters type = :lower
    letters = ('a'..'z').to_a
    type == :upper ? letters.map!(&:upcase) : letters
  end

  unless new.respond_to? :trim
    def trim
      self.strip
    end
  end

  unless new.respond_to? :concats
    def concats *args
      args.inject(self) do |res, arg| 
        res << arg.to_s
        res
      end
    end
  end

  # remove prefixed '-' signs, then allow any letter, number, underscore '_' or dash '-'
  def alpha_numeric
    self.gsub(/^\-+/, '').gsub(/[^0-9a-zA-Z_\-]+/i, '')
  end

  def insert_before_last str, marker = 'end'
    res = []
    found = false
    marker = case marker
    when Symbol, String
      marker.to_s
    when Hash
      marker[:marker].to_s
    else
      raise ArgumentException, "last argument is the marker and must be a String, Symbol or even Hash with a :marker option pointing to the marker (String or Symbol)"
    end

    marker = Regexp.escape(marker.to_s.reverse)
    nl = Regexp.escape("\n")
    self.reverse.each_line do |x|
      x.gsub! /#{nl}/, ''
      if !found && x =~ /#{marker}/
        replace = "#{str}\n" << x.reverse
        res << replace
        found = true
      else
        res << x.reverse
      end
    end
    res = res.reverse.join("\n")
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
sugar-high-0.6.1 lib/sugar-high/string.rb
sugar-high-0.6.0 lib/sugar-high/string.rb
sugar-high-0.5.5 lib/sugar-high/string.rb
sugar-high-0.5.4 lib/sugar-high/string.rb
sugar-high-0.5.3 lib/sugar-high/string.rb