summaryrefslogtreecommitdiff
path: root/vendor/prettyplease/src/data.rs
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-07-02 18:36:06 -0600
committermo khan <mo@mokhan.ca>2025-07-02 18:36:06 -0600
commit8cdfa445d6629ffef4cb84967ff7017654045bc2 (patch)
tree22f0b0907c024c78d26a731e2e1f5219407d8102 /vendor/prettyplease/src/data.rs
parent4351c74c7c5f97156bc94d3a8549b9940ac80e3f (diff)
chore: add vendor directory
Diffstat (limited to 'vendor/prettyplease/src/data.rs')
-rw-r--r--vendor/prettyplease/src/data.rs79
1 files changed, 79 insertions, 0 deletions
diff --git a/vendor/prettyplease/src/data.rs b/vendor/prettyplease/src/data.rs
new file mode 100644
index 00000000..3561a49b
--- /dev/null
+++ b/vendor/prettyplease/src/data.rs
@@ -0,0 +1,79 @@
+use crate::algorithm::Printer;
+use crate::fixup::FixupContext;
+use crate::iter::IterDelimited;
+use crate::path::PathKind;
+use crate::INDENT;
+use syn::{Field, Fields, FieldsUnnamed, Variant, VisRestricted, Visibility};
+
+impl Printer {
+ pub fn variant(&mut self, variant: &Variant) {
+ self.outer_attrs(&variant.attrs);
+ self.ident(&variant.ident);
+ match &variant.fields {
+ Fields::Named(fields) => {
+ self.nbsp();
+ self.word("{");
+ self.cbox(INDENT);
+ self.space();
+ for field in fields.named.iter().delimited() {
+ self.field(&field);
+ self.trailing_comma_or_space(field.is_last);
+ }
+ self.offset(-INDENT);
+ self.end();
+ self.word("}");
+ }
+ Fields::Unnamed(fields) => {
+ self.cbox(INDENT);
+ self.fields_unnamed(fields);
+ self.end();
+ }
+ Fields::Unit => {}
+ }
+ if let Some((_eq_token, discriminant)) = &variant.discriminant {
+ self.word(" = ");
+ self.expr(discriminant, FixupContext::NONE);
+ }
+ }
+
+ pub fn fields_unnamed(&mut self, fields: &FieldsUnnamed) {
+ self.word("(");
+ self.zerobreak();
+ for field in fields.unnamed.iter().delimited() {
+ self.field(&field);
+ self.trailing_comma(field.is_last);
+ }
+ self.offset(-INDENT);
+ self.word(")");
+ }
+
+ pub fn field(&mut self, field: &Field) {
+ self.outer_attrs(&field.attrs);
+ self.visibility(&field.vis);
+ if let Some(ident) = &field.ident {
+ self.ident(ident);
+ self.word(": ");
+ }
+ self.ty(&field.ty);
+ }
+
+ pub fn visibility(&mut self, vis: &Visibility) {
+ match vis {
+ Visibility::Public(_) => self.word("pub "),
+ Visibility::Restricted(vis) => self.vis_restricted(vis),
+ Visibility::Inherited => {}
+ }
+ }
+
+ fn vis_restricted(&mut self, vis: &VisRestricted) {
+ self.word("pub(");
+ let omit_in = vis.path.get_ident().map_or(false, |ident| {
+ matches!(ident.to_string().as_str(), "self" | "super" | "crate")
+ });
+ if !omit_in {
+ self.word("in ");
+ }
+ self.path(&vis.path, PathKind::Simple);
+ self.word(") ");
+ }
+}