#whatwg #w3c #bikeshed #web-standard #web-specification

app specfmt

Command line tool to format Bikeshed and Wattsi specifications using WHATWG conventions

8 releases

new 0.2.6 Jan 10, 2025
0.2.5 Jan 10, 2025
0.2.3 Jan 23, 2023
0.2.1 Nov 19, 2022
0.1.0 Nov 4, 2022

#278 in Web programming

MIT license

28KB
476 lines

specfmt

Like rustfmt and clang-format, but for web specs

It is expected that this tool be used when developing web specifications, such as the Bikeshed specs that WHATWG works on, or even the HTML Standard (which uses a different build system, but that doesn't matter for the purposes of this tool).

specfmt contains adapted and sometimes fixed algorithms from the original rewrapper, ported to Rust.

Install

With Cargo installed, run:

$ cargo install specfmt

To install Cargo (the Rust package manager) follow these instructions.

Usage

You can format a web specification file by running:

$ specfmt [file]

Note that file is optional if you're inside the spec directory: specfmt will try and find the unique *.bs file in the current directory, or source (for whatwg/html).

By default, specfmt will:

  • Wrap lines to 100 cols
  • Prevent you from formatting a spec with uncommitted changes
  • Scope its reformatting to changes in the current spec branch

To override any of this behavior, run specfmt --help to see additional command line flags that you can pass in.

Dependencies

~3.5–5MB
~85K SLoC