Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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+
usesuper::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)

AltStyle によって変換されたページ (->オリジナル) /