pub mod boolean;
pub mod ed25519;
pub mod f256;
pub mod f64;
pub mod genid;
pub mod hash;
pub mod iu256;
pub mod linelocation;
pub mod r256;
pub mod range;
pub mod shortstring;
pub mod time;
use crate::id::ExclusiveId;
use crate::id::Id;
use crate::id_hex;
use crate::macros::entity;
use crate::metadata;
use crate::metadata::MetaDescribe;
use crate::trible::Fragment;
use crate::inline::Inline;
use crate::inline::InlineEncoding;
use std::convert::Infallible;
pub struct UnknownInline {}
impl MetaDescribe for UnknownInline {
fn describe() -> Fragment {
let id: Id = id_hex!("4EC697E8599AC79D667C722E2C8BEBF4");
#[allow(unused_mut)]
let mut tribles = entity! {
ExclusiveId::force_ref(&id) @ metadata::tag: metadata::KIND_INLINE_ENCODING
};
#[cfg(feature = "wasm")]
{
tribles += entity! { ExclusiveId::force_ref(&id) @
metadata::value_formatter: wasm_formatter::UNKNOWN_VALUE_WASM,
};
}
tribles
}
}
#[cfg(feature = "wasm")]
mod wasm_formatter {
use core::fmt::Write;
use triblespace_core_macros::value_formatter;
#[value_formatter]
pub(crate) fn unknown_value(raw: &[u8; 32], out: &mut impl Write) -> Result<(), u32> {
out.write_str("unknown:").map_err(|_| 1u32)?;
const TABLE: &[u8; 16] = b"0123456789ABCDEF";
for &byte in raw {
let hi = (byte >> 4) as usize;
let lo = (byte & 0x0F) as usize;
out.write_char(TABLE[hi] as char).map_err(|_| 1u32)?;
out.write_char(TABLE[lo] as char).map_err(|_| 1u32)?;
}
Ok(())
}
}
impl InlineEncoding for UnknownInline {
type ValidationError = Infallible;
type Encoding = Self;
fn validate(value: Inline<Self>) -> Result<Inline<Self>, Self::ValidationError> {
Ok(value)
}
}