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. |