undo/redo
This commit is contained in:
parent
8a4df3307d
commit
8cfe1a0b65
8 changed files with 247 additions and 154 deletions
|
|
@ -1,13 +1,34 @@
|
|||
use regex::bytes::Regex;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::tui::{
|
||||
log_viewer::{FieldMatcher, InputTarget, LogViewer},
|
||||
log_viewer::{
|
||||
LogViewer,
|
||||
input::{FieldMatcher, InputTarget},
|
||||
},
|
||||
model::LogEntry,
|
||||
};
|
||||
|
||||
mod serialize_regex {
|
||||
use regex::bytes::Regex;
|
||||
use serde::{Deserialize, Deserializer, Serialize, Serializer, de::Error};
|
||||
|
||||
pub fn serialize<S: Serializer>(r: &Regex, serializer: S) -> Result<S::Ok, S::Error> {
|
||||
r.as_str().serialize(serializer)
|
||||
}
|
||||
pub fn deserialize<'de, D>(deserializer: D) -> Result<Regex, D::Error>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
{
|
||||
let s = String::deserialize(deserializer)?;
|
||||
Regex::new(&s).map_err(|e| D::Error::custom(e.to_string()))
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub enum MatcherValue {
|
||||
Exact(String),
|
||||
Regex(Regex),
|
||||
Regex(#[serde(with = "serialize_regex")] Regex),
|
||||
Prefix(String),
|
||||
Contains(String),
|
||||
}
|
||||
|
|
@ -32,6 +53,7 @@ impl MatcherValue {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub enum Matcher {
|
||||
Field { name: String, value: MatcherValue },
|
||||
Message { value: MatcherValue },
|
||||
|
|
@ -76,12 +98,13 @@ impl Matcher {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
#[derive(Clone, Serialize, Deserialize)]
|
||||
pub enum FilterKind {
|
||||
Inline,
|
||||
Remove,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct Filter {
|
||||
pub matcher: Matcher,
|
||||
pub kind: FilterKind,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue