mirror of
https://github.com/fluencelabs/jsonpath
synced 2025-06-25 05:41:45 +00:00
improve error message
This commit is contained in:
@ -1,4 +1,3 @@
|
||||
use std::io::Write;
|
||||
use std::result::Result;
|
||||
|
||||
use super::path_reader::{PathReader, ReaderError};
|
||||
@ -368,13 +367,7 @@ impl<'a> TokenReader<'a> {
|
||||
}
|
||||
|
||||
pub fn err_msg_with_pos(&self, pos: usize) -> String {
|
||||
let mut w = Vec::new();
|
||||
writeln!(&mut w, "{}", self.origin_input).unwrap();
|
||||
writeln!(&mut w, "{}", "^".repeat(pos)).unwrap();
|
||||
match std::str::from_utf8(&w[..]) {
|
||||
Ok(s) => s.to_owned(),
|
||||
Err(_) => panic!("Invalid UTF-8"),
|
||||
}
|
||||
format!("{}\n{}", self.origin_input, "^".repeat(pos))
|
||||
}
|
||||
|
||||
pub fn err_msg(&self) -> String {
|
||||
|
@ -1,4 +1,5 @@
|
||||
use std::collections::HashSet;
|
||||
use std::fmt;
|
||||
|
||||
use array_tool::vec::{Intersect, Union};
|
||||
use indexmap::IndexMap;
|
||||
@ -514,7 +515,6 @@ enum FilterKey {
|
||||
All,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum JsonPathError {
|
||||
EmptyPath,
|
||||
EmptyValue,
|
||||
@ -522,6 +522,23 @@ pub enum JsonPathError {
|
||||
Serde(String),
|
||||
}
|
||||
|
||||
impl fmt::Debug for JsonPathError {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(f, "{}", self)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for JsonPathError {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
match self {
|
||||
JsonPathError::EmptyPath => f.write_str("path not set"),
|
||||
JsonPathError::EmptyValue => f.write_str("json value not set"),
|
||||
JsonPathError::Path(msg) => f.write_str(&format!("path error: \n{}\n", msg)),
|
||||
JsonPathError::Serde(msg) => f.write_str(&format!("serde error: \n{}\n", msg)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Selector<'a, 'b> {
|
||||
node: Option<Node>,
|
||||
|
Reference in New Issue
Block a user