Class: Array
Overview
String Formatting
Direct Known Subclasses
Constant Summary collapse
- SingleLength =
50
Instance Method Summary collapse
- #align(ellipsis_limit = nil) ⇒ Object
- #common_affix ⇒ Object
- #common_prefix ⇒ Object
- #inspect ⇒ Object
Instance Method Details
#align(ellipsis_limit = nil) ⇒ Object
245 246 247 248 249 250 251 252 |
# File 'lib/pretty_debug.rb', line 245 def align ellipsis_limit = nil transpose.map do |col| just = case col.first; when Numeric then :rjust; else :ljust end width = col.map{|cell| cell.to_s.length}.max max = ellipsis_limit || width col.map{|cell| cell.to_s.ellipsis(max).__send__(just, width > max ? max : width)} end.transpose end |
#common_affix ⇒ Object
262 263 264 265 266 267 268 |
# File 'lib/pretty_debug.rb', line 262 def common_affix each{|e| class_check(e, String){"All elements must be a String".freeze}} first, *others = self i = - 1 loop{break unless first[i] and others.all?{|s| first[i] == s[i]}; i -= 1} first[i + 1, -(i + 1)] end |
#common_prefix ⇒ Object
253 254 255 256 257 258 259 260 261 |
# File 'lib/pretty_debug.rb', line 253 def common_prefix each{|e| class_check(e, String){"All elements must be a String".freeze}} first, *others = self i = 0 loop{break unless first[i] and others.all?{|s| first[i] == s[i]}; i += 1} first[0, i] # This is more elegant, but cannot be generalized to `common_affix`. ## first[0, (0...first.length).find{|i| first[i].! or others.any?{|s| first[i] != s[i]}}.to_i] end |
#inspect ⇒ Object
195 196 197 198 199 |
# File 'lib/pretty_debug.rb', line 195 def inspect s = map(&:inspect) length < 2 || s.map(&:length).inject(:+) < SingleLength ? "[#{s.join(", ".freeze)}]" : "[#$/#{s.join(",#$/".freeze).indent}#$/]" end |