Class: String
- Inherits:
-
Object
- Object
- String
- Defined in:
- lib/loquacious/core_ext/string.rb
Instance Method Summary collapse
-
#gutter ⇒ Object
call-seq: “ | foon | bar”.gutter! #=> “ foon bar”.
-
#gutter! ⇒ Object
call-seq: “ | foon | bar”.gutter! #=> “ foon bar”.
-
#indent(leader) ⇒ Object
call-seq: “foo”.indent( 2 ) #=> “ foo” “foo”.indent( ‘# ’ ) #=> “# foo”.
-
#reduce(width, ellipses = '...') ⇒ Object
call-seq: reduce( width, ellipses = ‘…’ ) #=> string.
Instance Method Details
#gutter ⇒ Object
call-seq:
" | foo\n | bar".gutter! #=> " foo\n bar"
Removes a leading gutter from all lines in the string. The gutter is defined leading whitespace followed by a single pipe character. This method is very useful with heredocs.
70 71 72 |
# File 'lib/loquacious/core_ext/string.rb', line 70 def gutter self.dup.gutter! end |
#gutter! ⇒ Object
call-seq:
" | foo\n | bar".gutter! #=> " foo\n bar"
Removes a leading gutter from all lines in the string. The gutter is defined leading whitespace followed by a single pipe character. This method is very useful with heredocs.
The string will be altered by this method.
58 59 60 61 |
# File 'lib/loquacious/core_ext/string.rb', line 58 def gutter! gsub! %r/^[\t\f\r ]*\|?/, '' self end |
#indent(leader) ⇒ Object
call-seq:
"foo".indent( 2 ) #=> " foo"
"foo".indent( '# ' ) #=> "# foo"
Indent the string by the given number of spaces. Alternately, if a leader string is given it will be used to indent with instead of spaces. Indentation is performed at the beginning of the string and after every newline character.
"foo\nbar".indent( 2 ) #=> " foo\n bar"
41 42 43 44 45 46 47 |
# File 'lib/loquacious/core_ext/string.rb', line 41 def indent( leader ) leader = Numeric === leader ? ' ' * leader.to_i : leader.to_s str = self.gsub("\n", "\n"+leader) str.insert(0, leader) str end |
#reduce(width, ellipses = '...') ⇒ Object
call-seq:
reduce( width, ellipses = '...' ) #=> string
Reduce the size of the current string to the given width by removing characters from the middle of the string and replacing them with ellipses. If the width is greater than the length of the string, the string is returned unchanged. If the width is less than the length of the ellipses, then the ellipses are returned.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/loquacious/core_ext/string.rb', line 13 def reduce( width, ellipses = '...') raise ArgumentError, "width cannot be negative: #{width}" if width < 0 return self if length <= width remove = length - width + ellipses.length return ellipses.dup if remove >= length left_end = (length + 1 - remove) / 2 right_start = left_end + remove left = self[0,left_end] right = self[right_start,length-right_start] left << ellipses << right end |