Skip to content

Commit 4e655a5

Browse files
committed
Move output to bin
1 parent bce14bc commit 4e655a5

File tree

2 files changed

+65
-58
lines changed

2 files changed

+65
-58
lines changed

src/lib.rs

Lines changed: 2 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -2,72 +2,18 @@ pub mod constants;
22
pub mod ds;
33
mod process;
44

5-
use colored::*;
6-
use constants::Message;
7-
use ds::{key_node::KeyNode, mismatch::Mismatch};
8-
use std::io::{self, Write};
9-
5+
use ds::mismatch::Mismatch;
106
pub fn compare_jsons(a: &str, b: &str) -> Result<Mismatch, serde_json::Error> {
117
let value1 = serde_json::from_str(a)?;
128
let value2 = serde_json::from_str(b)?;
139
Ok(process::match_json(&value1, &value2))
1410
}
1511

16-
pub fn display_output(result: Mismatch) -> Result<(), std::io::Error> {
17-
let no_mismatch = Mismatch {
18-
left_only_keys: KeyNode::Nil,
19-
right_only_keys: KeyNode::Nil,
20-
keys_in_both: KeyNode::Nil,
21-
};
22-
23-
let stdout = io::stdout();
24-
let mut handle = io::BufWriter::new(stdout.lock());
25-
Ok(if no_mismatch == result {
26-
writeln!(handle, "\n{}", Message::NoMismatch)?;
27-
} else {
28-
match result.keys_in_both {
29-
KeyNode::Node(_) => {
30-
let mut keys = Vec::new();
31-
result.keys_in_both.absolute_keys(&mut keys, None);
32-
writeln!(handle, "\n{}:", Message::Mismatch)?;
33-
for key in keys {
34-
writeln!(handle, "{}", key)?;
35-
}
36-
}
37-
KeyNode::Value(_, _) => writeln!(handle, "{}", Message::RootMismatch)?,
38-
KeyNode::Nil => (),
39-
}
40-
match result.left_only_keys {
41-
KeyNode::Node(_) => {
42-
let mut keys = Vec::new();
43-
result.left_only_keys.absolute_keys(&mut keys, None);
44-
writeln!(handle, "\n{}:", Message::LeftExtra)?;
45-
for key in keys {
46-
writeln!(handle, "{}", key.red().bold())?;
47-
}
48-
}
49-
KeyNode::Value(_, _) => (),
50-
KeyNode::Nil => (),
51-
}
52-
match result.right_only_keys {
53-
KeyNode::Node(_) => {
54-
let mut keys = Vec::new();
55-
result.right_only_keys.absolute_keys(&mut keys, None);
56-
writeln!(handle, "\n{}:", Message::RightExtra)?;
57-
for key in keys {
58-
writeln!(handle, "{}", key.green().bold())?;
59-
}
60-
}
61-
KeyNode::Value(_, _) => (),
62-
KeyNode::Nil => (),
63-
}
64-
})
65-
}
6612

6713
#[cfg(test)]
6814
mod tests {
6915
use super::*;
70-
16+
use super::ds::{key_node::KeyNode, mismatch::Mismatch};
7117
use maplit::hashmap;
7218
use serde_json::json;
7319

src/main.rs

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
1-
use json_diff::{compare_jsons, constants::Message, display_output};
2-
use std::{fmt, fs, process as proc, str::FromStr};
1+
use colored::*;
2+
use json_diff::{
3+
compare_jsons,
4+
constants::Message,
5+
ds::{key_node::KeyNode, mismatch::Mismatch},
6+
};
7+
use std::{
8+
fmt, fs,
9+
io::{self, Write},
10+
process as proc,
11+
str::FromStr,
12+
};
313
use structopt::StructOpt;
414

515
const HELP: &str = r#"
@@ -80,3 +90,54 @@ fn error_exit(message: Message) -> ! {
8090
eprintln!("{}", message);
8191
proc::exit(1);
8292
}
93+
94+
pub fn display_output(result: Mismatch) -> Result<(), std::io::Error> {
95+
let no_mismatch = Mismatch {
96+
left_only_keys: KeyNode::Nil,
97+
right_only_keys: KeyNode::Nil,
98+
keys_in_both: KeyNode::Nil,
99+
};
100+
101+
let stdout = io::stdout();
102+
let mut handle = io::BufWriter::new(stdout.lock());
103+
Ok(if no_mismatch == result {
104+
writeln!(handle, "\n{}", Message::NoMismatch)?;
105+
} else {
106+
match result.keys_in_both {
107+
KeyNode::Node(_) => {
108+
let mut keys = Vec::new();
109+
result.keys_in_both.absolute_keys(&mut keys, None);
110+
writeln!(handle, "\n{}:", Message::Mismatch)?;
111+
for key in keys {
112+
writeln!(handle, "{}", key)?;
113+
}
114+
}
115+
KeyNode::Value(_, _) => writeln!(handle, "{}", Message::RootMismatch)?,
116+
KeyNode::Nil => (),
117+
}
118+
match result.left_only_keys {
119+
KeyNode::Node(_) => {
120+
let mut keys = Vec::new();
121+
result.left_only_keys.absolute_keys(&mut keys, None);
122+
writeln!(handle, "\n{}:", Message::LeftExtra)?;
123+
for key in keys {
124+
writeln!(handle, "{}", key.red().bold())?;
125+
}
126+
}
127+
KeyNode::Value(_, _) => (),
128+
KeyNode::Nil => (),
129+
}
130+
match result.right_only_keys {
131+
KeyNode::Node(_) => {
132+
let mut keys = Vec::new();
133+
result.right_only_keys.absolute_keys(&mut keys, None);
134+
writeln!(handle, "\n{}:", Message::RightExtra)?;
135+
for key in keys {
136+
writeln!(handle, "{}", key.green().bold())?;
137+
}
138+
}
139+
KeyNode::Value(_, _) => (),
140+
KeyNode::Nil => (),
141+
}
142+
})
143+
}

0 commit comments

Comments
 (0)