Struct stam::TextResource

source ·
pub struct TextResource { /* private fields */ }
Expand description

This holds the textual resource to be annotated. It holds the full text in memory.

The text SHOULD be in Unicode Normalization Form C (NFC) but MAY be in another unicode normalization forms.

Implementations§

source§

impl TextResource

source

pub fn new(id: impl Into<String>, config: Config) -> Self

Instantiates a new completely empty TextResource

source

pub fn from_file(filename: &str, config: Config) -> Result<Self, StamError>

Create a new TextResource from file, the text will be loaded into memory entirely

source

pub fn with_string(self, text: impl Into<String>) -> Self

Sets the text of the TextResource from string, kept in memory entirely The use of Self::from_string() is preferred instead. This method can be dangerous if it modifies any existing text of a resource.

source

pub fn to_txt_file(&self, filename: &str) -> Result<(), StamError>

Writes a plain text file

source

pub fn from_string( id: impl Into<String>, text: impl Into<String>, config: Config ) -> Self

Create a new TextResource from string, kept in memory entirely

source

pub fn known_textselection( &self, offset: &Offset ) -> Result<Option<TextSelectionHandle>, StamError>

Finds a known text selection, as specified by the offset. Known textselections are associated with an annotation. Returns a handle. Use the higher-level method FindText::textselection() instead if you want to return a textselection regardless of whether it’s known or not.

source

pub fn textselection_by_offset( &self, offset: &Offset ) -> Result<TextSelection, StamError>

Low-level method to get a textselection, if the text selection is known, its’ handle will be set If you don’t care about unbound textselection but only known ones, then use Self::known_textselection() instead.

source

pub fn textselections_unsorted(&self) -> impl Iterator<Item = &TextSelection>

Low-level method returning an unsorted iterator over all textselections in this resource Use this only if order doesn’t matter for. For a sorted version, use Self::iter() or Self::range() instead.

source

pub fn textselections_len(&self) -> usize

source

pub fn range<'a>(&'a self, begin: usize, end: usize) -> TextSelectionIter<'a>

Returns a sorted double-ended iterator over a range of all textselections and returns all textselections (in order) that either start or end in this range (depending on the direction you’re iterating in).

source

pub fn iter<'a>(&'a self) -> TextSelectionIter<'a>

Returns a sorted double-ended iterator over all textselections in this resource. For unsorted (slightly more performant), use TextResource::textselections_unsorted() instead.

source

pub fn positions<'a>( &'a self, mode: PositionMode ) -> Box<dyn Iterator<Item = &'a usize> + 'a>

Returns a sorted iterator over all absolute positions (begin aligned cursors) that are in use. By passing a PositionMode parameter you can specify whether you want only positions where a textselection begins, ends or both.

source

pub fn positions_in_range<'a>( &'a self, mode: PositionMode, begin: usize, end: usize ) -> Box<dyn Iterator<Item = &'a usize> + 'a>

Returns a sorted iterator over all absolute positions (begin aligned cursors) that are in use within a certain range. By passing a PositionMode parameter you can specify whether you want only positions where a textselection begins, ends or both.

source

pub fn position(&self, index: usize) -> Option<&PositionIndexItem>

Lookup a position (unicode point) in the PositionIndex. Low-level function. Only works for positions at which a TextSelection starts or ends (non-inclusive), returns None otherwise

source

pub fn positionindex_len(&self) -> usize

Returns the number of positions in the positionindex

source

pub fn meminfo(&self) -> usize

Returns a lower-bound estimate of memory usage in bytes

source

pub fn shrink_to_fit(&mut self)

Trait Implementations§

source§

impl AssociatedFile for TextResource

source§

fn filename(&self) -> Option<&str>

Get the filename for stand-off file specified using @include (if any)

source§

fn set_filename(&mut self, filename: &str) -> &mut Self

Get the filename for stand-off file specified using @include (if any)

source§

fn with_filename(self, filename: &str) -> Self
where Self: Sized,

source§

fn filename_without_extension(&self) -> Option<&str>

Returns the filename without (known!) extension. The extension must be a known extension used by STAM for this to work.
source§

fn filename_without_workdir(&self) -> Option<&str>

