Skip to main content

StringReader

Struct StringReader 

Source
pub(crate) struct StringReader<'input> {
    input: &'input str,
    total_length: usize,
    cursor: ReaderCursor,
}
Expand description

Reads command input while exposing Brigadier-compatible UTF-16 positions.

Fields§

§input: &'input str§total_length: usize§cursor: ReaderCursor

Implementations§

Source§

impl<'input> StringReader<'input>

Source

pub(crate) fn new(input: &'input str) -> Self

Creates a reader at the beginning of input.

Source

pub(crate) const fn input(&self) -> &'input str

Returns the complete command input.

Source

pub(crate) const fn total_length(&self) -> usize

Returns the input length in UTF-16 code units.

Source

pub(crate) const fn cursor(&self) -> usize

Returns the current position in UTF-16 code units.

Source

pub(crate) const fn byte_cursor(&self) -> usize

Returns the current position in UTF-8 bytes.

Source

pub(crate) const fn remaining_length(&self) -> usize

Returns the remaining length in UTF-16 code units.

Source

pub(crate) const fn can_read(&self) -> bool

Returns whether at least one character remains.

Source

pub(crate) fn can_read_length(&self, length: usize) -> bool

Returns whether length UTF-16 code units remain.

Source

pub(crate) fn peek(&self) -> Option<char>

Returns the next Unicode scalar without advancing the reader.

Source

pub(crate) fn read(&mut self) -> Option<char>

Reads the next Unicode scalar.

Source

pub(crate) fn skip(&mut self) -> bool

Advances past the next Unicode scalar if one remains.

Source

pub(crate) fn read_so_far(&self) -> &'input str

Returns the input before the cursor.

Source

pub(crate) fn remaining(&self) -> &'input str

Returns the input at and after the cursor.

Source

pub(crate) fn read_remaining(&mut self) -> &'input str

Reads all remaining input.

Source

pub(crate) fn advance_bytes(&mut self, bytes: usize) -> bool

Advances by an exact UTF-8 byte count while retaining Brigadier’s UTF-16 cursor.

Source

pub(crate) fn skip_whitespace(&mut self)

Advances past whitespace recognized by Java’s Character.isWhitespace.

Source

pub(crate) fn read_unquoted_string(&mut self) -> &'input str

Reads an unquoted Brigadier string.

Source

pub(crate) fn read_unquoted_token(&mut self) -> &'input str

Reads one custom argument token up to Java-compatible whitespace.

Source

pub(crate) fn read_quoted_string( &mut self, ) -> Result<String, CommandSyntaxError>

Reads a single- or double-quoted Brigadier string.

Source

pub(crate) fn read_string(&mut self) -> Result<String, CommandSyntaxError>

Reads a quoted or unquoted Brigadier string.

Source

pub(crate) fn read_int(&mut self) -> Result<i32, CommandSyntaxError>

Reads a signed 32-bit integer.

Source

pub(crate) fn read_long(&mut self) -> Result<i64, CommandSyntaxError>

Reads a signed 64-bit integer.

Source

pub(crate) fn read_double(&mut self) -> Result<f64, CommandSyntaxError>

Reads a 64-bit floating-point number.

Source

pub(crate) fn read_float(&mut self) -> Result<f32, CommandSyntaxError>

Reads a 32-bit floating-point number.

Source

pub(crate) fn read_boolean(&mut self) -> Result<bool, CommandSyntaxError>

Reads a lowercase Brigadier boolean.

Source

pub(crate) fn expect( &mut self, expected: char, ) -> Result<(), CommandSyntaxError>

Consumes expected or returns a contextual syntax error.

Source

pub(super) fn try_read_literal(&mut self, literal: &str) -> bool

Source

fn read_string_until( &mut self, terminator: char, ) -> Result<String, CommandSyntaxError>

Source

fn read_number<T>( &mut self, expected: CommandSyntaxErrorKind, invalid: fn(Box<str>) -> CommandSyntaxErrorKind, ) -> Result<T, CommandSyntaxError>
where T: FromStr,

Source

pub(crate) const fn checkpoint(&self) -> ReaderCursor

Captures the current reader position for later restoration.

Source

pub(crate) const fn restore(&mut self, checkpoint: ReaderCursor)

Restores a position previously returned by Self::checkpoint.

Source

pub(crate) fn error(&self, kind: CommandSyntaxErrorKind) -> CommandSyntaxError

Creates a syntax error at the current reader position.

Source

const fn is_allowed_number(character: char) -> bool

Source

const fn is_quoted_string_start(character: char) -> bool

Source

const fn is_allowed_in_unquoted_string(character: char) -> bool

Trait Implementations§

Source§

impl<'input> Clone for StringReader<'input>

Source§

fn clone(&self) -> StringReader<'input>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<'input> Debug for StringReader<'input>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'input> Freeze for StringReader<'input>

§

impl<'input> RefUnwindSafe for StringReader<'input>

§

impl<'input> Send for StringReader<'input>

§

impl<'input> Sync for StringReader<'input>

§

impl<'input> Unpin for StringReader<'input>

§

impl<'input> UnsafeUnpin for StringReader<'input>

§

impl<'input> UnwindSafe for StringReader<'input>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoShared for T

Source§

fn into_shared(self) -> Arc<Mutex<RawMutex, Self>>

Wraps this value in an Arc<SyncMutex<>>
§

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
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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>,

Source§

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>,

Source§

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<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more