Crate nya[][src]

nya is a simple file processor. It's extremely simple, very fast, and super cute, as well. It reads files from a directory, does stuff to them, and then spits them out somewhere else. That's all it does. The "stuff" that's being done to the files is called middleware. Middleware is just a function that takes a struct representing a file and then does something to that file. It doesn't even have to return it! That's how easy it is to use nya. Can you believe it?

In its simplest form, you'd use it somewhat like this:

extern crate nya;

use nya::create_middleware;

fn main() {
    nya::run(vec![
        create_middleware(|files| {
            let file = &mut files[0];
            file.content = "test hello".to_string();
        })
    ], Some("fixtures/example"), Some("_site")).unwrap();
}

Don't worry, nya also has support for passing around custom metadata per-file via a HashMap<&str, String>:

extern crate nya;

use nya::create_middleware;

fn main() {
    nya::run(vec![
        create_middleware(|files| {
            let file = &mut files[0];
            file.metadata.insert("cool stuff", "test hello".to_string());
        })
    ], Some("fixtures/example"), Some("_site")).unwrap();
}

And then later on, you could extract it from the same file. Metadata is completely virtual, meaning it doesn't actually affect what's written to disk (unless you make something out of it!)

There's no global metadata support in nya, because I believe that should be implemented in your application layer, rather than relying on nya. It'd also break the perfectly simple library interface that we have going here.

How does nya compare to other software?

At some distant point in time, I'd like for nya to be used as a static site generator. How would it compare to other existing static site generators, then? Well, it's much simpler than Jekyll or Hugo, for example, and it's even simpler than other JavaScript-based SSGs such as Metalsmith or Wintersmith. Existing Rust SSGs have all more or less tried to replicate the full feature set of Jekyll or comparable software, so I hope I'll be scratching an itch here.

nya currently only depends on walkdir and globset, and I'd like to keep dependencies as light as possible.

Structs

SimpleFile

A struct describing a simple file, with only a name, content, path (relative & absolute), and custom metadata.

Functions

create_middleware

A convenience function that creates middleware.

ignore

Included middleware that excludes files from processing based on glob patterns.

run

Runs a middleware chain.

Type Definitions

MiddlewareFunction

A type describing middleware functions.