use crate::rule::shape::{one_to_one, part_of};
use seesaw_tgg::rules::format::RuleFile;
const CATALOGUE_NAME: &str = "ocaml";
pub const STRUCT_TO_RECORD: &str = "struct-to-record";
pub const MEMBER_TO_FIELD: &str = "member-to-field";
pub const ENUM_TO_VARIANT: &str = "enum-to-variant";
pub const ENUMERATOR_TO_CONSTRUCTOR: &str = "enumerator-to-constructor";
pub const ALIAS_TO_ABBREVIATION: &str = "alias-to-abbreviation";
pub const UNION_TO_RECORD: &str = "union-to-record";
pub const CASE_TO_FIELD: &str = "case-to-field";
pub const BITMASK_TO_ABBREVIATION: &str = "bitmask-to-abbreviation";
pub const BIT_TO_LET: &str = "bit-to-let";
pub const BITSET_TO_RECORD: &str = "bitset-to-record";
pub const VALUETYPE_TO_RECORD: &str = "valuetype-to-record";
pub const MODULE_TO_PREFIX: &str = "module-to-prefix";
pub const CONST_TO_LET: &str = "const-to-let";
pub const EXCEPTION_TO_RECORD: &str = "exception-to-record";
pub const NATIVE_TO_ABBREVIATION: &str = "native-to-abbreviation";
pub const INTERFACE_TO_CLASS_TYPE: &str = "interface-to-class-type";
#[must_use]
pub fn catalogue() -> RuleFile {
RuleFile {
format: 3,
name: CATALOGUE_NAME.to_string(),
rules: vec![
one_to_one(
STRUCT_TO_RECORD,
"Structure",
"OCamlRecord",
"OCamlRecordCorr",
),
part_of(
MEMBER_TO_FIELD,
("Member", "Structure", "OCamlRecordCorr"),
("OCamlField", "OCamlRecord", "OCamlFieldCorr"),
),
one_to_one(
ENUM_TO_VARIANT,
"Enumeration",
"OCamlVariant",
"OCamlVariantCorr",
),
part_of(
ENUMERATOR_TO_CONSTRUCTOR,
("Enumerator", "Enumeration", "OCamlVariantCorr"),
("OCamlConstructor", "OCamlVariant", "OCamlConstructorCorr"),
),
one_to_one(
ALIAS_TO_ABBREVIATION,
"Alias",
"OCamlAlias",
"OCamlAliasCorr",
),
one_to_one(UNION_TO_RECORD, "Union", "OCamlUnion", "OCamlUnionCorr"),
part_of(
CASE_TO_FIELD,
("Case", "Union", "OCamlUnionCorr"),
("OCamlCase", "OCamlUnion", "OCamlCaseCorr"),
),
one_to_one(
BITMASK_TO_ABBREVIATION,
"Bitmask",
"OCamlBitmask",
"OCamlBitmaskCorr",
),
part_of(
BIT_TO_LET,
("BitValue", "Bitmask", "OCamlBitmaskCorr"),
("OCamlBitLet", "OCamlBitmask", "OCamlBitCorr"),
),
one_to_one(BITSET_TO_RECORD, "Bitset", "OCamlBitset", "OCamlBitsetCorr"),
one_to_one(
VALUETYPE_TO_RECORD,
"Valuetype",
"OCamlValue",
"OCamlValueCorr",
),
one_to_one(MODULE_TO_PREFIX, "Module", "OCamlModule", "OCamlModuleCorr"),
one_to_one(CONST_TO_LET, "Const", "OCamlConst", "OCamlConstCorr"),
one_to_one(
EXCEPTION_TO_RECORD,
"Exception",
"OCamlError",
"OCamlErrorCorr",
),
one_to_one(
NATIVE_TO_ABBREVIATION,
"Native",
"OCamlNative",
"OCamlNativeCorr",
),
one_to_one(
INTERFACE_TO_CLASS_TYPE,
"Interface",
"OCamlInterface",
"OCamlInterfaceCorr",
),
],
}
}