class String
Public Instance Methods
find_least_indentation(options = {:ignore_blank_lines => true, :ignore_empty_lines => true})
click to toggle source
Split across newlines and return the fewest number of indentation characters found on each line
# File lib/indentation/string_mod.rb, line 25 def find_least_indentation(options = {:ignore_blank_lines => true, :ignore_empty_lines => true}) # Cannot ignore empty lines unless we're also ignoring blank lines options[:ignore_blank_lines] = options[:ignore_empty_lines] ? true : options[:ignore_blank_lines] empty? ? 0 : split("\n", -1).reject{|line| if options[:ignore_empty_lines] line.strip.empty? elsif options[:ignore_blank_lines] line.empty? else false end }.collect{|substr| substr.match(/^[ \t]*/).to_s.length}.min end
indent(num = nil, i_char = ' ')
click to toggle source
Return an indented copy of this string Arguments:
-
num - How many of the specified indentation to use.
Default for spaces is 2. Default for other is 1. If set to a negative value, removes that many of the specified indentation character, tabs, or spaces from the beginning of the string
-
i_char - Character (or string) to use for indentation
# File lib/indentation/string_mod.rb, line 9 def indent(num = nil, i_char = ' ') _indent(num, i_char) end
indent!(num = nil, i_char = ' ')
click to toggle source
Indents this string Arguments:
-
num - How many of the specified indentation to use.
Default for spaces is 2. Default for other is 1. If set to a negative value, removes that many of the specified indentation character, tabs, or spaces from the beginning of the string
-
i_char - Character (or string) to use for indentation
# File lib/indentation/string_mod.rb, line 20 def indent!(num = nil, i_char = ' ') replace(_indent(num, i_char)) end
reset_indentation(modifier = 0)
click to toggle source
Find the least indentation of all lines within this string and remove that amount (if any) Can pass an optional modifier that changes the indentation amount removed
# File lib/indentation/string_mod.rb, line 41 def reset_indentation(modifier = 0) indent(-find_least_indentation + modifier) end
reset_indentation!(modifier = 0)
click to toggle source
Replaces the current string with one that has had its indentation reset Can pass an optional modifier that changes the indentation amount removed
# File lib/indentation/string_mod.rb, line 47 def reset_indentation!(modifier = 0) indent!(-find_least_indentation + modifier) end
Private Instance Methods
_indent(num = nil, i_char = ' ')
click to toggle source
# File lib/indentation/string_mod.rb, line 52 def _indent(num = nil, i_char = ' ') # Define number of indentations to use number = num # Default number to 2 if spaces or 1 if other number ||= (i_char == ' ') ? 2 : 1 case when number >= 0 split("\n", -1).collect{|line| (i_char * number) + line}.join("\n") else i_regexp = Regexp.new("^([ \t]|#{i_char})") split("\n", -1).collect do |line| ret_str = String.new(line) number.abs.times do match = ret_str.sub!(i_regexp, '') break unless match end ret_str end.join("\n") end end