Skip to content

Repository files navigation

prettier-plugin-modelica

A Prettier plugin for formatting Modelica code.

Uses the tree-sitter-modelica grammar for parsing, which generates an abstract syntax tree (AST) that Prettier then formats back into consistently styled source code.

HTML annotations are formatted using Prettier's built-in HTML formatter. Certain tags are excluded from formatting to preserve their original integration into the document: see DEFAULT_PRESERVED_TAGS in src/print/html-formatter.ts.

Installation

From source:

git clone https://github.com/AntoineGautier/prettier-plugin-modelica.git
cd prettier-plugin-modelica
git submodule update --init
npm run setup
npm install && npm run build

Usage

Format a file (preview to stdout)

# Directly with prettier
prettier --plugin ./dist/index.js path/to/file.mo
# CLI equivalent
npm run format -- path/to/file.mo

Format and write back to the same file

# Directly with prettier
prettier --plugin ./dist/index.js path/to/file.mo --write
# CLI equivalent
npm run format -- path/to/file.mo --write

Format and save to a different file

# Directly with prettier
prettier --plugin ./dist/index.js path/to/file.mo > formatted.mo
# CLI equivalent
npm run format -- path/to/file.mo --output formatted.mo

Check correctness (the formatter doesn't break code)

npm run format -- path/to/file.mo --check

Tip

The --check option can be combined with --write or --output options. If the correctness check fails, the formatting will not produce any output.

Simply parse (preview to stdout)

npm run parse -- path/to/file.mo

Known Limitations

The following constructs are currently not supported due to tree-sitter-modelica bugs.

1. Quoted Elements in Enumerations

type Logic = enumeration(
  'U' "U  Uninitialized",
  '0' "0  Forcing 0",
  '1' "1  Forcing 1",
  '-' "-  Do not care");

2. Empty equation Sections

model Demo
  replaceable model Medium = Modelica.Media.Interfaces.PartialMedium
    "Medium model" annotation (choicesAllMatching=true);
equation
end Demo;

Contributing

See CONTRIBUTING.md for commit message conventions and the release process.

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

See the LICENSE file for the full license text and copyright notice.

About

Prettier Modelica Plugin

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages