Skip to main content

Text

Struct Text 

Source
pub struct Text { /* private fields */ }
Expand description

In-memory representation of a decoded text file.

Stores the text contents along with encoding and format metadata. The encoding is preserved when re-encoding to maintain file compatibility.

§Fields

  • encoding - Character encoding detected or specified for the file
  • format - File format detected from extension (for syntax highlighting)
  • contents - Decoded text contents as a UTF-8 Rust string

§Getters/Setters

All fields have public getters, mutable getters, and setters via the getset crate:

  • encoding(), encoding_mut(), set_encoding()
  • format(), format_mut(), set_format()
  • contents(), contents_mut(), set_contents()

§Example

use rpfm_lib::files::{Decodeable, text::Text, DecodeableExtraData};
use std::io::Cursor;

let data = b"Hello, World!";
let mut reader = Cursor::new(data);
let text = Text::decode(&mut reader, &None).unwrap();

assert_eq!(text.contents(), "Hello, World!");

Implementations§

Source§

impl Text

Source

pub fn encoding(&self) -> &Encoding

Character encoding of the file.

Source

pub fn format(&self) -> &TextFormat

Detected file format based on extension.

Source

pub fn contents(&self) -> &String

Decoded text contents.

Source§

impl Text

Source

pub fn encoding_mut(&mut self) -> &mut Encoding

Character encoding of the file.

Source

pub fn format_mut(&mut self) -> &mut TextFormat

Detected file format based on extension.

Source

pub fn contents_mut(&mut self) -> &mut String

Decoded text contents.

Source§

impl Text

Source

pub fn set_encoding(&mut self, val: Encoding) -> &mut Self

Character encoding of the file.

Source

pub fn set_format(&mut self, val: TextFormat) -> &mut Self

Detected file format based on extension.

Source

pub fn set_contents(&mut self, val: String) -> &mut Self

Decoded text contents.

Source§

impl Text

Source

pub fn detect_encoding<R: ReadBytes>(data: &mut R) -> Result<Encoding>

Detects the character encoding of text data.

Examines the data stream to determine its encoding by checking for Byte Order Marks (BOMs) and attempting to decode as different encodings.

§Detection Algorithm
  1. UTF-8 BOM: Checks for 0xEF 0xBB 0xBF at the start
  2. UTF-16 LE BOM: Checks for 0xFF 0xFE at the start
  3. UTF-8 without BOM: Attempts to decode entire file as UTF-8
  4. ISO-8859-1: Attempts to decode as ISO-8859-1
§Arguments
  • data - Reader positioned at the start of the text data
§Returns

The detected Encoding, or an error if no supported encoding matches.

§Errors

Returns RLibError::DecodingTextUnsupportedEncodingOrNotATextFile if:

  • The data cannot be decoded as any supported encoding
  • The file is not actually a text file
§Side Effects

After detection, the reader is repositioned:

  • After the BOM if one was found
  • At the start if no BOM was found

Trait Implementations§

Source§

impl Clone for Text

Source§

fn clone(&self) -> Text

Returns a duplicate 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 Debug for Text

Source§

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

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

impl Decodeable for Text

Source§

fn decode<R: ReadBytes>( data: &mut R, extra_data: &Option<DecodeableExtraData<'_>>, ) -> Result<Self>

Decodes binary data into the implementing type. Read more
Source§

impl Default for Text

Source§

fn default() -> Text

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Text

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Encodeable for Text

Source§

fn encode<W: WriteBytes>( &mut self, buffer: &mut W, _extra_data: &Option<EncodeableExtraData<'_>>, ) -> Result<()>

Encodes the implementing type into binary data. Read more
Source§

impl PartialEq for Text

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for Text

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 Eq for Text

Source§

impl StructuralPartialEq for Text

Auto Trait Implementations§

§

impl Freeze for Text

§

impl RefUnwindSafe for Text

§

impl Send for Text

§

impl Sync for Text

§

impl Unpin for Text

§

impl UnsafeUnpin for Text

§

impl UnwindSafe for Text

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.

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
§

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<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
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.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,