Skip to content

Commit 567d57e

Browse files
author
Noam Lewis
committed
simplify chunks to lines_iter
1 parent af5568a commit 567d57e

File tree

2 files changed

+10
-32
lines changed

2 files changed

+10
-32
lines changed

src/chunks.rs renamed to src/lines_iter.rs

Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,14 @@ use std::slice::{RSplit, Split};
22

33
use crate::LoadedLine;
44

5-
pub struct Chunk<'a> {
6-
file_offset: u64,
7-
is_modified: bool,
8-
data: &'a [char],
9-
}
10-
11-
impl Chunk<'_> {
12-
pub fn from_disk(file_offset: u64, data: &[char]) -> Chunk {
13-
Chunk {
14-
file_offset,
15-
is_modified: false,
16-
data,
17-
}
18-
}
19-
20-
pub fn lines_iter(&self) -> ChunkLinesIter {
21-
ChunkLinesIter {
22-
chunk: self,
23-
forward: self.data.split(Box::new(|c: &char| *c == '\n')),
24-
back: self.data.rsplit(Box::new(|c: &char| *c == '\n')),
25-
}
5+
pub fn lines_iter<'a>(data: &'a [char]) -> ChunkLinesIter {
6+
ChunkLinesIter {
7+
forward: data.split(Box::new(|c: &char| *c == '\n')),
8+
back: data.rsplit(Box::new(|c: &char| *c == '\n')),
269
}
2710
}
2811

2912
pub struct ChunkLinesIter<'a> {
30-
chunk: &'a Chunk<'a>,
3113
forward: Split<'a, char, Box<dyn FnMut(&char) -> bool>>,
3214
back: RSplit<'a, char, Box<dyn FnMut(&char) -> bool>>,
3315
}
@@ -51,13 +33,12 @@ impl<'a> DoubleEndedIterator for ChunkLinesIter<'a> {
5133
#[cfg(test)]
5234
mod tests {
5335

54-
use chunks::Chunk;
36+
use super::lines_iter;
5537

5638
#[test]
5739
fn test_chunk_lines_iter() {
5840
let data: Vec<char> = "line1\nline2\nline3\n".chars().collect();
59-
let chunk = Chunk::from_disk(0, &data);
60-
let mut iter = chunk.lines_iter();
41+
let mut iter = lines_iter(&data);
6142

6243
assert_eq!(
6344
iter.next().unwrap().chars_iter().collect::<String>(),
@@ -79,8 +60,7 @@ mod tests {
7960
#[test]
8061
fn test_chunk_lines_iter_empty() {
8162
let data: Vec<char> = "".chars().collect();
82-
let chunk = Chunk::from_disk(0, &data);
83-
let mut iter = chunk.lines_iter();
63+
let mut iter = lines_iter(&data);
8464

8565
assert_eq!(iter.next().unwrap().chars_iter().collect::<String>(), "");
8666
assert!(iter.next().is_none());
@@ -89,8 +69,7 @@ mod tests {
8969
#[test]
9070
fn test_chunk_lines_iter_no_newline() {
9171
let data: Vec<char> = "line1".chars().collect();
92-
let chunk = Chunk::from_disk(0, &data);
93-
let mut iter = chunk.lines_iter();
72+
let mut iter = lines_iter(&data);
9473

9574
assert_eq!(
9675
iter.next().unwrap().chars_iter().collect::<String>(),
@@ -102,8 +81,7 @@ mod tests {
10281
#[test]
10382
fn test_chunk_lines_iter_double_ended() {
10483
let data: Vec<char> = "line1\nline2\nline3\n".chars().collect();
105-
let chunk = Chunk::from_disk(0, &data);
106-
let mut iter = chunk.lines_iter();
84+
let mut iter = lines_iter(&data);
10785

10886
assert_eq!(
10987
iter.next_back().unwrap().chars_iter().collect::<String>(),

src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ use ratatui::{
1515
DefaultTerminal, Frame,
1616
};
1717

18-
pub mod chunks;
1918
pub mod lines;
19+
pub mod lines_iter;
2020

2121
// TODO
2222
// How to represent edited content?

0 commit comments

Comments
 (0)