cldr_pluralrules_parser 0.1.0

A parser for CLDR plural rules.
Documentation

A crate for parsing CLDR plural rules.

This crate parses plural rules and returns an AST representation of the rule. Plural rules must be written according to the specifications outlined at Unicode's website.

Plural rules, compatible with this crate, can be found at this GitHub repository.

Examples

let condition = Condition(vec![
    AndCondition(vec![Relation {
        expression: Expression {
            operand: Operand('i'),
            modulus: None,
        },
        operator: Operator::Is,
        range_list: RangeList(vec![RangeListItem::Value(Value(5))]),
    }]),
    AndCondition(vec![Relation {
        expression: Expression {
            operand: Operand('v'),
            modulus: None,
        },
        operator: Operator::Within,
        range_list: RangeList(vec![RangeListItem::Value(Value(2))]),
    }]),
])

assert_eq!(condition, parse_plural_rule("i is 5 or v within 2"))