postdfm
v9.0.0
Published
Provides an API for easily transforming Delphi Forms
Downloads
100
Maintainers
Readme
postdfm
Process over Delphi Forms (.dfm) files via an AST.
Inspired by the excellent PostCSS tool, motivated by my rage at the Delphi IDE.
Table of Contents
Installation
The postdfm
project is an interface wrapping all the separate modules together.
# npm
$ npm install postdfm
# yarn
$ yarn add postdfm
Example Usage
import fs from "fs";
import postdfm from "postdfm";
// only if implementing your own plugin
import { Plugin } from "@postdfm/plugin";
class SomePlugin extends Plugin {
install(hooks) {
hooks.string.tap(ast => {
// manipulate AST here
}
// all AST types can be manipulated, see AST.ASTTypes
// also available:
// - "after" hook for certain types
hooks.after.object.tap(ast => {
// manipulate AST here
})
// - "all" hook for everything - excludes "after" hooks
hooks.all.tap(ast => {
// manipulate AST here
})
}
}
const cisDfm = fs.readFileSync(
"cis.dfm",
//.dfm files tend to be ascii instead of utf8
"ascii"
);
const runner = postdfm({
transformers: [new SomePlugin()],
});
const transDfm = runner.processSync(dfm, {
//filename used for reporting errors
from: "cis.dfm",
});
fs.writeFileSync("trans.dfm", transDfm);
Reference
Runner
instance
Create a runner by calling the postdfm
function.
import postdfm from "postdfm";
const runner = postdfm();
postdfm(options?: RunnerOptions)
Create a Runner
instance using RunnerOptions
runner.process(dfm: string, processingOptions: ProcessingOptions): Promise<string>
Process a file through the runner asynchronously.
runner.processSync(dfm: string, processingOptions: ProcessingOptions): string
Process a file through the runner synchronously.
RunnerOptions
Options to pass to an instance of Runner
.
options.plugins: Plugin[]
Array of transformations to perform on AST.
options.parser: Parser = "@postdfm/dfm2ast"
Parser to use, defaults to @postdfm/dfm2ast
.
options.stringifier: Stringifier = "@postdfm/ast2dfm"
Stringifier to use, defaults to @postdfm/ast2dfm
.
Plugin
A class that extends the @postdfm/plugin
Plugin, extending the install()
method.
See @postdfm/plugin
for more information.
Parser
A function that takes a string, parses it, and returns an AST.
(dfm: string): AST.Root
Stringifier
A function that takes an AST, stringifies it, and returns a string.
(ast: AST.Root): string
ProcessingOptions
processingOptions.from
The file which is being processed. Used when throwing syntax errors.
Documentation
You can find the generated typedoc
documentation here.
Contributing
Bug reports and feature requests are greatly appreciated, as are pull requests.
Please see the Contributing Guide for instructions on how to contribute to this project.
License
Licensed under the MIT License.