### 4 releases

0.2.1 | Aug 11, 2020 |
---|---|

0.2.0 | Jul 18, 2020 |

0.1.1 | Jul 13, 2020 |

0.1.0 | Jul 13, 2020 |

#**439** in Algorithms

**13,109** downloads per month

Used in **25** crates
(12 directly)

**MIT**license

11KB

110 lines

# line-col

A simple crate for calculating 1-based line/col numbers for a string slice.

## Example

`use` `line_col``::`LineColLookup`;`
`let` text `=` `"`One`\n`Two`"``;`
`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)

## Column calculation methods

This crate offers two methods for calculating the column number.

The

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 `LineColLookup ::`get

`grapheme-clusters`

feature and use `LineColLookup``::`get_by_cluster

.## Changelog

### 0.2.1

now defers line head table generation until first lookup`LineColLookup`

### 0.2.0

- Move cluster-specific

implementation into its own method,`LineColLookup`get`::``LineColLookup`get_by_cluster`::` - Remove unnecessary feature filters on some tests

### 0.1.1

- Fixed documentation typos
- Use extended grapheme clustering

### 0.1.0

Initial version

#### Dependencies

~135KB