Serializes the filename ready for use with STAM JSON’s @include or STAM CSV. It basically only strips the workdir component, if any.
source§

impl Clone for TextResource

source§

fn clone(&self) -> TextResource

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Configurable for TextResource

source§

fn config(&self) -> &Config

source§

fn config_mut(&mut self) -> &mut Config

source§

fn set_config(&mut self, config: Config) -> &mut Self

Setter to associate a configuration
source§

fn with_config(self, config: Config) -> Self

Builder pattern to associate a configuration
source§

impl DataSize for TextResource

source§

const IS_DYNAMIC: bool = true

If true, the type has a heap size that can vary at runtime, depending on the actual value.
source§

const STATIC_HEAP_SIZE: usize = 0usize

The amount of space a value of the type always occupies. If IS_DYNAMIC is false, this is the total amount of heap memory occupied by the value. Otherwise this is a lower bound.
source§

fn estimate_heap_size(&self) -> usize

Estimates the size of heap memory taken up by this value. Read more
source§

impl Debug for TextResource

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'bytes, Ctx> Decode<'bytes, Ctx> for TextResource

source§

fn decode( __d777: &mut Decoder<'bytes>, __ctx777: &mut Ctx ) -> Result<TextResource, Error>

Decode a value using the given Decoder. Read more
source§

fn nil() -> Option<Self>

If possible, return a nil value of Self. Read more
source§

impl<Ctx> Encode<Ctx> for TextResource

source§

fn encode<__W777>( &self, __e777: &mut Encoder<__W777>, __ctx777: &mut Ctx ) -> Result<(), Error<__W777::Error>>
where __W777: Write,

Encode a value of this type using the given Encoder. Read more
source§

fn is_nil(&self) -> bool

Is this value of Self a nil value? Read more
source§

impl PartialEq for TextResource

source§

fn eq(&self, other: &TextResource) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for TextResource

source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<'a> Request<TextResource> for TextResourceHandle

source§

fn to_handle<'store, S>(&self, _store: &'store S) -> Option<TextResourceHandle>

Returns the handle for this item, looking it up in the store
source§

fn requested_id(&self) -> Option<&str>

If this type encapsulates an Id, this returns it (borrowed)
source§

fn requested_id_owned(self) -> Option<String>

If this type encapsulates an Id, this returns it (oened)
source§

fn requested_handle(&self) -> Option<T::HandleType>

If this type encapsulates a handle, this returns it
source§

fn any(&self) -> bool

Represents a request for any value in certain contexts
source§

impl SelfSelector for TextResource

source§

fn to_selector(&self) -> Result<Selector, StamError>

Returns a selector to this resource

source§

impl Serialize for TextResource

source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Storable for TextResource

§

type HandleType = TextResourceHandle

§

type StoreHandleType = ()

§

type FullHandleType = <TextResource as Storable>::HandleType

§

type StoreType = AnnotationStore

source§

fn id(&self) -> Option<&str>

Get the public identifier
source§

fn handle(&self) -> Option<TextResourceHandle>

Retrieve the internal (numeric) id. For any type T in StoreFor<T>, this may return None only in the initial stage when it is still unbounded to a store, so this is almost always safe to unwrap when used in the public API.
source§

fn with_id(self, id: impl Into<String>) -> Self

Builder pattern to set the public ID
source§

fn with_handle(self, handle: TextResourceHandle) -> Self

Set the internal ID for an item. May only be called once just after instantiation. This is a low-level API method that can not be used publicly due to ownership restrictions.
source§

fn carries_id() -> bool

Does this type support an ID?
source§

fn fullhandle( _storehandle: Self::StoreHandleType, handle: Self::HandleType ) -> Self::FullHandleType

source§

fn handle_or_err(&self) -> Result<Self::HandleType, StamError>

Like Self::handle() but returns a StamError::Unbound error if there is no internal id.
source§

fn temp_id(&self) -> Result<String, StamError>

Generate a temporary public ID based on the internal handle.
source§

fn as_resultitem<'store>( &'store self, store: &'store Self::StoreType, rootstore: &'store AnnotationStore ) -> ResultItem<'store, Self>
where Self: Sized,

