dsntk-feel 0.0.9

dsntk | Decision Toolkit | FEEL definitions
Documentation
mod bif;
mod context;
mod dto;
mod function;
mod names;
mod qualified_names;
mod scope;
mod types;
mod values;

use crate::{FeelType, Name};
use once_cell::sync::Lazy;

const T_ANY: &FeelType = &FeelType::Any;
const T_BOOLEAN: &FeelType = &FeelType::Boolean;
const T_NUMBER: &FeelType = &FeelType::Number;
const T_DATE: &FeelType = &FeelType::Date;
const T_DATE_TIME: &FeelType = &FeelType::DateTime;
const T_DAYS_AND_TIME_DURATION: &FeelType = &FeelType::DaysAndTimeDuration;
const T_NULL: &FeelType = &FeelType::Null;
const T_STRING: &FeelType = &FeelType::String;
const T_TIME: &FeelType = &FeelType::Time;
const T_YEARS_AND_MONTHS_DURATION: &FeelType = &FeelType::YearsAndMonthsDuration;

static NAME_A: Lazy<Name> = Lazy::new(|| Name::from("a"));
static NAME_B: Lazy<Name> = Lazy::new(|| Name::from("b"));
static NAME_C: Lazy<Name> = Lazy::new(|| Name::from("c"));
static NAME_D: Lazy<Name> = Lazy::new(|| Name::from("d"));
static T_LIST_A: Lazy<FeelType> = Lazy::new(|| FeelType::list(T_NUMBER));
static T_LIST_B: Lazy<FeelType> = Lazy::new(|| FeelType::list(T_BOOLEAN));
static T_LIST_C: Lazy<FeelType> = Lazy::new(|| FeelType::list(T_STRING));
static T_LIST_D: Lazy<FeelType> = Lazy::new(|| FeelType::list(T_ANY));
static T_CONTEXT_A: Lazy<FeelType> = Lazy::new(|| FeelType::context(&[(&NAME_A, T_NUMBER)]));
static T_CONTEXT_B: Lazy<FeelType> = Lazy::new(|| FeelType::context(&[(&NAME_B, T_BOOLEAN)]));
static T_CONTEXT_C: Lazy<FeelType> = Lazy::new(|| FeelType::context(&[(&NAME_A, T_STRING)]));
static T_CONTEXT_A_B: Lazy<FeelType> = Lazy::new(|| FeelType::context(&[(&NAME_A, T_NUMBER), (&NAME_B, T_BOOLEAN)]));
static T_CONTEXT_A_B_C: Lazy<FeelType> = Lazy::new(|| FeelType::context(&[(&NAME_A, T_NUMBER), (&NAME_B, T_BOOLEAN), (&NAME_C, T_STRING)]));
static T_FUNCTION_A: Lazy<FeelType> = Lazy::new(|| FeelType::function(&[T_NUMBER.clone(), T_NUMBER.clone()], T_NUMBER));
static T_FUNCTION_B: Lazy<FeelType> = Lazy::new(|| FeelType::function(&[T_NUMBER.clone(), T_NUMBER.clone()], T_BOOLEAN));
static T_FUNCTION_C: Lazy<FeelType> = Lazy::new(|| FeelType::function(&[T_NUMBER.clone()], T_STRING));
static T_FUNCTION_D: Lazy<FeelType> = Lazy::new(|| FeelType::function(&[], T_ANY));
static T_FUNCTION_E: Lazy<FeelType> = Lazy::new(|| FeelType::function(&[], T_STRING));
static T_FUNCTION_F: Lazy<FeelType> = Lazy::new(|| FeelType::function(&[T_ANY.clone()], T_STRING));
static T_FUNCTION_G: Lazy<FeelType> = Lazy::new(|| FeelType::function(&[T_STRING.clone()], T_STRING));
static T_RANGE_A: Lazy<FeelType> = Lazy::new(|| FeelType::range(T_NUMBER));
static T_RANGE_B: Lazy<FeelType> = Lazy::new(|| FeelType::range(T_DATE));