.. | ||
example | ||
lib | ||
test | ||
analysis_options.yaml | ||
AUTHORS.md | ||
CHANGELOG.md | ||
LICENSE | ||
melos_belatuk_code_buffer.iml | ||
pubspec.yaml | ||
README.md |
Belatuk Code Buffer
Replacement of package:code_buffer
with breaking changes to support NNBD.
An advanced StringBuffer geared toward generating code, and source maps.
Installation
In your pubspec.yaml
:
dependencies:
belatuk_code_buffer: ^8.0.0
Usage
Use a CodeBuffer
just like any regular StringBuffer
:
String someFunc() {
var buf = CodeBuffer();
buf
..write('hello ')
..writeln('world!');
return buf.toString();
}
However, a CodeBuffer
supports indentation.
void someOtherFunc() {
var buf = CodeBuffer();
// Custom options...
var buf = 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);
}