Method: SugarCube::Repl.draw_tree
- Defined in:
- lib/cocoa/sugarcube-repl/repl.rb
.draw_tree(item, selector, tab = nil, is_last = true, items_index = 0) ⇒ Object
Draws the tree items
301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 |
# File 'lib/cocoa/sugarcube-repl/repl.rb', line 301 def draw_tree(item, selector, tab=nil, is_last=true, items_index=0) space = ' ' if items_index < 10 print ' ' elsif items_index < 100 print ' ' elsif items_index > 999 # good god, man! space = '' end print items_index.to_s + ":" + space if tab print tab if @sugarcube_collapsed_items && @sugarcube_collapsed_items.include?(item) print '<<< ' else if is_last print '`-- ' tab += ' ' else print '+-- ' tab += '| ' end end else print '. ' tab = '' end if self == item || @sugarcube_view == item print "\033[1m" end print draw_tree_item(item) if self == item || @sugarcube_view == item print "\033[0m" end puts if selector.is_a? Proc items = selector.call(item) else items = item.send(selector) end items ||= [] unless @sugarcube_collapsed_items && @sugarcube_collapsed_items.include?(item) items.each_with_index do |subview, index| items_index += 1 if self.respond_to? :draw_tree items_index = draw_tree(subview, selector, tab, index == items.length - 1, items_index) else items_index = SugarCube::Repl::draw_tree(subview, selector, tab, index == items.length - 1, items_index) end end end return items_index end |