1#![doc(html_logo_url = "https://raw.githubusercontent.com/ygg-lang/oaks/refs/heads/dev/documents/logo.svg")]
2#![doc(html_favicon_url = "https://raw.githubusercontent.com/ygg-lang/oaks/refs/heads/dev/documents/logo.svg")]
3#![feature(new_range_api)]
4pub extern crate alloc;
5extern crate self as oak_pretty_print;
6
7#[doc(hidden)]
8pub mod __private {
9 pub use crate::alloc;
10}
11
12pub mod builtin_rules;
14pub mod comment;
15pub mod config;
16pub mod document;
17pub mod errors;
18pub mod formatter;
19pub mod rules;
20pub mod to_doc;
21
22pub use crate::{
24 builtin_rules::create_builtin_rules,
25 comment::{Comment, CommentCollector, CommentKind, CommentProcessor},
26 config::{FormatConfig, IndentStyle, LineEnding},
27 errors::FormatResult,
28 formatter::{FormatContext, FormatOutput, Formatter},
29 rules::{FormatRule, RuleSet},
30 to_doc::{AsDocument, ToDocument},
31};
32pub use oak_core::language::Language;
33
34pub use crate::document::Document;
35pub type Doc<'a> = Document<'a>;
36
37pub use oak_macros::{AsDocument, FormatRule, define_rules, doc};
38
39pub const NIL: Document<'static> = Document::Nil;
41pub const LINE: Document<'static> = Document::Line;
43
44pub fn indent<'a>(doc: Document<'a>) -> Document<'a> {
46 Document::indent(doc)
47}
48
49pub fn join<'a>(docs: impl IntoIterator<Item = Document<'a>>, separator: Document<'a>) -> Document<'a> {
51 Document::join(docs, separator)
52}
53pub const SOFT_LINE: Document<'static> = Document::SoftLine;
55pub const SOFT_LINE_SPACE: Document<'static> = Document::SoftLineSpace;
57pub const HARD_LINE: Document<'static> = Document::HardLine;