Skip to content

Commit 6e33da7

Browse files
committed
Add initial blank frame (fixes #45)
1 parent 65110c6 commit 6e33da7

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/events.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ impl<I: Iterator<Item = Event>> Iterator for Batch<I> {
2020
self.prev_data.push_str(&data);
2121

2222
self.next()
23-
} else if !self.prev_data.is_empty() {
23+
} else if !self.prev_data.is_empty() || self.prev_time == 0.0 {
2424
let prev_time = self.prev_time;
2525
self.prev_time = time;
2626
let prev_data = std::mem::replace(&mut self.prev_data, data);
@@ -125,6 +125,18 @@ mod tests {
125125
assert_eq!(&stdout[0], &(0.0, "foobar".to_owned()));
126126
assert_eq!(&stdout[1], &(0.066, "baz".to_owned()));
127127
assert_eq!(&stdout[2], &(1.0, "qux".to_owned()));
128+
129+
let stdout = [
130+
(0.0, "".to_owned()),
131+
(1.0, "foo".to_owned()),
132+
(2.0, "bar".to_owned()),
133+
];
134+
135+
let stdout = super::batch(stdout.into_iter(), 30).collect::<Vec<_>>();
136+
137+
assert_eq!(&stdout[0], &(0.0, "".to_owned()));
138+
assert_eq!(&stdout[1], &(1.0, "foo".to_owned()));
139+
assert_eq!(&stdout[2], &(2.0, "bar".to_owned()));
128140
}
129141

130142
#[test]

src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use clap::ArgEnum;
33
use log::info;
44
use std::fmt::{Debug, Display};
55
use std::io::{BufRead, Write};
6-
use std::{thread, time::Instant};
6+
use std::{iter, thread, time::Instant};
77
mod asciicast;
88
mod events;
99
mod fonts;
@@ -124,6 +124,7 @@ pub fn run<I: BufRead, O: Write + Send>(input: I, output: O, config: Config) ->
124124
.unwrap_or(5.0);
125125

126126
let stdout = asciicast::stdout(events);
127+
let stdout = iter::once((0.0, "".to_owned())).chain(stdout);
127128
let stdout = events::limit_idle_time(stdout, itl);
128129
let stdout = events::accelerate(stdout, config.speed);
129130
let stdout = events::batch(stdout, config.fps_cap);

0 commit comments

Comments
 (0)