Crates.io | line-col |
lib.rs | line-col |
version | 0.2.1 |
source | src |
created_at | 2020-07-13 02:30:36.693861 |
updated_at | 2020-08-11 23:27:20.222255 |
description | Convert string slice indices into line/column numbers |
homepage | |
repository | https://github.com/TheBerkin/line-col-rs |
max_upload_size | |
id | 264592 |
size | 11,452 |
A simple crate for calculating 1-based line/col numbers for a string slice.
use line_col::LineColLookup;
let text = "One\nTwo";
let lookup = LineColLookup::new(text);
assert_eq!(lookup.get(0), (1, 1)); // 'O' (line 1, col 1)
assert_eq!(lookup.get(1), (1, 2)); // 'n' (line 1, col 2)
assert_eq!(lookup.get(2), (1, 3)); // 'e' (line 1, col 3)
assert_eq!(lookup.get(4), (2, 1)); // 'T' (line 2, col 1)
assert_eq!(lookup.get(5), (2, 2)); // 'w' (line 2, col 2)
assert_eq!(lookup.get(6), (2, 3)); // 'o' (line 2, col 3)
assert_eq!(lookup.get(7), (2, 4)); // <end> (line 2, col 4)
This crate offers two methods for calculating the column number.
The LineColLookup::get
method counts the number of bytes from the start of the line (plus one).
However, this does not account for grapheme clusters (e.g. complex accented characters, emoji, etc.)
If you would like to calculate the column based on the number of grapheme clusters instead, enable
the grapheme-clusters
feature and use LineColLookup::get_by_cluster
.
LineColLookup
now defers line head table generation until first lookupLineColLookup::get
implementation into its own method, LineColLookup::get_by_cluster
Initial version