mirror of
https://github.com/asciinema/asciinema.git
synced 2025-12-16 11:48:13 +01:00
Slight refactoring of event serialization
This commit is contained in:
@@ -181,29 +181,33 @@ impl V2Encoder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn event(&mut self, event: &Event) -> Vec<u8> {
|
pub fn event(&mut self, event: &Event) -> Vec<u8> {
|
||||||
let mut data = self.serialize_event(event).unwrap().into_bytes();
|
let mut data = self.serialize_event(event).into_bytes();
|
||||||
data.push(b'\n');
|
data.push(b'\n');
|
||||||
|
|
||||||
data
|
data
|
||||||
}
|
}
|
||||||
|
|
||||||
fn serialize_event(&self, event: &Event) -> Result<String, serde_json::Error> {
|
fn serialize_event(&self, event: &Event) -> String {
|
||||||
use EventData::*;
|
use EventData::*;
|
||||||
|
|
||||||
let (code, data) = match &event.data {
|
let (code, data) = match &event.data {
|
||||||
Output(data) => ('o', serde_json::to_string(data)?),
|
Output(data) => ('o', self.to_json_string(data)),
|
||||||
Input(data) => ('i', serde_json::to_string(data)?),
|
Input(data) => ('i', self.to_json_string(data)),
|
||||||
Resize(cols, rows) => ('r', serde_json::to_string(&format!("{cols}x{rows}"))?),
|
Resize(cols, rows) => ('r', self.to_json_string(&format!("{cols}x{rows}"))),
|
||||||
Marker(data) => ('m', serde_json::to_string(data)?),
|
Marker(data) => ('m', self.to_json_string(data)),
|
||||||
Other(code, data) => (*code, serde_json::to_string(data)?),
|
Other(code, data) => (*code, self.to_json_string(data)),
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(format!(
|
format!(
|
||||||
"[{}, {}, {}]",
|
"[{}, {}, {}]",
|
||||||
format_time(event.time + self.time_offset),
|
format_time(event.time + self.time_offset),
|
||||||
serde_json::to_string(&code)?,
|
self.to_json_string(&code.to_string()),
|
||||||
data,
|
data,
|
||||||
))
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn to_json_string(&self, s: &str) -> String {
|
||||||
|
serde_json::to_string(s).unwrap()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -197,32 +197,36 @@ impl V3Encoder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn event(&mut self, event: &Event) -> Vec<u8> {
|
pub fn event(&mut self, event: &Event) -> Vec<u8> {
|
||||||
let mut data = self.serialize_event(event).unwrap().into_bytes();
|
let mut data = self.serialize_event(event).into_bytes();
|
||||||
data.push(b'\n');
|
data.push(b'\n');
|
||||||
|
|
||||||
data
|
data
|
||||||
}
|
}
|
||||||
|
|
||||||
fn serialize_event(&mut self, event: &Event) -> Result<String, serde_json::Error> {
|
fn serialize_event(&mut self, event: &Event) -> String {
|
||||||
use EventData::*;
|
use EventData::*;
|
||||||
|
|
||||||
let (code, data) = match &event.data {
|
let (code, data) = match &event.data {
|
||||||
Output(data) => ('o', serde_json::to_string(data)?),
|
Output(data) => ('o', self.to_json_string(data)),
|
||||||
Input(data) => ('i', serde_json::to_string(data)?),
|
Input(data) => ('i', self.to_json_string(data)),
|
||||||
Resize(cols, rows) => ('r', serde_json::to_string(&format!("{cols}x{rows}"))?),
|
Resize(cols, rows) => ('r', self.to_json_string(&format!("{cols}x{rows}"))),
|
||||||
Marker(data) => ('m', serde_json::to_string(data)?),
|
Marker(data) => ('m', self.to_json_string(data)),
|
||||||
Other(code, data) => (*code, serde_json::to_string(data)?),
|
Other(code, data) => (*code, self.to_json_string(data)),
|
||||||
};
|
};
|
||||||
|
|
||||||
let time = event.time - self.prev_time;
|
let time = event.time - self.prev_time;
|
||||||
self.prev_time = event.time;
|
self.prev_time = event.time;
|
||||||
|
|
||||||
Ok(format!(
|
format!(
|
||||||
"[{}, {}, {}]",
|
"[{}, {}, {}]",
|
||||||
format_time(time),
|
format_time(time),
|
||||||
serde_json::to_string(&code)?,
|
self.to_json_string(&code.to_string()),
|
||||||
data,
|
data,
|
||||||
))
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn to_json_string(&self, s: &str) -> String {
|
||||||
|
serde_json::to_string(s).unwrap()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user