use dcbor::prelude::*;
use crate::{Envelope, FormatContextOpt};
#[derive(Clone, Default)]
pub struct HexFormatOpts<'a> {
annotate: bool,
context: FormatContextOpt<'a>,
}
impl<'a> From<HexFormatOpts<'a>> for dcbor::HexFormatOpts<'a> {
fn from(opts: HexFormatOpts<'a>) -> Self {
dcbor::HexFormatOpts::default()
.annotate(opts.annotate)
.context(opts.context.into())
}
}
impl<'a> HexFormatOpts<'a> {
pub fn annotate(mut self, annotate: bool) -> Self {
self.annotate = annotate;
self
}
pub fn context(mut self, context: FormatContextOpt<'a>) -> Self {
self.context = context;
self
}
}
impl Envelope {
pub fn hex_opt<'a>(&self, opts: HexFormatOpts<'a>) -> String {
let cbor: CBOR = self.clone().into();
let hex_opts: dcbor::HexFormatOpts<'a> = opts.into();
cbor.hex_opt(&hex_opts)
}
pub fn hex(&self) -> String {
self.hex_opt(HexFormatOpts::default().annotate(true))
}
}