Options
All
  • Public
  • Public/Protected
  • All
Menu

postdfm

Process over Delphi Forms (.dfm) files via an AST.

Inspired by the excellent PostCSS tool, motivated by my rage at the Delphi IDE.

npm CircleCI branch Codecov branch Known Vulnerabilities

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

const fs = require("fs");
const postdfm = require("postdfm");

// if implementing your own plugin, otherwise import plugins
const { Plugin } = require("@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.

const postdfm = require("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.

Index

Classes

Interfaces

Type aliases

Functions

Type aliases

Parser

Parser: (dfm: string) => AST.Root

Type declaration

    • (dfm: string): AST.Root
    • Parameters

      • dfm: string

      Returns AST.Root

Stringifier

Stringifier: (ast: AST.Root) => string

Type declaration

    • (ast: AST.Root): string
    • Parameters

      • ast: AST.Root

      Returns string

Functions

default

Legend

  • Constructor
  • Method
  • Property

Generated using TypeDoc