essential_code_buffer 2.0.1  essential_code_buffer: ^2.0.1 copied to clipboard
essential_code_buffer: ^2.0.1 copied to clipboard
An advanced StringBuffer geared toward generating code, and source maps.
code_buffer #
An advanced StringBuffer geared toward generating code, and source maps.
Installation #
In your pubspec.yaml:
dependencies:
  code_buffer: ^1.0.0
Usage #
Use a CodeBuffer just like any regular StringBuffer:
String someFunc() {
    var buf = new CodeBuffer();
    buf
      ..write('hello ')
      ..writeln('world!');
    return buf.toString();
}
However, a CodeBuffer supports indentation.
void someOtherFunc() {
  var buf = new CodeBuffer();
  // Custom options...
  var buf = new CodeBuffer(newline: '\r\n', space: '\t', trailingNewline: true);
  
  // Any following lines will have an incremented indentation level...
  buf.indent();
  
  // And vice-versa:
  buf.outdent();
}
CodeBuffer instances keep track of every SourceSpan they create.
This makes them useful for codegen tools, or to-JS compilers.
void someFunc(CodeBuffer buf) {
  buf.write('hello');
  expect(buf.lastLine.text, 'hello');
  
  buf.writeln('world');
  expect(buf.lastLine.lastSpan.start.column, 5);
}
You can copy a CodeBuffer into another, heeding indentation rules:
void yetAnotherFunc(CodeBuffer a, CodeBuffer b) {
  b.copyInto(a);
}