Skip to main content

haystack_core/codecs/zinc/
mod.rs

1// Zinc wire format codec — the primary text-based wire format for Haystack.
2
3mod encoder;
4mod parser;
5
6pub use encoder::{encode_grid, encode_meta, encode_scalar, escape_str};
7pub use parser::{ZincParser, decode_grid, decode_scalar};
8
9use super::{Codec, CodecError};
10use crate::data::HGrid;
11use crate::kinds::Kind;
12
13/// Zinc wire format codec.
14pub struct ZincCodec;
15
16impl Codec for ZincCodec {
17    fn mime_type(&self) -> &str {
18        "text/zinc"
19    }
20
21    fn encode_grid(&self, grid: &HGrid) -> Result<String, CodecError> {
22        encode_grid(grid)
23    }
24
25    fn decode_grid(&self, input: &str) -> Result<HGrid, CodecError> {
26        decode_grid(input)
27    }
28
29    fn encode_scalar(&self, val: &Kind) -> Result<String, CodecError> {
30        encode_scalar(val)
31    }
32
33    fn decode_scalar(&self, input: &str) -> Result<Kind, CodecError> {
34        decode_scalar(input)
35    }
36}