This library provides a generator for arbitrary source code. The generator is composable, i.e. complex generators can be created out of simpler generators.
This library was primarily created to generate Java source code for the Pojo-Builder and the OpenAPI Generator projects. It is still in version 0.x and therefore may introduce breaking changes between minor versions.
The Generator interface defines a single method:
Writer generate(A data, B settings, Writer writer);
It accepts a data object and a settings object as well as the Writer instance. The Writer class is immutable, the
method returns a new Writer instance with the additional generated content.
The Generator interface contains a bunch of default methods for composing different generators to a single new
generator.
The library contains already some predefined generators for creating Java source code. These classes are created for the mentioned projects and may be not yet complete.
The generators can be created with a fluent builder (with the help
of Pojo-Builder), one can use the static factory methods
in JavaGenerators:
Generator<String, Void> classGenerator = JavaGenerators.<String, Void>classGen()
        .clazz()
        .topLevel()
        .packageGen(Generator.constant("package io.github.muehmar;"))
        .modifiers(PUBLIC)
        .className("HelloWorld")
        .noSuperClass()
        .noInterfaces()
        .content((data, settings, writer) -> writer.println(data))
        .build()