eosio_macros_internal 0.3.1

Internal use only.
Documentation
use eosio_numstr::name_from_bytes;
use proc_macro2::{Literal, TokenStream};
use quote::{ToTokens, TokenStreamExt};
use syn::{
    parse::{Parse, ParseStream, Result as ParseResult},
    LitStr,
};

pub struct EosioName(u64);

impl Parse for EosioName {
    fn parse(input: ParseStream) -> ParseResult<Self> {
        let name = input.parse::<LitStr>()?.value();
        name_from_bytes(name.bytes())
            .map(Self)
            .map_err(|e| input.error(e))
    }
}

impl ToTokens for EosioName {
    fn to_tokens(&self, tokens: &mut TokenStream) {
        tokens.append(Literal::u64_suffixed(self.0))
    }
}