code_builder 1.0.0-beta+1
code_builder: ^1.0.0-beta+1 copied to clipboard
A fluent API for generating Dart code
1.0.0-beta+1 #
- Add support for
switchstatements - Add support for a raw expression and statement
new ExpressionBuilder.raw(...)new StatemnetBuilder.raw(...)
This should help cover any cases not covered with builders today.
- Allow referring to a
ClassBuilderandTypeBuilderas an expression - Add support for accessing the index
[]operator on an expression
BREAKING CHANGES #
- Changed
ExpressionBuilder.asAssignto always take anExpressionBuilderas target and removed thevalueproperty. Most changes are pretty simple, and involve just usingreference(...). For example:
literal(true).asAssign(reference('flag'))
... emits flag = true.
1.0.0-beta #
- Add support for
async,sync,sync*functions - Add support for expression
asAwait,asYield,asYieldStar - Add
toExportBuilderandtoImportBuilderto types and references - Fix an import scoping bug in
returnstatements and named constructor invocations. - Added constructor initializer support
- Add
whileanddo {} whileloop support - Add
forandfor-insupport - Added a
namegetter forParameterBuilder
1.0.0-alpha+7 #
- Make use of new analyzer API in preparation for analyzer version 0.30.
1.0.0-alpha+6 #
MethodBuilder.closureemits properly as a top-level function
1.0.0-alpha+5 #
- MethodBuilder with no statements will create an empty block instead of a semicolon.
// main() {}
method('main')
- Fix lambdas and closures to not include a trailing semicolon when used as an expression.
// () => false
new MethodBuilder.closure(returns: literal(false));
1.0.0-alpha+4 #
- Add support for latest
pkg/analyzer.
1.0.0-alpha+3 #
- BREAKING CHANGE: Added generics support to
TypeBuilder:
importFrom becomes a named, not positional argument, and the named
argument genericTypes is added (Iterable<TypeBuilder>).
// List<String>
new TypeBuilder('List', genericTypes: [reference('String')])
- Added generic support to
ReferenceBuilder:
// List<String>
reference('List').toTyped([reference('String')])
- Fixed a bug where
ReferenceBuilder.buildAstwas not implemented - Added
andandormethods toExpressionBuilder:
// true || false
literal(true).or(literal(false));
// true && false
literal(true).and(literal(false));
- Added support for creating closures -
MethodBuilder.closure:
// () => true
new MethodBuilder.closure(
returns: literal(true),
returnType: lib$core.bool,
)
1.0.0-alpha+2 #
- Added
returnVoidto well,return; - Added support for top-level field assignments:
new LibraryBuilder()..addMember(literal(false).asConst('foo'))
- Added support for specifying a
targetwhen usingasAssign:
// Outputs bank.bar = goldBar
reference('goldBar').asAssign('bar', target: reference('bank'))
- Added support for the cascade operator:
// Outputs foo..doThis()..doThat()
reference('foo').cascade((c) => <ExpressionBuilder> [
c.invoke('doThis', []),
c.invoke('doThat', []),
]);
- Added support for accessing a property
// foo.bar
reference('foo').property('bar');
1.0.0-alpha+1 #
- Slight updates to confusing documentation.
- Added support for null-aware assignments.
- Added
showandhidesupport toImportBuilder - Added
deferredsupport toImportBuilder - Added
ExportBuilder - Added
listandmapliterals that support generic types
1.0.0-alpha #
- Large refactor that makes the library more feature complete.
0.1.1 #
- Add concept of
Scopeand changetoAstto support it
Now your entire AST tree can be scoped and import directives
automatically added to a LibraryBuilder for you if you use
LibraryBuilder.scope.
0.1.0 #
- Initial version