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 Integer width of the sep

  • q parent PrettyPrint object, to base from



347
348
349
350
351
352
353
354
# File 'lib/prettyprint.rb', line 347

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



367
368
369
# File 'lib/prettyprint.rb', line 367

def indent
  @indent
end

#objObject (readonly)

Holds the separator String

The sep argument from ::new



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

def obj
  @obj
end

#widthObject (readonly)

The width of obj / sep



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

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



373
374
375
376
377
378
379
380
381
382
383
384
# File 'lib/prettyprint.rb', line 373

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