#formatter #linter #parser

biome_formatter

Biome's formatter shared infrastructure

7 releases (4 breaking)

0.5.7 Mar 12, 2024
0.5.5 Mar 12, 2024
0.4.0 Jan 9, 2024
0.3.1 Nov 26, 2023
0.0.2 Sep 28, 2023

#2640 in Development tools

Download history 1536/week @ 2024-10-19 2893/week @ 2024-10-26 2510/week @ 2024-11-02 4188/week @ 2024-11-09 5016/week @ 2024-11-16 4203/week @ 2024-11-23 5860/week @ 2024-11-30 6244/week @ 2024-12-07 4589/week @ 2024-12-14 1134/week @ 2024-12-21 1149/week @ 2024-12-28 2614/week @ 2025-01-04 2631/week @ 2025-01-11 2997/week @ 2025-01-18 2277/week @ 2025-01-25 2924/week @ 2025-02-01

11,261 downloads per month
Used in 5 crates

MIT/Apache

1.5MB
27K SLoC

Biome - Toolchain of the web

Discord chat CI cargo version

biome_formatter

Biome's formatter implementation. Follow the documentation.


lib.rs:

Infrastructure for code formatting

This module defines [FormatElement], an IR to format code documents and provides a mean to print such a document to a string. Objects that know how to format themselves implement the [Format] trait.

Formatting Traits

  • [Format]: Implemented by objects that can be formatted.
  • [FormatRule]: Rule that knows how to format an object of another type. Necessary in the situation where it's necessary to implement [Format] on an object from another crate. This module defines the [FormatRefWithRule] and [FormatOwnedWithRule] structs to pass an item with its corresponding rule.
  • [FormatWithRule] implemented by objects that know how to format another type. Useful for implementing some reusable formatting logic inside of this module if the type itself doesn't implement [Format]

Formatting Macros

This crate defines two macros to construct the IR. These are inspired by Rust's fmt macros

  • format!: Formats a formatable object
  • format_args!: Concatenates a sequence of Format objects.
  • write!: Writes a sequence of formatable objects into an output buffer.

Dependencies

~10–20MB
~259K SLoC