1
2
Fork 0
mirror of https://github.com/mat-1/azalea.git synced 2025-08-02 23:44:38 +00:00

Use FlatMapSerializer

This commit is contained in:
EightFactorial 2022-11-22 10:27:12 -08:00 committed by GitHub
commit 807b28077f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,7 +1,8 @@
use crate::{base_component::BaseComponent, style::ChatFormatting, Component};
use serde::{
ser::{SerializeSeq, SerializeStruct},
ser::{SerializeMap, SerializeSeq},
Serialize, Serializer,
__private::ser::FlatMapSerializer,
};
use std::fmt::Display;
@ -18,50 +19,12 @@ impl Serialize for TextComponent {
S: Serializer,
{
if self.base.siblings.len() == 0 {
let mut state = serializer.serialize_struct("TextComponent", 8)?;
state.serialize_field("text", &self.text)?;
if self.base.style.color.is_some() {
state.serialize_field("color", &self.base.style.color)?;
}
if self.base.style.bold.is_some() {
state.serialize_field("bold", &self.base.style.bold)?;
}
if self.base.style.italic.is_some() {
state.serialize_field("italic", &self.base.style.italic)?;
}
if self.base.style.underlined.is_some() {
state.serialize_field("underlined", &self.base.style.underlined)?;
}
if self.base.style.strikethrough.is_some() {
state.serialize_field("strikethrough", &self.base.style.strikethrough)?;
}
if self.base.style.obfuscated.is_some() {
state.serialize_field("obfuscated", &self.base.style.obfuscated)?;
}
if self.base.style.reset {
if self.base.style.color.is_none() {
state.serialize_field("color", "white")?;
}
if self.base.style.bold.is_none() {
state.serialize_field("bold", &false)?;
}
if self.base.style.italic.is_none() {
state.serialize_field("italic", &false)?;
}
if self.base.style.underlined.is_none() {
state.serialize_field("underlined", &false)?;
}
if self.base.style.obfuscated.is_none() {
state.serialize_field("strikethrough", &false)?;
}
}
let mut state = serializer.serialize_map(None)?;
Serialize::serialize(&self.base, FlatMapSerializer(&mut state))?;
state.serialize_entry("text", &self.text)?;
return state.end();
} else {
let mut state = serializer.serialize_seq(Some(self.base.siblings.len() + 1))?;
// Most formatters show an empty string in the first slot of the list
state.serialize_element("")?;
for sibling in &self.base.siblings {