diff --git a/src/client/mudlet.rs b/src/client/mudlet.rs index ad3d0df..1ee0e7c 100644 --- a/src/client/mudlet.rs +++ b/src/client/mudlet.rs @@ -45,10 +45,10 @@ fn chunk64(delta_chunk: &Vec, size_chunk: &Vec) -> Result<(i32, i32)> { } /// parse the log of raw bytes and make some nice json for clients -pub fn parse_log(raw: &Vec) -> Result { +pub fn parse_log(raw: &Vec) -> Result<(i32, Value)> { let mut raw = raw.to_owned(); let mut chunks: Vec> = Vec::new(); - let mut lineno = 1; + let mut lineno = 0; while raw.len() > 0 { let chunk: Vec = raw.drain(0..8).collect(); @@ -84,15 +84,15 @@ pub fn parse_log(raw: &Vec) -> Result { text = convert_escaped(&text)?; for line in text.lines() { + lineno += 1; let mut map: Map = Map::new(); map.insert("lineno".into(), lineno.into()); map.insert("delta".into(), delta.into()); map.insert("text".into(), line.trim().into()); chunks.push(map); delta = 0; - lineno += 1; } } - Ok(chunks.into()) + Ok((lineno, chunks.into())) } diff --git a/src/wot_log.rs b/src/wot_log.rs index 5c217f0..642703f 100644 --- a/src/wot_log.rs +++ b/src/wot_log.rs @@ -97,7 +97,9 @@ impl WotLog { match self.client { Client::Mudlet => { - map.insert("replay".into(), client::mudlet::parse_log(&self.raw)?.into()); + let (lines, replay) = client::mudlet::parse_log(&self.raw)?; + map.insert("lines".into(), lines.into()); + map.insert("replay".into(), replay.into()); } Client::TinTin => (), Client::ZMud => (),