Returns the item of type T as a ResultItem<T>, i.e. a wrapped reference that includes a reference to both this item as well as the store that owns it. All high-level API functions are implemented on such Result types. You should not need to invoke this yourself.
source§

fn generate_id(self, idmap: Option<&mut IdMap<Self::HandleType>>) -> Self
where Self: Sized,

Generate a random ID in a given idmap (adds it to the map and assigns it to the item) This is a low-level API method that can not be used publicly due to ownership restrictions.
source§

impl StoreFor<TextResource> for AnnotationStore

source§

fn store(&self) -> &Store<TextResource>

Get a reference to the entire store for the associated type

source§

fn store_mut(&mut self) -> &mut Store<TextResource>

Get a mutable reference to the entire store for the associated type

source§

fn idmap(&self) -> Option<&IdMap<TextResourceHandle>>

Get a reference to the id map for the associated type, mapping global ids to internal ids

source§

fn idmap_mut(&mut self) -> Option<&mut IdMap<TextResourceHandle>>

Get a mutable reference to the id map for the associated type, mapping global ids to internal ids

source§

fn store_typeinfo() -> &'static str

source§

fn insert(&mut self, item: T) -> Result<T::HandleType, StamError>

Adds an item to the store. Returns a handle to it upon success.
source§

fn add(self, item: T) -> Result<Self, StamError>
where Self: Sized,

Inserts items into the store using a builder pattern
source§

fn has(&self, item: impl Request<T>) -> bool

Returns true if the store has the item
source§

unsafe fn get_unchecked(&self, handle: T::HandleType) -> Option<&T>

Get a reference to an item from the store, by handle, without checking validity. Read more
source§

fn get(&self, item: impl Request<T>) -> Result<&T, StamError>

Get a reference to an item from the store This is a low-level API method, you usually want to use dedicated high-level methods like AnnotationStore::annotation() instead.
source§

fn get_mut(&mut self, item: impl Request<T>) -> Result<&mut T, StamError>

Get a mutable reference to an item from the store by internal ID This is a low-level API method
source§

fn remove(&mut self, handle: T::HandleType) -> Result<(), StamError>

Removes an item by handle, returns an error if the item has dependencies and can’t be removed
source§

fn resolve_id(&self, id: &str) -> Result<T::HandleType, StamError>

Resolves an ID to a handle. Also works for temporary IDs if enabled. This is a low-level API method. You usually don’t want to call this directly.
source§

fn iter(&self) -> StoreIter<'_, T>
where T: Storable<StoreType = Self>,

Iterate over all items in the store This is a low-level API method, use dedicated high-level iterators like annotations(), resources() instead.
source§

fn iter_mut(&mut self) -> StoreIterMut<'_, T>

Iterate over the store, mutably This is a low-level API method.
source§

fn next_handle(&self) -> T::HandleType

Return the internal id that will be assigned for the next item to the store This is a low-level API method.
source§

fn last_handle(&self) -> T::HandleType

Return the internal id that was assigned to last inserted item This is a low-level API method.
source§

impl StoreFor<TextSelection> for TextResource

source§

fn store(&self) -> &Store<TextSelection>

Get a reference to the entire store for the associated type

source§

fn store_mut(&mut self) -> &mut Store<TextSelection>

Get a mutable reference to the entire store for the associated type

source§

fn idmap(&self) -> Option<&IdMap<TextSelectionHandle>>

Get a reference to the id map for the associated type, mapping global ids to internal ids

source§

fn idmap_mut(&mut self) -> Option<&mut IdMap<TextSelectionHandle>>

Get a mutable reference to the id map for the associated type, mapping global ids to internal ids

source§

fn store_typeinfo() -> &'static str

source§

fn insert(&mut self, item: T) -> Result<T::HandleType, StamError>

Adds an item to the store. Returns a handle to it upon success.
source§

fn add(self, item: T) -> Result<Self, StamError>
where Self: Sized,

Inserts items into the store using a builder pattern
source§

fn has(&self, item: impl Request<T>) -> bool

Returns true if the store has the item
source§

unsafe fn get_unchecked(&self, handle: T::HandleType) -> Option<&T>

