duckling 0.4.0

A Rust port of Facebook's Duckling library for parsing natural language into structured data
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use crate::pattern::dim;
use crate::types::{DimensionKind, Rule, TokenData};

use super::DurationData;

pub fn rules() -> Vec<Rule> {
    vec![Rule {
        name: "<unit-of-duration> as duration".to_string(),
        pattern: vec![dim(DimensionKind::TimeGrain)],
        production: Box::new(|nodes| match &nodes[0].token_data {
            TokenData::TimeGrain(g) => Some(TokenData::Duration(DurationData::new(1, *g))),
            _ => None,
        }),
    }]
}