| //! Fluent is a modern localization system designed to improve how software is translated. |
| //! |
| //! `fluent-syntax` is the lowest level component of the [Fluent Localization |
| //! System](https://www.projectfluent.org). |
| //! |
| //! It exposes components necessary for parsing and tooling operations on Fluent Translation Lists ("FTL"). |
| //! |
| //! The crate provides a [`parser`] module which allows for parsing of an |
| //! input string to an Abstract Syntax Tree defined in the [`ast`] module. |
| //! |
| //! The [`unicode`] module exposes a set of helper functions used to decode |
| //! escaped unicode literals according to Fluent specification. |
| //! |
| //! # Example |
| //! |
| //! ``` |
| //! use fluent_syntax::parser; |
| //! use fluent_syntax::ast; |
| //! |
| //! let ftl = r#" |
| //! |
| //! hello-world = Hello World! |
| //! |
| //! "#; |
| //! |
| //! let resource = parser::parse(ftl) |
| //! .expect("Failed to parse an FTL resource."); |
| //! |
| //! assert_eq!( |
| //! resource.body[0], |
| //! ast::Entry::Message( |
| //! ast::Message { |
| //! id: ast::Identifier { |
| //! name: "hello-world" |
| //! }, |
| //! value: Some(ast::Pattern { |
| //! elements: vec![ |
| //! ast::PatternElement::TextElement { |
| //! value: "Hello World!" |
| //! }, |
| //! ] |
| //! }), |
| //! attributes: vec![], |
| //! comment: None, |
| //! } |
| //! ), |
| //! ); |
| //! ``` |
| pub mod ast; |
| pub mod parser; |
| pub mod serializer; |
| pub mod unicode; |