modality_mutator_protocol/
params_attributes.rs

1pub const MUTATOR_PARAMS_PREFIX: &str = "mutator.params.";
2
3pub const MUTATOR_PARAMS_NAME_SUFFIX: &str = ".name";
4pub const MUTATOR_PARAMS_VALUE_TYPE_SUFFIX: &str = ".value_type";
5
6pub const MUTATOR_PARAMS_DESCRIPTION_SUFFIX: &str = ".description";
7pub const MUTATOR_PARAMS_VALUE_MIN_SUFFIX: &str = ".value_min";
8pub const MUTATOR_PARAMS_VALUE_MAX_SUFFIX: &str = ".value_max";
9pub const MUTATOR_PARAMS_UNITS_SUFFIX: &str = ".units";
10pub const MUTATOR_PARAMS_DEFAULT_VALUE_SUFFIX: &str = ".default_value";
11pub const MUTATOR_PARAMS_LEAST_EFFECT_VALUE_SUFFIX: &str = ".least_effect_value";
12
13pub const MUTATOR_PARAMS_VALUE_DISTRIBUTION_INTERFIX: &str = ".value_distribution.";
14pub const MUTATOR_PARAMS_VALUE_DISTRIBUTION_KIND_SUFFIX: &str = ".value_distribution.kind";
15pub const MUTATOR_PARAMS_VALUE_DISTRIBUTION_SCALING_SUFFIX: &str = ".value_distribution.scaling";
16
17pub const MUTATOR_PARAMS_VALUE_DISTRIBUTION_OPTION_SET_SUFFIX: &str =
18    ".value_distribution.option_set";
19pub const MUTATOR_PARAMS_VALUE_DISTRIBUTION_OPTION_SET_INTERFIX: &str =
20    ".value_distribution.option_set.";
21
22/// Mutator parameter-specific attributes have keys in the format:
23/// `mutator.params.<param-key>.rest.of.key`
24/// where `<param-key>` must be ASCII and not contain any periods.
25pub fn is_valid_param_key(s: &str) -> bool {
26    is_valid_single_key_segment_contents(s)
27}
28
29/// Must be ASCII and contain no periods
30pub fn is_valid_single_key_segment_contents(s: &str) -> bool {
31    if !s.is_ascii() {
32        return false;
33    }
34    !s.contains('.')
35}