Skip to content

Commit da87489

Browse files
authored
IDNA refactor names (#130)
* I managed to find that I renamed a namespace and class as the same, so I fix that here * Made IDNA code point status a bit more efficient * Compressed IDNA table a little more by storing code points with values <= 0xffff as char16_t * Fixed IDNA table generator script
1 parent c7d78a1 commit da87489

File tree

7 files changed

+133
-1297
lines changed

7 files changed

+133
-1297
lines changed

examples/example_11.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ using namespace std::string_view_literals;
1111

1212
int main() {
1313
auto host_domain = skyr::parse_host("example.com"sv);
14-
std::cout << host_domain.value().domain().value() << std::endl;
14+
std::cout << host_domain.value().serialize() << std::endl;
1515

1616
auto host_ipv4 = skyr::parse_host("192.168.0.1"sv);
17-
std::cout << host_ipv4.value().ipv4_address().value().serialize() << std::endl;
17+
std::cout << host_ipv4.value().serialize() << std::endl;
1818

19-
auto host_ipv6 = skyr::parse_host("[::1]"sv);
20-
std::cout << host_ipv6.value().ipv6_address().value().serialize() << std::endl;
19+
auto host_ipv6 = skyr::parse_host("[2001:0db8:0:0::1428:57ab]"sv);
20+
std::cout << host_ipv6.value().serialize() << std::endl;
2121

2222
auto localhost = skyr::parse_host("localhost"sv);
23-
std::cout << localhost.value().domain().value() << std::endl;
23+
std::cout << localhost.value().serialize() << std::endl;
2424
}

src/v1/domain/domain.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,37 +28,37 @@ auto map_code_points(
2828
auto it = first;
2929

3030
while (it != last) {
31-
switch (domain::map_idna_status(*it)) {
32-
case domain::idna_status::disallowed:
31+
switch (idna::code_point_status(*it)) {
32+
case idna::idna_status::disallowed:
3333
error = true;
3434
break;
35-
case domain::idna_status::disallowed_std3_valid:
35+
case idna::idna_status::disallowed_std3_valid:
3636
if (use_std3_ascii_rules) {
3737
error = true;
3838
} else {
3939
result += *it;
4040
}
4141
break;
42-
case domain::idna_status::disallowed_std3_mapped:
42+
case idna::idna_status::disallowed_std3_mapped:
4343
if (use_std3_ascii_rules) {
4444
error = true;
4545
} else {
46-
result += domain::map_idna_code_point(*it);
46+
result += idna::map_code_point(*it);
4747
}
4848
break;
49-
case domain::idna_status::ignored:
49+
case idna::idna_status::ignored:
5050
break;
51-
case domain::idna_status::mapped:
52-
result += domain::map_idna_code_point(*it);
51+
case idna::idna_status::mapped:
52+
result += idna::map_code_point(*it);
5353
break;
54-
case domain::idna_status::deviation:
54+
case idna::idna_status::deviation:
5555
if (transitional_processing) {
56-
result += domain::map_idna_code_point(*it);
56+
result += idna::map_code_point(*it);
5757
} else {
5858
result += *it;
5959
}
6060
break;
61-
case domain::idna_status::valid:
61+
case idna::idna_status::valid:
6262
result += *it;
6363
break;
6464
}
@@ -95,8 +95,8 @@ auto validate_label(std::u32string_view label, [[maybe_unused]] bool use_std3_as
9595
/// Criterion 6
9696
if (transitional_processing) {
9797
static constexpr auto is_valid = [](auto cp) {
98-
auto status = domain::map_idna_status(cp);
99-
return (cp <= U'\x7e') || (status == domain::idna_status::valid);
98+
auto status = idna::code_point_status(cp);
99+
return (cp <= U'\x7e') || (status == idna::idna_status::valid);
100100
};
101101

102102
auto it = std::find_if_not(first, last, is_valid);
@@ -106,8 +106,8 @@ auto validate_label(std::u32string_view label, [[maybe_unused]] bool use_std3_as
106106
}
107107
else {
108108
static constexpr auto is_valid_or_deviation = [](auto cp) {
109-
auto status = domain::map_idna_status(cp);
110-
return (cp <= U'\x7e') || (status == domain::idna_status::valid) || (status == domain::idna_status::deviation);
109+
auto status = idna::code_point_status(cp);
110+
return (cp <= U'\x7e') || (status == idna::idna_status::valid) || (status == idna::idna_status::deviation);
111111
};
112112

113113
auto it = std::find_if_not(first, last, is_valid_or_deviation);

0 commit comments

Comments
 (0)