// MoonSpoof: Public Facade APIs for UTS #39 Unicode Spoof Detection
///|
pub type SecurityRiskLevel = @security.SecurityRiskLevel
///|
pub type DiagnosticReport = @security.DiagnosticReport
///|
pub type CharDiagnostic = @security.CharDiagnostic
///|
pub type ScriptAnalysis = @script.ScriptAnalysis
///|
pub type Script = @script.Script
///|
pub type ScriptSet = @script.ScriptSet
///|
pub fn get_unicode_script(cp : Int32) -> String {
@script.get_unicode_script(cp)
}
///|
pub fn get_script_extensions(cp : Int32) -> Array[String] {
@script.get_script_extensions(cp)
}
///|
pub fn resolve_script_set(input : String) -> @script.ScriptSet {
@script.resolve_script_set(input)
}
///|
pub fn is_mixed_script_resolved(input : String) -> Bool {
@script.is_mixed_script_resolved(input)
}
///|
pub type ConfusableGroup = @batch.ConfusableGroup
///|
pub type UnicodeVersion = @unicode.UnicodeVersion
///|
pub type IdentifierProfile = @security.IdentifierProfile
///|
pub type IdentifierStatus = @security.IdentifierStatus
///|
pub type IdentifierStatusIssue = @security.IdentifierStatusIssue
///|
pub type IdentifierStatusError = @security.IdentifierStatusError
///|
pub type MixedNumberIssue = @security.MixedNumberIssue
///|
pub fn get_decimal_zero(cp : Int32) -> Int32? {
@security.get_decimal_zero(cp)
}
///|
pub fn get_decimal_systems(input : String) -> Array[Int32] {
@security.get_decimal_systems(input)
}
///|
pub fn validate_number_systems(
input : String,
) -> Result[Unit, @security.MixedNumberIssue] {
@security.validate_number_systems(input)
}
///|
pub fn has_mixed_numbers(input : String) -> Bool {
@security.has_mixed_numbers(input)
}
///|
pub fn get_identifier_status(cp : Int32) -> @security.IdentifierStatus {
@security.get_identifier_status(cp)
}
///|
pub fn validate_identifier_status(
input : String,
) -> Result[Unit, @security.IdentifierStatusError] {
@security.validate_identifier_status(input)
}
///|
pub type RestrictionLevel = @script.RestrictionLevel
///|
pub fn is_single_script(input : String) -> Bool {
@script.is_single_script(input)
}
///|
pub fn is_mixed_script(input : String) -> Bool {
@script.is_mixed_script(input)
}
///|
pub fn get_restriction_level(input : String) -> @script.RestrictionLevel {
@script.get_restriction_level(input)
}
///|
pub fn skeleton(input : String) -> String {
@confusable.skeleton(input)
}
///|
pub fn skeleton_case_folded(input : String) -> String {
@confusable.skeleton_case_folded(input)
}
///|
pub fn are_confusable(a : String, b : String) -> Bool {
@confusable.are_confusable(a, b)
}
///|
pub fn are_confusable_ignore_case(a : String, b : String) -> Bool {
@confusable.are_confusable_ignore_case(a, b)
}
///|
pub fn analyze_scripts(input : String) -> @script.ScriptAnalysis {
@script.analyze_scripts(input)
}
///|
pub fn analyze_identifier(input : String) -> @security.DiagnosticReport {
@security.analyze_identifier(input)
}
///|
pub fn validate_identifier(
input : String,
profile~ : @security.IdentifierProfile = @security.IdentifierProfile::default(),
) -> Result[Unit, String] {
@security.validate_identifier(input, profile~)
}
///|
pub fn is_allowed_identifier(
input : String,
profile~ : @security.IdentifierProfile = @security.IdentifierProfile::default(),
) -> Bool {
@security.is_allowed_identifier(input, profile~)
}
///|
pub fn find_confusable_groups(
names : Array[String],
) -> Array[@batch.ConfusableGroup] {
@batch.find_confusable_groups(names)
}
///|
pub fn find_confusable_groups_ignore_case(
names : Array[String],
) -> Array[@batch.ConfusableGroup] {
@batch.find_confusable_groups_ignore_case(names)
}
///|
pub fn get_unicode_version() -> @unicode.UnicodeVersion {
@unicode.unicode_version
}
///|
pub fn has_bidi_controls(input : String) -> Bool {
@security.has_bidi_controls(input)
}
///|
pub fn has_bidi_override(input : String) -> Bool {
@security.has_bidi_override(input)
}
///|
pub fn has_invisible_characters(input : String) -> Bool {
@security.has_invisible_characters(input)
}