Skip to content

A writer for json-rust object which supports highlighting slices when printing JSON objects

License

Apache-2.0, Unknown licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
Unknown
LICENSE-MIT
Notifications You must be signed in to change notification settings

gmmorris/json-highlight-writer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

json-highlight-writer

A writer for json-rust object which supports highlighting slices when printing JSON objects

Usage

There are three public functions:

highlight

highlight takes a JSON object and a vector of slices you wish to highlight.

use colored::*;
use json::*;
use json_highlight_writer::{highlight_with_colors, highlight, highlight_with_colors_and_remainder};

let res = object!{
    "code" => 200,
    "success" => true,
    "payload" => object!{
        "features" => array![
            "awesome",
            "easyAPI",
            "lowLearningCurve"
        ]
    }
};

println!("{:#}", highlight(&res, vec![&res["code"], &res["payload"]["features"]]));

This code will print out the entire JSON structure with the code field and array of features highlighted in red.

Single Color Matches

highlight_with_colors

highlight_with_colors takes a JSON object, a vector of slices you wish to highlight and a vector of colors to cycle through when matching slices.

println!("{:#}", highlight_with_colors(&res, vec![&res["code"], &res["payload"]["features"]], vec![Color::Red, Color::Green]));

println!("{:#}", highlight_with_colors(&res, vec![&res["payload"], &res["payload"]["features"]], vec![Color::Red, Color::Green]));

This code will print out the entire JSON structure twice, with the slices highlighted in red, the green. Note the inner color highlighting which is used to display matching slices in different colors if a matched slice resides inside of another matched slice.

Multiple Color Matches

If there are more slices than there are specified colors the highlighting will cycle back through the vector.

println!("{:#}", highlight_with_colors(&res, vec![&res["code"], &res["payload"], &res["payload"]["features"]], vec![Color::Red, Color::Green]));

Overlapping Matches

highlight_with_colors_and_remainder

highlight_with_colors_and_remainder is similar, except it can also take a color for the remainder, that is, the parts of the JSON that don't overlap with the slice.

println!("{:#}", highlight_with_colors_and_remainder(&res, vec![&res["code"], &res["payload"], &res["payload"]["features"]], Some(vec![Color::Red, Color::Green]), Some(Color::White)));

About

A writer for json-rust object which supports highlighting slices when printing JSON objects

Resources

License

Apache-2.0, Unknown licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
Unknown
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages