Skip to content

Commit

Permalink
Merge pull request #4 from spindle-app/alissa/derive-for-enum
Browse files Browse the repository at this point in the history
derive custom rust types for enum
  • Loading branch information
alissapajer authored Mar 22, 2023
2 parents 18d34e8 + 17c3619 commit d9d2589
Showing 1 changed file with 21 additions and 3 deletions.
24 changes: 21 additions & 3 deletions crates/target_rust/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,12 @@ impl jtd_codegen::target::Target for Target {
return Ok(Some(s.into()));
}

let mut derives = vec!["Serialize", "Deserialize"];

if let Some(s) = metadata.get("rustCustomDerive").and_then(|v| v.as_str()) {
derives.extend(s.split(","));
}

state
.imports
.entry("serde".into())
Expand All @@ -205,7 +211,7 @@ impl jtd_codegen::target::Target for Target {

writeln!(out)?;
write!(out, "{}", description(&metadata, 0))?;
writeln!(out, "#[derive(Serialize, Deserialize)]")?;
writeln!(out, "#[derive({})]", derives.join(", "))?;
writeln!(out, "pub enum {} {{", name)?;

for (index, member) in members.into_iter().enumerate() {
Expand Down Expand Up @@ -321,6 +327,12 @@ impl jtd_codegen::target::Target for Target {
return Ok(Some(s.into()));
}

let mut derives = vec!["Serialize", "Deserialize"];

if let Some(s) = metadata.get("rustCustomDerive").and_then(|v| v.as_str()) {
derives.extend(s.split(","));
}

state
.imports
.entry("serde".into())
Expand All @@ -329,7 +341,7 @@ impl jtd_codegen::target::Target for Target {

writeln!(out)?;
write!(out, "{}", description(&metadata, 0))?;
writeln!(out, "#[derive(Serialize, Deserialize)]")?;
writeln!(out, "#[derive({})]", derives.join(", "))?;
writeln!(out, "#[serde(tag = {:?})]", tag_json_name)?;
writeln!(out, "pub enum {} {{", name)?;

Expand Down Expand Up @@ -362,6 +374,12 @@ impl jtd_codegen::target::Target for Target {
return Ok(Some(s.into()));
}

let mut derives = vec!["Serialize", "Deserialize"];

if let Some(s) = metadata.get("rustCustomDerive").and_then(|v| v.as_str()) {
derives.extend(s.split(","));
}

state
.imports
.entry("serde".into())
Expand All @@ -370,7 +388,7 @@ impl jtd_codegen::target::Target for Target {

writeln!(out)?;
write!(out, "{}", description(&metadata, 0))?;
writeln!(out, "#[derive(Serialize, Deserialize)]")?;
writeln!(out, "#[derive({})]", derives.join(", "))?;

if fields.is_empty() {
writeln!(out, "pub struct {} {{}}", name)?;
Expand Down

0 comments on commit d9d2589

Please sign in to comment.