lib/sugar-high/string.rb in sugar-high-0.5.0 vs lib/sugar-high/string.rb in sugar-high-0.5.1
- old
+ new
@@ -1,49 +1,57 @@
class String
- def trim
- self.strip
+ def self.random_letters count, type = :lower
+ letters(type).pick(count)
end
-
- def concat *args
- args.inject(self) do |res, arg|
- res << arg.to_s
- res
+
+ def self.letters type = :lower
+ letters = ('a'..'z').to_a
+ type == :upper ? letters.map!(&:upcase) : letters
+ end
+
+ unless respond_to? :trim
+ def trim
+ self.strip
end
end
+
+ unless respond_to? :concat
+ def concat *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
-
+ 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}/, ''
+ x.gsub! /#{nl}/, ''
if !found && x =~ /#{marker}/
replace = "#{str}\n" << x.reverse
res << replace
found = true
else
res << x.reverse
end
- end
+ end
res = res.reverse.join("\n")
end
-end
\ No newline at end of file
+end