Transformer Item
A transformer takes zero or more inputs and produces one or more output artifacts from them. The following transformer creates one output file from one input file:
Transformer {
    inputs: "raw_input.txt"
    Artifact {
        fileName: "processed_input.txt"
        fileTags: "processed_file"
    }
    prepare: {
        var cmd = new JavaScriptCommand();
        cmd.description = "Processing '" + input.fileName + "'";
        cmd.highlight = "codegen";
        cmd.sourceCode = function() {
            var file = new TextFile(input.fileName);
            var content = file.readAll();
            file.close()
            content = content.replace(/\r\n/g, "\n");
            file = new TextFile(output.fileName, TextFile.WriteOnly);
            file.truncate();
            file.write(content);
            file.close();
        }
        return cmd;
    }
}
This example exhibits some interesting features of transformers:
- If there is only one input file, the property input is available as syntactic sugar for inputs[0].
- The filenames of the output artifacts are available as outputs. If there is only one of these, it can be referred to it as output.
A Transformer is always attached to a Product, possibly indirectly via a Module.
Transformer Properties
| Property | Type | Default | Description | 
|---|---|---|---|
| inputs | stringList | empty list | The list of inputs to the transformer. | 
| prepare | list of Javascript commands | empty list | The commands that the transformer runs. These typically read from the input files and write to the output files in some way. | 
| condition | bool | true | If true, the transformer is enabled, otherwise it does nothing. | 
| explicitlyDependsOn | stringList | undefined | A list of file tags. All output artifacts of this transformer will have a dependency to all artifacts with the given file tags. |