[−][src]Enum byml::Byml
Represents a Nintendo binary YAML (BYML) document or node. A Byml will usually be constructed
from binary data or a YAML string, e.g.
let buf: Vec<u8> = std::fs::read("A-1_Static.smubin")?; let map_unit = Byml::from_binary(&buf)?; let text: String = std::fs::read_to_string("A-1_Static.yml")?; let map_unit2 = Byml::from_text(&text)?; assert_eq!(map_unit, map_unit2);
You can also easily serialize to binary or a YAML string.
let buf: Vec<u8> = std::fs::read("A-1_Static.smubin")?; let map_unit = Byml::from_binary(&buf)?; std::fs::write("A-1_Static.yml", &map_unit.to_text()?)?; std::fs::write("A-1_Static.copy.mubin", &map_unit.to_binary(Endian::Big, 2)?)?;
A number of convenience getters are available which return a result for a variant value:
let doc = Byml::from_binary(&some_data)?; let hash: &BTreeMap<String, Byml> = doc.as_hash()?;
Most of the node types are fairly self-explanatory. Arrays are implemented as Vec<Byml>, and
hash nodes as BTreeMap<String, Byml>. Floats (f32) and doubles (f64) use wrapper types that
support Eq. These can be converted with into(). You can also query the node type with
get_type().
For convenience, a Byml known to be an array or hash node can be indexed. Panics if the
node has the wrong type or if the index is not found.
let buf: Vec<u8> = std::fs::read("ActorInfo.product.sbyml")?; let actor_info = Byml::from_binary(&buf)?; assert_eq!(actor_info["Actors"].as_array()?.len(), 7934); assert_eq!(actor_info["Hashes"][0].as_int()?, 31119);
Variants
String(String)Bool(bool)Int(i32)Float(Float)UInt(u32)Int64(i64)UInt64(u64)Double(Double)Implementations
impl Byml[src]
pub fn from_binary<B: AsRef<[u8]>>(data: &B) -> Result<Byml, Box<dyn Error>>[src]
pub fn read_binary<R: Read + Seek>(
reader: &mut R
) -> Result<Byml, Box<dyn Error>>[src]
reader: &mut R
) -> Result<Byml, Box<dyn Error>>
impl Byml[src]
pub fn to_binary(
&self,
endian: Endian,
version: u16
) -> Result<Vec<u8>, WriteError>[src]
&self,
endian: Endian,
version: u16
) -> Result<Vec<u8>, WriteError>
Serialize the document to binary data with the specified endianness and version. Only hash, array, or null nodes can be used.
pub fn to_compressed_binary(
&self,
endian: Endian,
version: u16
) -> Result<Vec<u8>, WriteError>[src]
&self,
endian: Endian,
version: u16
) -> Result<Vec<u8>, WriteError>
Serialize the document to binary data with the specified endianness and version and yaz0 compress it. Only hash, array, or null nodes can be used.
pub fn write_binary<W: Write + Seek>(
&self,
writer: &mut W,
endian: Endian,
version: u16
) -> Result<(), WriteError>[src]
&self,
writer: &mut W,
endian: Endian,
version: u16
) -> Result<(), WriteError>
Write the binary serialized BYML document to a writer with the specified endianness and version. Only hash, array, or null nodes can be used.
impl Byml[src]
pub fn to_text(&self) -> Result<String, Box<dyn Error>>[src]
Serialize the document to a YAML string. The YAML output is fully compatible with the oead
and byml Python libraries.
impl Byml[src]
pub fn from_text(text: &str) -> Result<Byml, Box<dyn Error>>[src]
Read a BYML document from a YAML string. The input YAML format is the same as that used
by the byml and oead Python libraries.
impl Byml[src]
pub fn is_container(&self) -> bool[src]
Returns whether the node is an array or hash
pub fn is_value(&self) -> bool[src]
Returns whether the node is an inline value (Int, UInt, Float, or Bool)
pub fn is_string(&self) -> bool[src]
Do I even need to document this one?
pub fn get_type(&self) -> NodeType[src]
Gets the node type
pub fn as_hash(&self) -> Result<&BTreeMap<String, Byml>, TypeError>[src]
Returns a result with a reference to the inner BYML hash or a type error
pub fn as_array(&self) -> Result<&Vec<Byml>, TypeError>[src]
Returns a result with a reference to the inner BYML array or a type error
pub fn as_binary(&self) -> Result<&Vec<u8>, TypeError>[src]
Returns a result with a reference to the inner BYML binary data or a type error
pub fn as_bool(&self) -> Result<bool, TypeError>[src]
Returns a result with the inner boolean value or a type error
pub fn as_string(&self) -> Result<&String, TypeError>[src]
Returns a result with a reference to the inner string or a type error
pub fn as_int(&self) -> Result<i32, TypeError>[src]
Returns a result with the inner i32 value or a type error
pub fn as_int64(&self) -> Result<i64, TypeError>[src]
Returns a result with the inner i64 value or a type error
pub fn as_uint(&self) -> Result<u32, TypeError>[src]
Returns a result with the inner u32 value or a type error
pub fn as_uint64(&self) -> Result<u64, TypeError>[src]
Returns a result with the inner u64 value or a type error
pub fn as_float(&self) -> Result<f32, TypeError>[src]
Returns a result with the inner f32 value or a type error
pub fn as_double(&self) -> Result<f64, TypeError>[src]
Returns a result with the inner f64 value or a type error
pub fn as_mut_hash(&mut self) -> Result<&mut BTreeMap<String, Byml>, TypeError>[src]
Returns a result with a mutable reference to the inner BYML hash or a type error
pub fn as_mut_array(&mut self) -> Result<&mut Vec<Byml>, TypeError>[src]
Returns a result with a mutable reference to the inner BYML array or a type error
pub fn as_mut_binary(&mut self) -> Result<&mut Vec<u8>, TypeError>[src]
Returns a result with a mutable reference to the inner binary data or a type error
pub fn as_mut_string(&mut self) -> Result<&mut String, TypeError>[src]
Returns a result with a mutable reference to the inner string or a type error
pub fn as_mut_int(&mut self) -> Result<&mut i32, TypeError>[src]
Returns a result with a mutable reference to the inner i32 or a type error
pub fn as_mut_int64(&mut self) -> Result<&mut i64, TypeError>[src]
Returns a result with a mutable reference to the inner i64 or a type error
pub fn as_mut_uint(&mut self) -> Result<&mut u32, TypeError>[src]
Returns a result with a mutable reference to the inner u32 or a type error
pub fn as_mut_uint64(&mut self) -> Result<&mut u64, TypeError>[src]
Returns a result with a mutable reference to the inner u64 or a type error
pub fn is_null(&self) -> bool[src]
Checks if the node is a null value
Trait Implementations
impl Clone for Byml[src]
impl Debug for Byml[src]
impl Default for Byml[src]
impl Eq for Byml[src]
impl Hash for Byml[src]
fn hash<__H: Hasher>(&self, state: &mut __H)[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher, 1.3.0[src]
H: Hasher,
impl<'a, I> Index<I> for Byml where
I: Into<BymlIndex<'a>>, [src]
I: Into<BymlIndex<'a>>,
impl PartialEq<Byml> for Byml[src]
impl StructuralEq for Byml[src]
Auto Trait Implementations
impl RefUnwindSafe for Byml
impl Send for Byml
impl Sync for Byml
impl Unpin for Byml
impl UnwindSafe for Byml
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<Q, K> Equivalent<K> for Q where
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized, [src]
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
pub fn equivalent(&self, key: &K) -> bool[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T> Pointable for T
pub const ALIGN: usize
type Init = T
The type for initializers.
pub unsafe fn init(init: <T as Pointable>::Init) -> usize
pub unsafe fn deref<'a>(ptr: usize) -> &'a T
pub unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T
pub unsafe fn drop(ptr: usize)
impl<T> ToOwned for T where
T: Clone, [src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn clone_into(&self, target: &mut T)[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,