1- /* auto-generated on 2025-02-11 09:47:50 -0500. Do not edit! */
1+ /* auto-generated on 2025-02-26 20:29:12 -0500. Do not edit! */
22/* begin file src/ada.cpp */
33#include "ada.h"
44/* begin file src/checkers.cpp */
@@ -15225,7 +15225,7 @@ inline void url_aggregator::consume_prepared_path(std::string_view input) {
1522515225namespace ada {
1522615226
1522715227tl::expected<url_pattern_init, errors> url_pattern_init::process(
15228- url_pattern_init init, std::string_view type,
15228+ url_pattern_init init, url_pattern_init::process_type type,
1522915229 std::optional<std::string_view> protocol,
1523015230 std::optional<std::string_view> username,
1523115231 std::optional<std::string_view> password,
@@ -15287,8 +15287,8 @@ tl::expected<url_pattern_init, errors> url_pattern_init::process(
1528715287 // If type is not "pattern" and init contains none of "protocol",
1528815288 // "hostname", "port" and "username", then set result["username"] to the
1528915289 // result of processing a base URL string given baseURL’s username and type.
15290- if (type != " pattern" && !init.protocol && !init.hostname && !init.port &&
15291- !init.username) {
15290+ if (type != process_type:: pattern && !init.protocol && !init.hostname &&
15291+ !init.port && !init. username) {
1529215292 result.username = url_pattern_helpers::process_base_url_string(
1529315293 base_url->get_username(), type);
1529415294 }
@@ -15298,8 +15298,8 @@ tl::expected<url_pattern_init, errors> url_pattern_init::process(
1529815298 // "hostname", "port", "username" and "password", then set
1529915299 // result["password"] to the result of processing a base URL string given
1530015300 // baseURL’s password and type.
15301- if (type != " pattern" && !init.protocol && !init.hostname && !init.port &&
15302- !init.username && !init.password) {
15301+ if (type != process_type:: pattern && !init.protocol && !init.hostname &&
15302+ !init.port && !init. username && !init.password) {
1530315303 result.password = url_pattern_helpers::process_base_url_string(
1530415304 base_url->get_password(), type);
1530515305 }
@@ -15418,6 +15418,8 @@ tl::expected<url_pattern_init, errors> url_pattern_init::process(
1541815418 !url_pattern_helpers::is_absolute_pathname(*result.pathname, type)) {
1541915419 // Let baseURLPath be the result of running process a base URL string
1542015420 // given the result of URL path serializing baseURL and type.
15421+ // TODO: Optimization opportunity: Avoid returning a string if no slash
15422+ // exist.
1542115423 std::string base_url_path = url_pattern_helpers::process_base_url_string(
1542215424 base_url->get_pathname(), type);
1542315425
@@ -15430,12 +15432,12 @@ tl::expected<url_pattern_init, errors> url_pattern_init::process(
1543015432 if (slash_index != std::string::npos) {
1543115433 // Let new pathname be the code point substring from 0 to slash index +
1543215434 // 1 within baseURLPath.
15433- std::string new_pathname = base_url_path.substr(0, slash_index + 1);
15435+ base_url_path.resize( slash_index + 1);
1543415436 // Append result["pathname"] to the end of new pathname.
1543515437 ADA_ASSERT_TRUE(result.pathname.has_value());
15436- new_pathname .append(result.pathname.value( ));
15438+ base_url_path .append(std::move(* result.pathname));
1543715439 // Set result["pathname"] to new pathname.
15438- result.pathname = std::move(new_pathname );
15440+ result.pathname = std::move(base_url_path );
1543915441 }
1544015442 }
1544115443
@@ -15473,56 +15475,56 @@ tl::expected<url_pattern_init, errors> url_pattern_init::process(
1547315475}
1547415476
1547515477tl::expected<std::string, errors> url_pattern_init::process_protocol(
15476- std::string_view value, std::string_view type) {
15478+ std::string_view value, process_type type) {
1547715479 ada_log("process_protocol=", value, " [", type, "]");
1547815480 // Let strippedValue be the given value with a single trailing U+003A (:)
1547915481 // removed, if any.
1548015482 if (value.ends_with(":")) {
1548115483 value.remove_suffix(1);
1548215484 }
1548315485 // If type is "pattern" then return strippedValue.
15484- if (type == " pattern" ) {
15486+ if (type == process_type:: pattern) {
1548515487 return std::string(value);
1548615488 }
1548715489 // Return the result of running canonicalize a protocol given strippedValue.
1548815490 return url_pattern_helpers::canonicalize_protocol(value);
1548915491}
1549015492
1549115493tl::expected<std::string, errors> url_pattern_init::process_username(
15492- std::string_view value, std::string_view type) {
15494+ std::string_view value, process_type type) {
1549315495 // If type is "pattern" then return value.
15494- if (type == " pattern" ) {
15496+ if (type == process_type:: pattern) {
1549515497 return std::string(value);
1549615498 }
1549715499 // Return the result of running canonicalize a username given value.
1549815500 return url_pattern_helpers::canonicalize_username(value);
1549915501}
1550015502
1550115503tl::expected<std::string, errors> url_pattern_init::process_password(
15502- std::string_view value, std::string_view type) {
15504+ std::string_view value, process_type type) {
1550315505 // If type is "pattern" then return value.
15504- if (type == " pattern" ) {
15506+ if (type == process_type:: pattern) {
1550515507 return std::string(value);
1550615508 }
1550715509 // Return the result of running canonicalize a password given value.
1550815510 return url_pattern_helpers::canonicalize_password(value);
1550915511}
1551015512
1551115513tl::expected<std::string, errors> url_pattern_init::process_hostname(
15512- std::string_view value, std::string_view type) {
15514+ std::string_view value, process_type type) {
1551315515 ada_log("process_hostname value=", value, " type=", type);
1551415516 // If type is "pattern" then return value.
15515- if (type == " pattern" ) {
15517+ if (type == process_type:: pattern) {
1551615518 return std::string(value);
1551715519 }
1551815520 // Return the result of running canonicalize a hostname given value.
1551915521 return url_pattern_helpers::canonicalize_hostname(value);
1552015522}
1552115523
1552215524tl::expected<std::string, errors> url_pattern_init::process_port(
15523- std::string_view port, std::string_view protocol, std::string_view type) {
15525+ std::string_view port, std::string_view protocol, process_type type) {
1552415526 // If type is "pattern" then return portValue.
15525- if (type == " pattern" ) {
15527+ if (type == process_type:: pattern) {
1552615528 return std::string(port);
1552715529 }
1552815530 // Return the result of running canonicalize a port given portValue and
@@ -15531,9 +15533,9 @@ tl::expected<std::string, errors> url_pattern_init::process_port(
1553115533}
1553215534
1553315535tl::expected<std::string, errors> url_pattern_init::process_pathname(
15534- std::string_view value, std::string_view protocol, std::string_view type) {
15536+ std::string_view value, std::string_view protocol, process_type type) {
1553515537 // If type is "pattern" then return pathnameValue.
15536- if (type == " pattern" ) {
15538+ if (type == process_type:: pattern) {
1553715539 return std::string(value);
1553815540 }
1553915541
@@ -15549,31 +15551,31 @@ tl::expected<std::string, errors> url_pattern_init::process_pathname(
1554915551}
1555015552
1555115553tl::expected<std::string, errors> url_pattern_init::process_search(
15552- std::string_view value, std::string_view type) {
15554+ std::string_view value, process_type type) {
1555315555 // Let strippedValue be the given value with a single leading U+003F (?)
1555415556 // removed, if any.
1555515557 if (value.starts_with("?")) {
1555615558 value.remove_prefix(1);
1555715559 }
1555815560 ADA_ASSERT_TRUE(!value.starts_with("?"));
1555915561 // If type is "pattern" then return strippedValue.
15560- if (type == " pattern" ) {
15562+ if (type == process_type:: pattern) {
1556115563 return std::string(value);
1556215564 }
1556315565 // Return the result of running canonicalize a search given strippedValue.
1556415566 return url_pattern_helpers::canonicalize_search(value);
1556515567}
1556615568
1556715569tl::expected<std::string, errors> url_pattern_init::process_hash(
15568- std::string_view value, std::string_view type) {
15570+ std::string_view value, process_type type) {
1556915571 // Let strippedValue be the given value with a single leading U+0023 (#)
1557015572 // removed, if any.
1557115573 if (value.starts_with("#")) {
1557215574 value.remove_prefix(1);
1557315575 }
1557415576 ADA_ASSERT_TRUE(!value.starts_with("#"));
1557515577 // If type is "pattern" then return strippedValue.
15576- if (type == " pattern" ) {
15578+ if (type == process_type:: pattern) {
1557715579 return std::string(value);
1557815580 }
1557915581 // Return the result of running canonicalize a hash given strippedValue.
@@ -15599,7 +15601,6 @@ generate_regular_expression_and_name_list(
1559915601
1560015602 // Let name list be a new list
1560115603 std::vector<std::string> name_list{};
15602- const std::string full_wildcard_regexp_value = ".*";
1560315604
1560415605 // For each part of part list:
1560515606 for (const url_pattern_part& part : part_list) {
@@ -15645,7 +15646,7 @@ generate_regular_expression_and_name_list(
1564515646 // Otherwise if part's type is "full-wildcard"
1564615647 else if (part.type == url_pattern_part_type::FULL_WILDCARD) {
1564715648 // then set regexp value to full wildcard regexp value.
15648- regexp_value = full_wildcard_regexp_value ;
15649+ regexp_value = ".*" ;
1564915650 }
1565015651
1565115652 // If part's prefix is the empty string and part's suffix is the empty
@@ -15724,7 +15725,7 @@ generate_regular_expression_and_name_list(
1572415725 result += "$";
1572515726
1572615727 // Return (result, name list)
15727- return {result, name_list};
15728+ return {std::move( result), std::move( name_list) };
1572815729}
1572915730
1573015731bool is_ipv6_address(std::string_view input) noexcept {
@@ -16387,33 +16388,31 @@ std::string escape_regexp_string(std::string_view input) {
1638716388}
1638816389
1638916390std::string process_base_url_string(std::string_view input,
16390- std::string_view type) {
16391+ url_pattern_init::process_type type) {
1639116392 // If type is not "pattern" return input.
16392- if (type != " pattern" ) {
16393+ if (type != url_pattern_init::process_type:: pattern) {
1639316394 return std::string(input);
1639416395 }
1639516396 // Return the result of escaping a pattern string given input.
1639616397 return escape_pattern_string(input);
1639716398}
1639816399
16399- constexpr bool is_absolute_pathname(std::string_view input,
16400- std::string_view type) noexcept {
16400+ constexpr bool is_absolute_pathname(
16401+ std::string_view input, url_pattern_init::process_type type) noexcept {
1640116402 // If input is the empty string, then return false.
1640216403 if (input.empty()) [[unlikely]] {
1640316404 return false;
1640416405 }
1640516406 // If input[0] is U+002F (/), then return true.
1640616407 if (input.starts_with("/")) return true;
1640716408 // If type is "url", then return false.
16408- if (type == " url" ) return false;
16409+ if (type == url_pattern_init::process_type:: url) return false;
1640916410 // If input’s code point length is less than 2, then return false.
1641016411 if (input.size() < 2) return false;
1641116412 // If input[0] is U+005C (\) and input[1] is U+002F (/), then return true.
16412- if (input.starts_with("\\/")) return true;
1641316413 // If input[0] is U+007B ({) and input[1] is U+002F (/), then return true.
16414- if (input.starts_with("{/")) return true;
1641516414 // Return false.
16416- return false ;
16415+ return input[1] == '/' && (input[0] == '\\' || input[0] == '{') ;
1641716416}
1641816417
1641916418std::string generate_pattern_string(
0 commit comments