Create `fluent_embed` crate

finchie
Feb 11, 2024, 5:54 AM
O77KA6C4UJGZXVGPEA7WCRQH6XYQJPWETSPDXI3VOKOSRQND7JEQC

Dependencies

Change contents

  • file addition: fluent_embed (d--r------)
    [4.1]
  • file addition: src (d--r------)
    [0.24]
  • file addition: lib.rs (----------)
    [0.41]
    use fluent_syntax::ast::{Entry, Message, Resource};
    #[derive(Debug)]
    enum GroupEntry<'resource> {
    Message(&'resource Message<&'resource str>),
    }
    #[derive(Debug)]
    pub struct Group<'resource> {
    children: Vec<GroupEntry<'resource>>,
    }
    impl<'resource> TryFrom<&'resource Entry<&'resource str>> for GroupEntry<'resource> {
    type Error = ();
    fn try_from(value: &'resource Entry<&'resource str>) -> Result<Self, Self::Error> {
    match value {
    Entry::Message(message) => Ok(Self::Message(message)),
    _ => Err(()),
    }
    }
    }
    impl<'resource> Group<'resource> {
    pub fn from_resource(resource: &'resource Resource<&'resource str>) -> Self {
    let mut children = Vec::new();
    for entry in &resource.body {
    let matched_entry = GroupEntry::try_from(entry).unwrap();
    children.push(matched_entry);
    }
    Self { children }
    }
    }
  • file addition: examples (d--r------)
    [0.24]
  • file addition: groups.rs (----------)
    [0.1020]
    use fluent_embed::Group;
    fn main() {
    let ftl = r"greeting = hello!";
    let resource = fluent_syntax::parser::parse(ftl).unwrap();
    let group = Group::from_resource(&resource);
    dbg!(group);
    }
  • file addition: Cargo.toml (----------)
    [0.24]
    [package]
    name = "fluent_embed"
    version = "0.1.0"
    edition = "2021"
    [lints]
    workspace = true
    [dependencies]
    fluent-syntax = "0.11.0"
    heck = { version = "0.4.1", features = ["unicode"] }
    proc-macro2 = "1.0.78"
    quote = "1.0.35"
    syn = { version = "2.0.48", features = ["full"] }
  • replacement in Cargo.toml at line 2
    [2.210][2.210:238]()
    members = ["output-macros"]
    [2.210]
    [2.238]
    members = ["fluent_embed", "output-macros"]
  • edit in Cargo.lock at line 4
    [5.4381]
    [5.4381]
    [[package]]
    name = "fluent-syntax"
    version = "0.11.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "c0abed97648395c902868fee9026de96483933faa54ea3b40d652f7dfe61ca78"
    dependencies = [
    "thiserror",
    ]
    [[package]]
    name = "fluent_embed"
    version = "0.1.0"
    dependencies = [
    "fluent-syntax",
    "heck",
    "proc-macro2",
    "quote",
    "syn",
    ]
  • edit in Cargo.lock at line 26
    [5.4394]
    [2.343]
    name = "heck"
    version = "0.4.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
    dependencies = [
    "unicode-segmentation",
    ]
    [[package]]
  • edit in Cargo.lock at line 70
    [5.5195]
    [5.5195]
    ]
    [[package]]
    name = "thiserror"
    version = "1.0.56"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad"
    dependencies = [
    "thiserror-impl",
  • edit in Cargo.lock at line 82
    [5.5210]
    [5.5210]
    name = "thiserror-impl"
    version = "1.0.56"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471"
    dependencies = [
    "proc-macro2",
    "quote",
    "syn",
    ]
    [[package]]
  • edit in Cargo.lock at line 97
    [5.5395]
    [[package]]
    name = "unicode-segmentation"
    version = "1.10.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"