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



16
17
18
19
# File 'lib/unparser/buffer.rb', line 16

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)


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

def append(string)
  if @content[-1].eql?(NL)
    prefix
  end
  write(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)


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

def append_without_prefix(string)
  write(string)
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)


104
105
106
# File 'lib/unparser/buffer.rb', line 104

def content
  @content.dup.freeze
end

#fresh_line?Boolean

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:

  • (Boolean)


94
95
96
# File 'lib/unparser/buffer.rb', line 94

def fresh_line?
  @content.empty? || @content[-1].eql?(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)


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

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)


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

def nl
  write(NL)
end

#root_indentObject



81
82
83
84
85
86
# File 'lib/unparser/buffer.rb', line 81

def root_indent
  before = @indent
  @indent = 0
  yield
  @indent = before
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)


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

def unindent
  @indent -= 1
  self
end

#write(fragment) ⇒ self

Write raw fragment to buffer

Does not do indentation logic.

Parameters:

  • fragment (String)

Returns:

  • (self)


115
116
117
118
# File 'lib/unparser/buffer.rb', line 115

def write(fragment)
  @content << fragment
  self
end