Create `fluent_embed` crate
Dependencies
- [2]
VZYZRAO4Move `output-macros` crate into workspace - [*]
KDUI7LHJ - [*]
UKFEFT6LCreate basic `Output` proc-macro
Change contents
- file addition: fluent_embed[4.1]
- file addition: src[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[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
members = ["output-macros"]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"