/usr/lib/ruby/vendor_ruby/indentation/array_mod.rb is in ruby-indentation 0.1.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | class Array
# Appends a given separator(s) to all but the last element in an array of Strings
# or if performed on an array of arrays, appends the separator element to the end of each array except the last
def append_separator(*separators)
len = self.length
ret_array = Array.new
self.each_with_index do |element, i|
new_element = element.dup
unless i == len - 1
separators.each do |separator|
new_element << separator
end
end
ret_array << new_element
end
ret_array
end
# Append the given separator(s) to the current array
def append_separator!(*separators)
len = self.length
self.each_with_index do |element, i|
unless i == len - 1
separators.each do |separator|
element << separator
end
end
end
end
# Return an indented array of strings (or an array of other arrays containing strings)
# 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
def indent(num = nil, i_char = ' ')
self.collect do |array_element|
array_element.indent(num, i_char)
end
end
# Apply indentation to this array
# 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
def indent!(num = nil, i_char = ' ')
self.collect! do |array_element|
array_element.indent!(num, i_char)
end
end
# Get the least indentation of all elements
def find_least_indentation(options = {:ignore_blank_lines => true, :ignore_empty_lines => true})
self.collect{|array_element| array_element.find_least_indentation }.min
end
# Find the least indentation of all elements and remove that amount (if any)
# Can pass an optional modifier that changes the indentation amount removed
def reset_indentation(modifier = 0)
indent(-find_least_indentation + modifier)
end
# Replaces the current array with one that has its indentation reset
# Can pass an optional modifier that changes the indentation amount removed
def reset_indentation!(modifier = 0)
indent!(-find_least_indentation + modifier)
end
# Join an array of strings using English list punctuation.
def english_join(conjunction = 'and', separator = ', ', oxford_comma = true)
len = self.length
return '' if len == 0
return self[0].to_s if len == 1
return "#{self[0].to_s} #{conjunction} #{self[1].to_s}" if len == 2
join_str = ''
self.each_with_index{|ele, i|
str = if !oxford_comma && i == len - 2
"#{ele} #{conjunction} "
elsif i == len - 2
"#{ele}#{separator}#{conjunction} "
elsif i == len - 1
"#{ele}"
else
"#{ele}#{separator}"
end
join_str << str
}
join_str
end
end
|