Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sminez/simple_txtar
a simple txtar parser for Rust
https://github.com/sminez/simple_txtar
Last synced: 2 months ago
JSON representation
a simple txtar parser for Rust
- Host: GitHub
- URL: https://github.com/sminez/simple_txtar
- Owner: sminez
- License: mit
- Created: 2024-06-23T15:12:46.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-06-24T06:34:19.000Z (6 months ago)
- Last Synced: 2024-09-13T23:12:36.283Z (4 months ago)
- Language: Rust
- Size: 7.81 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![crates.io version](https://img.shields.io/crates/v/simple_txtar)](https://crates.io/crates/simple_txtar) [![docs.rs](https://img.shields.io/docsrs/simple_txtar?logo=rust)](https://docs.rs/simple_txtar)
# A simple txtar parser for Rust
A simple implementation of the go [txtar](https://github.com/golang/tools/blob/master/txtar/archive.go)
package: a trivial text-based file archive format.Taken from the original go `txtar` docs:
> The goals for the format are:
> - be trivial enough to create and edit by hand.
> - be able to store trees of text files describing go command test cases.
> - diff nicely in git history and code reviews.
>
> Non-goals include being a completely general archive format,
> storing binary data, storing file modes, storing special files like
> symbolic links, and so on.
>
> # Txtar format
>
> A txtar archive is zero or more comment lines and then a sequence of file entries.
> Each file entry begins with a file marker line of the form "-- FILENAME --"
> and is followed by zero or more file content lines making up the file data.
> The comment or file content ends at the next file marker line.
> The file marker line must begin with the three-byte sequence "-- "
> and end with the three-byte sequence " --", but the enclosed
> file name can be surrounding by additional white space,
> all of which is stripped.
>
> If the txtar file is missing a trailing newline on the final line,
> parsers should consider a final newline to be present anyway.
>
> There are no possible syntax errors in a txtar archive.# Example usage
```rust
use simple_txtar::Archive;let s = r#"All text before the first file entry is considered a comment.
Until we have the first file marker this is still part
of the comment.
-- example.json --
{
"foo": 1,
"bar": [ "baz" ]
}
-- example.txt --
Some example text in a separate file from the example json.
"#;let a = Archive::from(s);
assert_eq!(
a.comment().lines().next(),
Some("All text before the first file entry is considered a comment.")
);
assert_eq!(a.comment().lines().last(), Some("of the comment."));// Files can be accessed using indexing or the `get` method
assert_eq!(Some(&a[0]), a.get("example.json"));// The Archive itself is also an iterator over the Files it contains
let mut it = a.iter();
assert_eq!(
it.next().unwrap().name,
"example.json"
);
assert_eq!(
it.next().unwrap().content,
"Some example text in a separate file from the example json.\n"
);
```