Support named fields in enum variants

finchie
Feb 14, 2024, 4:36 AM
NFHPBRB5AUJGWAN7UMUDUNFDGDOCKVUKC3AAPDTND7C7MJYISVVQC

Dependencies

  • [2] K4XW4OBW Create derive macro helper function for simple enums
  • [3] UOMQT7LT Add support for cardinal CLDR plural selectors
  • [4] O77KA6C4 Create `fluent_embed` crate
  • [5] 3C3CHSY5 Implement `to_syn` for groups containing simple text messages
  • [6] BMUMO42I Add support for inline string and number literals

Change contents

  • edit in fluent_embed/src/lib.rs at line 73
    [2.749]
    [2.749]
    let variant_ident = variant.ident;
    idents.push(match variant.fields {
    syn::Fields::Named(fields) => {
    // Get the name of each field for pattern-matching
    let field_idents = fields
    .named
    .iter()
    .map(|field| field.ident.as_ref())
    .map(Option::unwrap);
  • replacement in fluent_embed/src/lib.rs at line 84
    [2.750][2.750:790]()
    idents.push(variant.ident);
    [2.750]
    [2.790]
    quote!(#variant_ident { #(#field_idents),* })
    }
    syn::Fields::Unnamed(_) => todo!(),
    syn::Fields::Unit => quote!(#variant_ident),
    });
  • replacement in fluent_embed/src/lib.rs at line 141
    [3.975][3.975:1044]()
    match plural_rules.category_for(#match_target) {
    [3.975]
    [3.1044]
    match plural_rules.category_for(*#match_target) {
  • replacement in fluent_embed/examples/groups.rs at line 5
    [3.1095][2.1113:1142](),[2.1142][2.1142:1158]()
    let ftl = r#"first = one
    second = two"#;
    [3.1095]
    [3.1131]
    let ftl = r#"emails =
    { $unreadEmails ->
    [one] You have one unread email.
    *[other] You have { $unreadEmails } unread emails.
    }
    "#;
  • replacement in fluent_embed/examples/groups.rs at line 17
    [2.1230][2.1230:1249](),[2.1249][2.1249:1269]()
    First,
    Second,
    [2.1230]
    [2.1269]
    Emails { unreadEmails: u64 }