lib/core/facets/string/indent.rb in facets-2.8.4 vs lib/core/facets/string/indent.rb in facets-2.9.0.pre.1
- old
+ new
@@ -11,15 +11,57 @@
else
gsub(/^#{Regexp.escape(c)}{0,#{-n}}/, "")
end
end
- # Outdent just indents a negative number of spaces.
+ # Equivalent to String#indent, but modifies the receiver in place.
+
+ def indent!(n, c=' ')
+ replace(indent(n,c))
+ end
+
+ # Remove excessive indentation. Useful for multi-line strings embeded in
+ # already indented code.
#
- # CREDIT: Noah Gibbs
+ # <<-END.unindent
+ # ohaie
+ # wurld
+ # END
+ #
+ # Outputs ...
+ #
+ # ohaie
+ # wurld
+ #
+ # Instead of ...
+ #
+ # ohaie
+ # wurld
+ #
+ # CREDIT: Noah Gibbs, mynyml
- def outdent(n)
- indent(-n)
+ def unindent(size=nil)
+ if size
+ indent(-size)
+ else
+ char = ' '
+ self.scan(/^[\ \t]*\S/) do |m|
+ if size.nil? || m.size < size
+ size = m.size
+ char = m[0...-1]
+ end
+ end
+ size -= 1
+ indent(-size, char)
+ end
+ end
+
+ # Equivalent to String#unindent, but modifies the receiver in place.
+ #
+ # CREDIT: mynyml
+
+ def unindent!
+ self.replace(self.unindent)
end
end