Class: PrettyPrint::Breakable

Inherits:
Object
  • Object
show all
Defined in:
lib/prettyprint.rb

Overview

The Breakable class is used for breaking up object information

This class is intended for internal use of the PrettyPrint buffers.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sep, width, q) ⇒ Breakable

Create a new Breakable object.

Arguments:

  • sep String of the separator

  • width Fixnum width of the sep

  • q parent PrettyPrint object, to base from



343
344
345
346
347
348
349
350
# File 'lib/prettyprint.rb', line 343

def initialize(sep, width, q)
  @obj = sep
  @width = width
  @pp = q
  @indent = q.indent
  @group = q.current_group
  @group.breakables.push self
end

Instance Attribute Details

#indentObject (readonly)

The number of spaces to indent.

This is inferred from q within PrettyPrint, passed in ::new



363
364
365
# File 'lib/prettyprint.rb', line 363

def indent
  @indent
end

#objObject (readonly)

Holds the separator String

The sep argument from ::new



355
356
357
# File 'lib/prettyprint.rb', line 355

def obj
  @obj
end

#widthObject (readonly)

The width of obj / sep



358
359
360
# File 'lib/prettyprint.rb', line 358

def width
  @width
end

Instance Method Details

#output(out, output_width) ⇒ Object

Render the String text of the objects that have been added to this Breakable object.

Output the text to out, and increment the width to output_width



369
370
371
372
373
374
375
376
377
378
379
380
# File 'lib/prettyprint.rb', line 369

def output(out, output_width)
  @group.breakables.shift
  if @group.break?
    out << @pp.newline
    out << @pp.genspace.call(@indent)
    @indent
  else
    @pp.group_queue.delete @group if @group.breakables.empty?
    out << @obj
    output_width + @width
  end
end