Sha256: 1b850e149d374e6ac967733c0080496e1f4cef2f468963f688f8e020b2c6b18c

Contents?: true

Size: 857 Bytes

Versions: 5

Compression:

Stored size: 857 Bytes

Contents

class String
  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")
    # puts self
    # puts "marker: #{marker}"
    # puts "nl: #{nl}"    
    # puts "str: #{str}"    
  
    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.4.0 lib/sugar-high/string.rb
sugar-high-0.3.7 lib/sugar-high/string.rb
sugar-high-0.3.6 lib/sugar-high/string.rb
sugar-high-0.3.5 lib/sugar-high/string.rb
sugar-high-0.3.4 lib/sugar-high/string.rb