Try to add S-Expressions (LISP family)
This commit is contained in:
parent
f17e13fe25
commit
20022a54e8
@ -26,11 +26,15 @@ serde-transcode = "1.1.1"
|
||||
# Should tend to be equal to the official list of data formats supported by serde: https://serde.rs/#data-formats
|
||||
#bson = "2.3"
|
||||
#ciborium = "0.2"
|
||||
#envy = "0.4" # No `Deserializer` exposed.
|
||||
#envy-store = "0.1" # No `Deserializer` exposed.
|
||||
serde_json = "1.0"
|
||||
json5 = "0.4"
|
||||
#serde-lexpr = "0.1"
|
||||
serde-pickle = "1.0"
|
||||
serde_qs = "0.10"
|
||||
rmp-serde = "1.1"
|
||||
ron = "0.8"
|
||||
#toml = "0.5"
|
||||
serde_yaml = "0.9"
|
||||
|
24
src/lib.rs
24
src/lib.rs
@ -27,6 +27,7 @@ pub enum Input {
|
||||
//Cbor,
|
||||
Json,
|
||||
Json5,
|
||||
//SExpression,
|
||||
Pickle,
|
||||
//Qs, // NOTE: The crate is not noted "(serialization only)" on the [serde listing](https://serde.rs/#data-formats) but it does not expose a `Deserializer`
|
||||
//Rmp, // NOTE: It appears that we are forced to deserialize into a concrete type
|
||||
@ -41,6 +42,7 @@ pub enum Output {
|
||||
//Cbor,
|
||||
Json,
|
||||
//Json5, // NOTE: The crate is not noted "(deserialization only)" on the [serde listing](https://serde.rs/#data-formats) but it does not expose a `Serializer`
|
||||
//SExpression,
|
||||
Pickle,
|
||||
Qs,
|
||||
Rmp,
|
||||
@ -72,8 +74,8 @@ fn de(opt: &Opt, input: &mut dyn Read, output: &mut dyn Write) {
|
||||
Input::Bson => {
|
||||
use bson::Deserializer;
|
||||
|
||||
let mut deserializer = bson::from_reader(input).unwrap(); // FIXME: need which type annotation?
|
||||
ser(opt, &mut deserializer, output);
|
||||
let deserializer = bson::from_reader(input).unwrap(); // FIXME: can we skip the type annotation?
|
||||
ser(opt, deserializer, output);
|
||||
}
|
||||
*/
|
||||
Input::Json => {
|
||||
@ -93,6 +95,14 @@ fn de(opt: &Opt, input: &mut dyn Read, output: &mut dyn Write) {
|
||||
let mut deserializer = Deserializer::from_str(&buf).unwrap();
|
||||
ser(opt, &mut deserializer, output);
|
||||
}
|
||||
/*
|
||||
Input::SExpression => {
|
||||
use serde_lexpr as Deserializer;
|
||||
|
||||
let deserializer = Deserializer::from_reader(input).unwrap(); // FIXME: can we skip the type annotation?
|
||||
ser(opt, deserializer, output);
|
||||
}
|
||||
*/
|
||||
Input::Pickle => {
|
||||
use serde_pickle::Deserializer;
|
||||
|
||||
@ -135,7 +145,7 @@ where
|
||||
options.human_readable(false)
|
||||
};
|
||||
|
||||
let serializer = Serializer::new_with_options(options.build()); // FIXME: why no way to tell the serializer were we want the output?
|
||||
let serializer = Serializer::new_with_options(options.build()); // FIXME: why no way to tell the serializer were we want the output?
|
||||
serde_transcode::transcode(deserializer, serializer).unwrap();
|
||||
}
|
||||
*/
|
||||
@ -156,6 +166,14 @@ where
|
||||
// NOTE: serde_json’s PrettyFormatter and CompactFormatter are incompatibles…
|
||||
// serde_transcode::transcode(deserializer, serializer).unwrap();
|
||||
}
|
||||
/*
|
||||
Output::SExpression => {
|
||||
use serde_lexpr::to_writer as Serializer;
|
||||
|
||||
let serializer = Serializer::new(output); // FIXME: There is a `to_writer` but the Serializer is not exposed directly.
|
||||
serde_transcode::transcode(deserializer, serializer).unwrap();
|
||||
}
|
||||
*/
|
||||
Output::Pickle => {
|
||||
use serde_pickle::Serializer;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user