Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/marirs/nparse

Parser library for specific use-cases
https://github.com/marirs/nparse

nom nom-parser parser rust rust-crate rust-lang rust-library

Last synced: about 11 hours ago
JSON representation

Parser library for specific use-cases

Awesome Lists containing this project

README

        

nparse 0.0.10
----------
[![Build Status](https://travis-ci.com/marirs/nparse.svg?branch=master)](https://travis-ci.com/marirs/nparse)

Parser for various [Rust](https://www.rust-lang.org/) Strings.

Parsers for:
- Well Indent Strings (eg: `dmidecode` output)
- KV pair Strings (eg: `lscpu` output)
- Multiline KV pair strings (eg: `systeminfo` output of windows)
- Dotted tree Strings (eg: `sysctl` output)

### Requirements

- Rust 1.50+

## Usage

```toml
nparse = "0.0.10"
```

### Example use

- Converting an `Indent` string into json

```rust
use std::{fs::File, io::Read};
use nparse::*;

fn main () {
let path = "data/dmidecode.txt";
let mut out = String::new();
{
let mut f = File::open(path).unwrap();
f.read_to_string(&mut out).unwrap();
}
let result = out.indent_to_json();
println!("{:?}", result);
}
```

- Converting a `K:V` string into json

```rust
use std::{fs::File, io::Read};
use nparse::*;

fn main () {
let path = "data/lscpu.txt";
let mut out = String::new();
{
let mut f = File::open(path).unwrap();
f.read_to_string(&mut out).unwrap();
}
let result = out.kv_str_to_json();
println!("{:?}", result);
}
```

- Converting a `K=V` string into json

```rust
use std::{fs::File, io::Read};
use nparse::*;

fn main () {
let path = "data/os-release.txt";
let mut out = String::new();
{
let mut f = File::open(path).unwrap();
f.read_to_string(&mut out).unwrap();
}
let result = out.kev_str_to_json();
println!("{:?}", result);
}
```

- Converting a `dotted` string into json (eg: `parent.sub.sub: val`)

```rust
use std::{fs::File, io::Read};
use nparse::*;

fn main () {
let path = "data/sysctl.txt";
let mut out = String::new();
{
let mut f = File::open(path).unwrap();
f.read_to_string(&mut out).unwrap();
}
let result = out.dotted_tree_to_json();
println!("{:?}", result);
}
```

---

## Tests, Build

- Test
```bash
cargo t
```

- Build Release
```bash
cargo b --release
```

## Examples

- Parse dmidecode output to json
```bash
cargo run --example dmidecode
```

- Parse sysctl output to json
```bash
cargo run --example sysctl
```

- Parse lscpu to json
```bash
cargo run --example lscpu
```

- Parse windows systeminfo to json
```bash
cargo run --example systeminfo
```

---