Nox Object Modeling Language

Rules that stay
readable.

NOML is the small object-modeling language used by Nox for embedded rules and structured configuration. The standalone crate provides a parser, serializer, command-line interface, and formatter.

A small document

Objects, arrays, and rulesets.

ruleset "commands" {
    command: build {
        aliases: ["b", "compile"]
        rules: {
            requires_project: true
            accepts_files_as_input: false
        }
    }
}

NOML supports scalar values, nested objects, arrays, comments, rulesets, named entries, and entry inheritance with extends. Parsed extensions are resolved before the value is returned.

Standalone crate

Use NOML outside Nox.

cd noml
cargo build
cargo run -- parse demo.noml
cargo run -- check demo.noml

The noml package contains src/lib.rs for embedding the parser and a default CLI for parsing, checking, and formatting files. It is an independent Rust project under the Nox repository.

Formatting

Canonical output in one command.

cd noml
cargo run -- format rules.noml
cargo run --bin nomlfmt -- rules.noml

Both format commands parse and serialize the file in place. The library also exposes format_text, format_file, and format_file_in_place helpers for tools and editor integrations.

Nox integration

Rules are data, not hard-coded branches.

Nox embeds NOML rule files for base commands and project initialization. Those rules describe command aliases, accepted inputs, language metadata, target relationships, flags, and generated templates. The Rust implementation loads them through the NOML parser at runtime.