Serialize to JavaScript
=============
This library provides serialization from `serde::Serialize` into JavaScript utilizing `serde_json`. It also provides
a very simple templating mechanism along with derive macros to automatically derive them for suitable types.
```toml
[dependencies]
serialize-to-javascript = "0.1"
```
---
## Examples
### Serialization
```rust
use serialize_to_javascript::{Options, Serialized};
fn main() -> serialize_to_javascript::Result<()> {
let raw_value = serde_json::value::to_raw_value("foo'bar")?;
let serialized = Serialized::new(&raw_value, &Options::default());
assert_eq!(serialized.into_string(), "JSON.parse('\"foo\\'bar\"')");
Ok(())
}
```
### Templating
`main.rs`:
```rust
use serialize_to_javascript::{default_template, DefaultTemplate, Options, Serialized, Template};
#[derive(Template)]
#[default_template("keygen.js")]
struct Keygen<'a> {
key: &'a str,
length: usize,
#[raw]
optional_script: &'static str,
}
fn main() -> serialize_to_javascript::Result<()> {
let keygen = Keygen {
key: "asdf",
length: 4,
optional_script: "console.log('hello, from my optional script')",
};
let _output: Serialized = keygen.render_default(&Options::default())?;
Ok(())
}
```
`keygen.js`:
```javascript
const keygenKey = __TEMPLATE_key__
const keygenLength = __TEMPLATE_length__
__RAW_optional_script__
// app logic, we are ensuring the length is equal to the expected one for some reason
if (keygenKey.length === keygenLength) {
console.log("okay!")
} else {
console.error("oh no!")
}
```
---
### License
Licensed under either of [Apache License 2.0](LICENSE-APACHE), Version or [MIT license](LICENSE-MIT) at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you,
as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.