Get a reference to an item from the store, by handle, without checking validity. Read more
source§

fn get(&self, item: impl Request<T>) -> Result<&T, StamError>

Get a reference to an item from the store This is a low-level API method, you usually want to use dedicated high-level methods like AnnotationStore::annotation() instead.
source§

fn get_mut(&mut self, item: impl Request<T>) -> Result<&mut T, StamError>

Get a mutable reference to an item from the store by internal ID This is a low-level API method
source§

fn remove(&mut self, handle: T::HandleType) -> Result<(), StamError>

Removes an item by handle, returns an error if the item has dependencies and can’t be removed
source§

fn resolve_id(&self, id: &str) -> Result<T::HandleType, StamError>

Resolves an ID to a handle. Also works for temporary IDs if enabled. This is a low-level API method. You usually don’t want to call this directly.
source§

fn iter(&self) -> StoreIter<'_, T>
where T: Storable<StoreType = Self>,

Iterate over all items in the store This is a low-level API method, use dedicated high-level iterators like annotations(), resources() instead.
source§

fn iter_mut(&mut self) -> StoreIterMut<'_, T>

Iterate over the store, mutably This is a low-level API method.
source§

fn next_handle(&self) -> T::HandleType

Return the internal id that will be assigned for the next item to the store This is a low-level API method.
source§

fn last_handle(&self) -> T::HandleType

Return the internal id that was assigned to last inserted item This is a low-level API method.
source§

impl<'store> Text<'store, 'store> for TextResource

source§

fn textlen(&self) -> usize

Returns the length of the text in unicode points For bytes, use self.text().len() instead.

source§

fn text(&'store self) -> &'store str

Returns a reference to the full text of this resource

source§

fn text_by_offset( &'store self, offset: &Offset ) -> Result<&'store str, StamError>

Returns a string reference to a slice of text as specified by the offset

source§

fn utf8byte(&self, abscursor: usize) -> Result<usize, StamError>

Resolves a begin aligne cursor to UTF-8 byteposition If you have a Cursor instance, pass it through Self::beginaligned_cursor() first.

source§

fn utf8byte_to_charpos(&self, bytecursor: usize) -> Result<usize, StamError>

Convert utf8 byte to unicode point. O(n), not as efficient as the reverse operation in Self::utf8byte()

source§

fn subslice_utf8_offset(&self, subslice: &str) -> Option<usize>

Finds the utf-8 byte position where the specified text subslice begins

source§

fn absolute_cursor(&self, cursor: usize) -> usize

Resolves a begin-aligned cursor to an absolute cursor (i.e. relative to the TextResource).
source§

fn is_empty(&'slf self) -> bool

source§

fn absolute_offset(&'slf self, offset: &Offset) -> Result<Offset, StamError>

Resolves a relative offset (relative to another TextSelection) to an absolute one (in terms of to the underlying TextResource)
source§

fn beginaligned_cursor(&'slf self, cursor: &Cursor) -> Result<usize, StamError>

Resolves a cursor to a begin aligned cursor, resolving all relative end-aligned positions
source§

impl ToJson for TextResource

source§

fn to_json_writer<W>(&self, writer: W, compact: bool) -> Result<(), StamError>
where W: Write,

Writes a serialisation (choose a dataformat) to any writer Lower-level function
source§

fn to_json_file(&self, filename: &str, config: &Config) -> Result<(), StamError>

Writes this structure to a file The actual dataformat can be set via config, the default is STAM JSON.
source§

fn to_json_string(&self, config: &Config) -> Result<String, StamError>

Serializes this structure to one string. The actual dataformat can be set via config, the default is STAM JSON. If config not not specified, an attempt to fetch the AnnotationStore’s initial config is made
source§

impl TryFrom<TextResourceBuilder> for TextResource

§

type Error = StamError

The type returned in the event of a conversion error.
source§

fn try_from(builder: TextResourceBuilder) -> Result<Self, StamError>

Performs the conversion.
source§

impl TypeInfo for TextResource

source§

fn typeinfo() -> Type

Return the type (introspection).
source§

fn temp_id_prefix() -> &'static str

Return the prefix for temporary identifiers of this type

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V