postapl
v1.3.0
Published
Tool for transforming APL with JS plugins
Downloads
6
Maintainers
Readme
PostAPL
PostAPL is a tool for transforming Alexa Presentation Language (APL) documents with JS plugins. These plugins can add, remove, and modify APL nodes and bring consistency to all the APL docs in a project.
PostAPL takes an APL file (JSON with or without comments) and provides an API to analyze and modify its nodes (by transforming them into an Abstract Syntax Tree). This API can then be used by plugins to do a lot of useful things, e.g., remove properties with empty or null values, report on mainTemplate structure.
For PostAPL commercial support (consulting, PostAPL plugins), contact Mark Tucker.
Plugins
PostAPL is just getting started and we are open to plugin suggestions. You can find all of the plugins in the plugins list. Below is a list of our favorite plugins — the best demonstrations of what can be built on top of PostAPL.
If you have any new ideas, PostAPL plugin development is really easy.
General
- postapl-remove-empty finds properties whose values are null, empty string, empty array, or empty object and removes them.
Reporters
- postapl-mermaid-graph creates graph data for Mermaid Live Editor of the Component tree of your APL or of the AST.
Usage
You can start using PostAPL in just two steps:
- Find and add PostAPL extensions for your build tool.
- Select plugins and add them to your PostAPL process.
JS API
For other environments, you can use the JS API:
const { postapl } = require('postapl');
const removeEmpty = require('postapl-removeempty');
const fs = require('fs');
fs.readFile('src/screen.json', (err, apl) => {
postapl([removeEmpty])
.process(apl, { from: 'src/screen.json', to: 'dest/screen.json' })
.then(result => {
fs.writeFile(result.opts.to, result.apl, () => true)
})
});
Read the [PostAPL API documentation] for more details about the JS API.
Options
Most PostAPL runners accept two parameters:
- An array of plugins.
- An object of options.
Common options:
from
: the input file name.to
: the output file name.