Crate spanley

Crate spanley 

Source
Expand description

§Spanley

This is a generic string span library, it is meant for use with tokenizing applications or the likes.

Serde support and API changes are coming soon.

Please do look into string interners before deciding to use this crate to make sure this actually fits your use case. String intering features may also get added on later to this project, but that is a much later spot on the roadmap.

§Example

§Input

use spanley::Span;

let message = "\
  This is my generic string span, his name is Spanley.\n\
  Say hi Spanley!\
";

let spanley = Span::new(message, 57, 11).unwrap();

println!("{}", spanley);

§Output

hi Spanley!

§Features

§location

Adds SpanLocation.

A SpanLocation can be obtained directly from a Span through its related methods.

SpanLocation gets the line and offset for possible logging applications.

§Example

§Input

use spanley::Span;

let message = "\
  This is my generic string span, his name is Spanley.\n\
  Say hi Spanley!\
";

let spanley = Span::new(message, 57, 11).unwrap();
let location = spanley.get_start_location();

println!("{}", location);

§Output

1:4

§location-column

This can only be compiled in conjecture with the location feature flag set to true.

Adds two relatively large extra dependencies, unicode-width and unicode-segmentation

This adds additional fields on SpanLocation (column_offset, column_cjk_offset) which are calculated by the unicode-width crate and the unicode-segmentation crate.

column_offset is then used instead of char_offset in the Display implementation for SpanLocation.

§Example

§Input

use spanley::Span;

let source = "👩‍👩‍👦‍👦👩‍👩‍👦‍👦👩‍👩‍👦‍👦";

// Additional context:
//
// '👩‍👩‍👦‍👦' spans 7 characters behind
// the scenes and 2 columns on a TUI.
// Hence, inputs divisible by 7 and
// Outputs divisible by 2.

let spanley = Span::new(source, 14, 7).unwrap();
let location = spanley.get_start_location();

println!("{}", location.column_offset());

§Output

4

Modules§

container 🔒
error 🔒
location 🔒 location
spanley 🔒

Structs§

Span
A struct that spans over a &str, written as Span<'src>.
SpanContainer
A generic container to bundle a Span<'src> to an instance of type T it is representing. Written as SpanContainer<'src, T>
SpanLocationlocation
A struct used to represent Span’s byte_index field as line and character offset indices. Meant for logging purposes.

Enums§

SpanError
The Error enum used by Span