1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 12:47:35 +00:00

LibUnicode: Add IDNA::to_ascii

This implements the ToASCII operation of Unicode Technical Standard 46
This commit is contained in:
Simon Wanner 2023-06-15 21:57:13 +02:00 committed by Tim Flynn
parent 7d9fe44039
commit 5bcb019106
5 changed files with 338 additions and 0 deletions

View file

@ -6,7 +6,9 @@
#pragma once
#include <AK/String.h>
#include <AK/Utf32View.h>
#include <AK/Utf8View.h>
namespace Unicode::IDNA {
@ -31,4 +33,45 @@ struct Mapping {
Utf32View mapped_to;
};
enum class CheckHyphens {
No,
Yes,
};
enum class CheckBidi {
No,
Yes,
};
enum class CheckJoiners {
No,
Yes,
};
enum class UseStd3AsciiRules {
No,
Yes,
};
enum class TransitionalProcessing {
No,
Yes,
};
enum class VerifyDnsLength {
No,
Yes,
};
struct ToAsciiOptions {
CheckHyphens check_hyphens { CheckHyphens::Yes };
CheckBidi check_bidi { CheckBidi::Yes };
CheckJoiners check_joiners { CheckJoiners::Yes };
UseStd3AsciiRules use_std3_ascii_rules { UseStd3AsciiRules::No };
TransitionalProcessing transitional_processing { TransitionalProcessing::No };
VerifyDnsLength verify_dns_length { VerifyDnsLength::Yes };
};
ErrorOr<String> to_ascii(Utf8View domain_name, ToAsciiOptions const& = {});
}