use crate::rule::shape::{one_to_one, part_of};
use seesaw_tgg::rules::format::RuleFile;
const CATALOGUE_NAME: &str = "swift";
pub const STRUCT_TO_STRUCT: &str = "struct-to-struct";
pub const MEMBER_TO_PROPERTY: &str = "member-to-property";
pub const ENUM_TO_ENUM: &str = "enum-to-enum";
pub const ENUMERATOR_TO_CASE: &str = "enumerator-to-case";
pub const ALIAS_TO_TYPEALIAS: &str = "alias-to-typealias";
pub const UNION_TO_STRUCT: &str = "union-to-struct";
pub const CASE_TO_PROPERTY: &str = "case-to-property";
pub const BITMASK_TO_OPTIONSET: &str = "bitmask-to-optionset";
pub const BIT_TO_FLAG: &str = "bit-to-flag";
pub const BITSET_TO_STRUCT: &str = "bitset-to-struct";
pub const VALUETYPE_TO_STRUCT: &str = "valuetype-to-struct";
pub const MODULE_TO_PREFIX: &str = "module-to-prefix";
pub const CONST_TO_LET: &str = "const-to-let";
pub const EXCEPTION_TO_STRUCT: &str = "exception-to-struct";
pub const NATIVE_TO_TYPEALIAS: &str = "native-to-typealias";
pub const INTERFACE_TO_PROTOCOL: &str = "interface-to-protocol";
#[must_use]
pub fn catalogue() -> RuleFile {
RuleFile {
format: 3,
name: CATALOGUE_NAME.to_string(),
rules: vec![
one_to_one(
STRUCT_TO_STRUCT,
"Structure",
"SwiftStruct",
"SwiftStructCorr",
),
part_of(
MEMBER_TO_PROPERTY,
("Member", "Structure", "SwiftStructCorr"),
("SwiftProperty", "SwiftStruct", "SwiftPropertyCorr"),
),
one_to_one(ENUM_TO_ENUM, "Enumeration", "SwiftEnum", "SwiftEnumCorr"),
part_of(
ENUMERATOR_TO_CASE,
("Enumerator", "Enumeration", "SwiftEnumCorr"),
("SwiftCase", "SwiftEnum", "SwiftCaseCorr"),
),
one_to_one(
ALIAS_TO_TYPEALIAS,
"Alias",
"SwiftTypealias",
"SwiftTypealiasCorr",
),
one_to_one(UNION_TO_STRUCT, "Union", "SwiftUnion", "SwiftUnionCorr"),
part_of(
CASE_TO_PROPERTY,
("Case", "Union", "SwiftUnionCorr"),
("SwiftBranch", "SwiftUnion", "SwiftBranchCorr"),
),
one_to_one(
BITMASK_TO_OPTIONSET,
"Bitmask",
"SwiftOptionSet",
"SwiftOptionSetCorr",
),
part_of(
BIT_TO_FLAG,
("BitValue", "Bitmask", "SwiftOptionSetCorr"),
("SwiftFlag", "SwiftOptionSet", "SwiftFlagCorr"),
),
one_to_one(BITSET_TO_STRUCT, "Bitset", "SwiftBitset", "SwiftBitsetCorr"),
one_to_one(
VALUETYPE_TO_STRUCT,
"Valuetype",
"SwiftValue",
"SwiftValueCorr",
),
one_to_one(MODULE_TO_PREFIX, "Module", "SwiftModule", "SwiftModuleCorr"),
one_to_one(CONST_TO_LET, "Const", "SwiftLet", "SwiftLetCorr"),
one_to_one(
EXCEPTION_TO_STRUCT,
"Exception",
"SwiftError",
"SwiftErrorCorr",
),
one_to_one(
NATIVE_TO_TYPEALIAS,
"Native",
"SwiftNative",
"SwiftNativeCorr",
),
one_to_one(
INTERFACE_TO_PROTOCOL,
"Interface",
"SwiftProtocol",
"SwiftProtocolCorr",
),
],
}
}