Skip to content

Commit

Permalink
Add FluentResource and FluentBundle::add_resource
Browse files Browse the repository at this point in the history
  • Loading branch information
Zibi Braniecki committed Aug 25, 2018
1 parent 14ec3a6 commit c843400
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 3 deletions.
9 changes: 6 additions & 3 deletions fluent/src/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ use std::collections::hash_map::{Entry as HashEntry, HashMap};
use super::entry::{Entry, GetEntry};
use super::errors::FluentError;
use super::resolve::{Env, ResolveValue};
use super::resource::FluentResource;
use super::types::FluentValue;
use fluent_locale::{negotiate_languages, NegotiationStrategy};
use fluent_syntax::ast;
use fluent_syntax::parser::parse;
use intl_pluralrules::{IntlPluralRules, PluralRuleType};

#[derive(Debug)]
Expand Down Expand Up @@ -98,9 +98,12 @@ impl<'bundle> FluentBundle<'bundle> {
}

pub fn add_messages(&mut self, source: &str) -> Result<(), FluentError> {
let res = parse(source).unwrap_or_else(|x| x.0);
let res = FluentResource::from_string(source);
self.add_resource(res)
}

for entry in res.body {
pub fn add_resource(&mut self, res: FluentResource) -> Result<(), FluentError> {
for entry in res.ast.body {
let id = match entry {
ast::Entry::Message(ast::Message { ref id, .. }) => id.name.clone(),
ast::Entry::Term(ast::Term { ref id, .. }) => id.name.clone(),
Expand Down
1 change: 1 addition & 0 deletions fluent/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ pub mod context;
pub mod entry;
pub mod errors;
pub mod resolve;
pub mod resource;
pub mod types;

pub use context::FluentBundle;
13 changes: 13 additions & 0 deletions fluent/src/resource.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
use fluent_syntax::ast;
use fluent_syntax::parser::parse;

pub struct FluentResource {
pub ast: ast::Resource,
}

impl FluentResource {
pub fn from_string(source: &str) -> Self {
let ast = parse(source).unwrap_or_else(|x| x.0);
FluentResource { ast }
}
}

0 comments on commit c843400

Please sign in to comment.