Cargo Format
Run `cargo fmt` and ignore generated files
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
use superslice::Ext;
|
||||
use crate::TextUnit;
|
||||
use superslice::Ext;
|
||||
|
||||
#[derive(Clone, Debug, Hash, PartialEq, Eq)]
|
||||
pub struct LineIndex {
|
||||
@@ -29,7 +29,10 @@ impl LineIndex {
|
||||
let line = self.newlines.upper_bound(&offset) - 1;
|
||||
let line_start_offset = self.newlines[line];
|
||||
let col = offset - line_start_offset;
|
||||
return LineCol { line: line as u32, col };
|
||||
return LineCol {
|
||||
line: line as u32,
|
||||
col,
|
||||
};
|
||||
}
|
||||
|
||||
pub fn offset(&self, line_col: LineCol) -> TextUnit {
|
||||
@@ -42,21 +45,105 @@ impl LineIndex {
|
||||
fn test_line_index() {
|
||||
let text = "hello\nworld";
|
||||
let index = LineIndex::new(text);
|
||||
assert_eq!(index.line_col(0.into()), LineCol { line: 0, col: 0.into() });
|
||||
assert_eq!(index.line_col(1.into()), LineCol { line: 0, col: 1.into() });
|
||||
assert_eq!(index.line_col(5.into()), LineCol { line: 0, col: 5.into() });
|
||||
assert_eq!(index.line_col(6.into()), LineCol { line: 1, col: 0.into() });
|
||||
assert_eq!(index.line_col(7.into()), LineCol { line: 1, col: 1.into() });
|
||||
assert_eq!(index.line_col(8.into()), LineCol { line: 1, col: 2.into() });
|
||||
assert_eq!(index.line_col(10.into()), LineCol { line: 1, col: 4.into() });
|
||||
assert_eq!(index.line_col(11.into()), LineCol { line: 1, col: 5.into() });
|
||||
assert_eq!(index.line_col(12.into()), LineCol { line: 1, col: 6.into() });
|
||||
assert_eq!(
|
||||
index.line_col(0.into()),
|
||||
LineCol {
|
||||
line: 0,
|
||||
col: 0.into()
|
||||
}
|
||||
);
|
||||
assert_eq!(
|
||||
index.line_col(1.into()),
|
||||
LineCol {
|
||||
line: 0,
|
||||
col: 1.into()
|
||||
}
|
||||
);
|
||||
assert_eq!(
|
||||
index.line_col(5.into()),
|
||||
LineCol {
|
||||
line: 0,
|
||||
col: 5.into()
|
||||
}
|
||||
);
|
||||
assert_eq!(
|
||||
index.line_col(6.into()),
|
||||
LineCol {
|
||||
line: 1,
|
||||
col: 0.into()
|
||||
}
|
||||
);
|
||||
assert_eq!(
|
||||
index.line_col(7.into()),
|
||||
LineCol {
|
||||
line: 1,
|
||||
col: 1.into()
|
||||
}
|
||||
);
|
||||
assert_eq!(
|
||||
index.line_col(8.into()),
|
||||
LineCol {
|
||||
line: 1,
|
||||
col: 2.into()
|
||||
}
|
||||
);
|
||||
assert_eq!(
|
||||
index.line_col(10.into()),
|
||||
LineCol {
|
||||
line: 1,
|
||||
col: 4.into()
|
||||
}
|
||||
);
|
||||
assert_eq!(
|
||||
index.line_col(11.into()),
|
||||
LineCol {
|
||||
line: 1,
|
||||
col: 5.into()
|
||||
}
|
||||
);
|
||||
assert_eq!(
|
||||
index.line_col(12.into()),
|
||||
LineCol {
|
||||
line: 1,
|
||||
col: 6.into()
|
||||
}
|
||||
);
|
||||
|
||||
let text = "\nhello\nworld";
|
||||
let index = LineIndex::new(text);
|
||||
assert_eq!(index.line_col(0.into()), LineCol { line: 0, col: 0.into() });
|
||||
assert_eq!(index.line_col(1.into()), LineCol { line: 1, col: 0.into() });
|
||||
assert_eq!(index.line_col(2.into()), LineCol { line: 1, col: 1.into() });
|
||||
assert_eq!(index.line_col(6.into()), LineCol { line: 1, col: 5.into() });
|
||||
assert_eq!(index.line_col(7.into()), LineCol { line: 2, col: 0.into() });
|
||||
assert_eq!(
|
||||
index.line_col(0.into()),
|
||||
LineCol {
|
||||
line: 0,
|
||||
col: 0.into()
|
||||
}
|
||||
);
|
||||
assert_eq!(
|
||||
index.line_col(1.into()),
|
||||
LineCol {
|
||||
line: 1,
|
||||
col: 0.into()
|
||||
}
|
||||
);
|
||||
assert_eq!(
|
||||
index.line_col(2.into()),
|
||||
LineCol {
|
||||
line: 1,
|
||||
col: 1.into()
|
||||
}
|
||||
);
|
||||
assert_eq!(
|
||||
index.line_col(6.into()),
|
||||
LineCol {
|
||||
line: 1,
|
||||
col: 5.into()
|
||||
}
|
||||
);
|
||||
assert_eq!(
|
||||
index.line_col(7.into()),
|
||||
LineCol {
|
||||
line: 2,
|
||||
col: 0.into()
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user