Class: Unparser::Buffer

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

Overview

Buffer used to emit into

Constant Summary collapse

NL =
"\n".freeze

Instance Method Summary collapse

Constructor Details

#initializeundefined

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Initialize object



14
15
16
17
# File 'lib/unparser/buffer.rb', line 14

def initialize
  @content = ''
  @indent = 0
end

Instance Method Details

#append(string) ⇒ self

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Append string

Parameters:

  • string (String)

Returns:

  • (self)


27
28
29
30
31
32
33
# File 'lib/unparser/buffer.rb', line 27

def append(string)
  if @content[-1] == NL
    prefix
  end
  @content << string
  self
end

#append_without_prefix(string) ⇒ self

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Append a string without an indentation prefix

Parameters:

  • string (String)

Returns:

  • (self)


43
44
45
46
# File 'lib/unparser/buffer.rb', line 43

def append_without_prefix(string)
  @content << string
  self
end

#capture_contentString

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Capture the content written to the buffer within the block

Returns:

  • (String)


111
112
113
114
115
# File 'lib/unparser/buffer.rb', line 111

def capture_content
  size_before = @content.size
  yield
  @content[size_before..-1]
end

#contentString

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return content of buffer

Returns:

  • (String)


101
102
103
# File 'lib/unparser/buffer.rb', line 101

def content
  @content.dup.freeze
end

#fresh_line?true, false

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Test for a fresh line

Returns:

  • (true)

    if the buffer content ends with a fresh line

  • (false)

    otherwise



91
92
93
# File 'lib/unparser/buffer.rb', line 91

def fresh_line?
  @content.empty? || @content[-1] == NL
end

#indentself

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Increase indent

Returns:

  • (self)


54
55
56
57
# File 'lib/unparser/buffer.rb', line 54

def indent
  @indent += 1
  self
end

#nlself

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Write newline

Returns:

  • (self)


76
77
78
79
# File 'lib/unparser/buffer.rb', line 76

def nl
  @content << NL
  self
end

#unindentself

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Decrease indent

Returns:

  • (self)


65
66
67
68
# File 'lib/unparser/buffer.rb', line 65

def unindent
  @indent -= 1
  self
end