Skip to content

Commit 2c110e5

Browse files
authored
add an option to not include any urlpattern code (#904)
1 parent 8127fb5 commit 2c110e5

14 files changed

+65
-0
lines changed

cmake/ada-flags.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ option(ADA_TOOLS "Build cli tools (adaparse)" OFF)
1919
option(ADA_BENCHMARKS "Build benchmarks" OFF)
2020
option(ADA_TESTING "Build tests" OFF)
2121
option(ADA_USE_UNSAFE_STD_REGEX_PROVIDER "Enable unsafe regex provider that uses std::regex" OFF)
22+
option(ADA_INCLUDE_URL_PATTERN "Include URL pattern implementation" ON)
2223

2324
if (ADA_COVERAGE)
2425
message(STATUS "You want to compute coverage. We assume that you have installed gcovr.")

include/ada.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,14 @@
2929
#include "ada/url_aggregator-inl.h"
3030
#include "ada/url_search_params.h"
3131
#include "ada/url_search_params-inl.h"
32+
33+
#if ADA_INCLUDE_URL_PATTERN
3234
#include "ada/url_pattern.h"
3335
#include "ada/url_pattern-inl.h"
3436
#include "ada/url_pattern_helpers.h"
3537
#include "ada/url_pattern_helpers-inl.h"
3638
#include "ada/url_pattern_regex.h"
39+
#endif // ADA_INCLUDE_URL_PATTERN
3740

3841
// Public API
3942
#include "ada/ada_version.h"

include/ada/common_defs.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,4 +262,8 @@ namespace ada {
262262
#endif
263263
#endif
264264

265+
#ifndef ADA_INCLUDE_URL_PATTERN
266+
#define ADA_INCLUDE_URL_PATTERN 1
267+
#endif // ADA_INCLUDE_URL_PATTERN
268+
265269
#endif // ADA_COMMON_DEFS_H

include/ada/implementation-inl.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
#ifndef ADA_IMPLEMENTATION_INL_H
55
#define ADA_IMPLEMENTATION_INL_H
66

7+
#if ADA_INCLUDE_URL_PATTERN
78
#include "ada/url_pattern_regex.h"
9+
#endif // ADA_INCLUDE_URL_PATTERN
10+
811
#include "ada/expected.h"
912
#include "ada/implementation.h"
1013

@@ -13,6 +16,7 @@
1316

1417
namespace ada {
1518

19+
#if ADA_INCLUDE_URL_PATTERN
1620
template <url_pattern_regex::regex_concept regex_provider>
1721
ada_warn_unused tl::expected<url_pattern<regex_provider>, errors>
1822
parse_url_pattern(std::variant<std::string_view, url_pattern_init> input,
@@ -21,6 +25,7 @@ parse_url_pattern(std::variant<std::string_view, url_pattern_init> input,
2125
return parser::parse_url_pattern_impl<regex_provider>(std::move(input),
2226
base_url, options);
2327
}
28+
#endif // ADA_INCLUDE_URL_PATTERN
2429

2530
} // namespace ada
2631

include/ada/implementation.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@
1313
#include "ada/url.h"
1414
#include "ada/common_defs.h"
1515
#include "ada/errors.h"
16+
17+
#if ADA_INCLUDE_URL_PATTERN
1618
#include "ada/url_pattern_init.h"
19+
#endif // ADA_INCLUDE_URL_PATTERN
1720

1821
namespace ada {
1922

@@ -47,6 +50,7 @@ extern template ada::result<url_aggregator> parse<url_aggregator>(
4750
bool can_parse(std::string_view input,
4851
const std::string_view* base_input = nullptr);
4952

53+
#if ADA_INCLUDE_URL_PATTERN
5054
/**
5155
* Implementation of the URL pattern parsing algorithm.
5256
* @see https://urlpattern.spec.whatwg.org
@@ -61,6 +65,7 @@ ada_warn_unused tl::expected<url_pattern<regex_provider>, errors>
6165
parse_url_pattern(std::variant<std::string_view, url_pattern_init> input,
6266
const std::string_view* base_url = nullptr,
6367
const url_pattern_options* options = nullptr);
68+
#endif // ADA_INCLUDE_URL_PATTERN
6469

6570
/**
6671
* Computes a href string from a file path. The function assumes

include/ada/parser-inl.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,18 @@
55
#define ADA_PARSER_INL_H
66

77
#include "ada/expected.h"
8+
#if ADA_INCLUDE_URL_PATTERN
89
#include "ada/url_pattern.h"
910
#include "ada/url_pattern_helpers.h"
11+
#endif // ADA_INCLUDE_URL_PATTERN
1012
#include "ada/parser.h"
1113

1214
#include <string>
1315
#include <string_view>
1416
#include <variant>
1517

1618
namespace ada::parser {
19+
#if ADA_INCLUDE_URL_PATTERN
1720
template <url_pattern_regex::regex_concept regex_provider>
1821
tl::expected<url_pattern<regex_provider>, errors> parse_url_pattern_impl(
1922
std::variant<std::string_view, url_pattern_init> input,
@@ -267,6 +270,7 @@ tl::expected<url_pattern<regex_provider>, errors> parse_url_pattern_impl(
267270
// Return urlPattern.
268271
return url_pattern_;
269272
}
273+
#endif // ADA_INCLUDE_URL_PATTERN
270274

271275
} // namespace ada::parser
272276

include/ada/parser.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,23 @@
99
#include <variant>
1010

1111
#include "ada/expected.h"
12+
13+
#if ADA_INCLUDE_URL_PATTERN
1214
#include "ada/url_pattern_regex.h"
1315
#include "ada/url_pattern_init.h"
16+
#endif // ADA_INCLUDE_URL_PATTERN
1417

1518
/**
1619
* @private
1720
*/
1821
namespace ada {
1922
struct url_aggregator;
2023
struct url;
24+
#if ADA_INCLUDE_URL_PATTERN
2125
template <url_pattern_regex::regex_concept regex_provider>
2226
class url_pattern;
2327
struct url_pattern_options;
28+
#endif // ADA_INCLUDE_URL_PATTERN
2429
enum class errors : uint8_t;
2530
} // namespace ada
2631

@@ -53,10 +58,12 @@ extern template url_aggregator parse_url_impl<url_aggregator>(
5358
extern template url parse_url_impl<url>(std::string_view user_input,
5459
const url* base_url);
5560

61+
#if ADA_INCLUDE_URL_PATTERN
5662
template <url_pattern_regex::regex_concept regex_provider>
5763
tl::expected<url_pattern<regex_provider>, errors> parse_url_pattern_impl(
5864
std::variant<std::string_view, url_pattern_init> input,
5965
const std::string_view* base_url, const url_pattern_options* options);
66+
#endif // ADA_INCLUDE_URL_PATTERN
6067

6168
} // namespace ada::parser
6269

include/ada/url_aggregator.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,12 +223,15 @@ struct url_aggregator : url_base {
223223
std::string_view, const url_aggregator *);
224224
friend url_aggregator parser::parse_url_impl<url_aggregator, false>(
225225
std::string_view, const url_aggregator *);
226+
227+
#if ADA_INCLUDE_URL_PATTERN
226228
// url_pattern methods
227229
template <url_pattern_regex::regex_concept regex_provider>
228230
friend tl::expected<url_pattern<regex_provider>, errors>
229231
parse_url_pattern_impl(std::variant<std::string_view, url_pattern_init> input,
230232
const std::string_view *base_url,
231233
const url_pattern_options *options);
234+
#endif // ADA_INCLUDE_URL_PATTERN
232235

233236
std::string buffer{};
234237
url_components components{};

src/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,9 @@ endif()
5959
if(ADA_TESTING)
6060
target_compile_definitions(ada PRIVATE ADA_TESTING=1)
6161
endif()
62+
63+
if(ADA_INCLUDE_URL_PATTERN)
64+
target_compile_definitions(ada PRIVATE ADA_INCLUDE_URL_PATTERN=1)
65+
else()
66+
target_compile_definitions(ada PRIVATE ADA_INCLUDE_URL_PATTERN=0)
67+
endif()

src/ada.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@
88
#include "parser.cpp"
99
#include "url_components.cpp"
1010
#include "url_aggregator.cpp"
11+
12+
#if ADA_INCLUDE_URL_PATTERN
1113
#include "url_pattern.cpp"
1214
#include "url_pattern_helpers.cpp"
1315
#include "url_pattern_regex.cpp"
16+
#endif // ADA_INCLUDE_URL_PATTERN
17+
1418
#include "ada_c.cpp"

0 commit comments

Comments
 (0)