// Copyright 2020 The Chromium Authors. All rights reserved. // Use of this source code is governed by an MIT-style license that can be // found in the LICENSE file or at https://opensource.org/licenses/MIT. #ifndef THIRD_PARTY_LIBURLPATTERN_PARSE_H_ #define THIRD_PARTY_LIBURLPATTERN_PARSE_H_ #include #include "base/component_export.h" #include "third_party/abseil-cpp/absl/status/statusor.h" #include "third_party/abseil-cpp/absl/strings/string_view.h" #include "third_party/liburlpattern/options.h" namespace liburlpattern { class Pattern; // Define a functor-style callback that will be invoked synchronously by the // Parse() method. It will be called for each part of the pattern consisting // of text to match strictly against an input. For example, for the pattern: // // `/foo/:bar.html` // // The callback will be invoked with `/foo`, `/`, and `.html` separately. // // The callback should validate the input and potentially perform any encoding // necessary. For example, some characters could be percent encoded. The // final encoded value for the input should be returned. typedef std::function(absl::string_view)> EncodeCallback; // Parse a pattern string and return the result. The input |pattern| must // consist of UTF-8 characters. Currently only group names may actually // contain non-ASCII characters, however. Unicode characters in other parts // of the pattern will cause an error to be returned. A |callback| must be // provided to validate and encode plain text parts of the pattern. An // |options| value may be provided to override default behavior. COMPONENT_EXPORT(LIBURLPATTERN) absl::StatusOr Parse(absl::string_view pattern, EncodeCallback callback, const Options& options = Options()); } // namespace liburlpattern #endif // THIRD_PARTY_LIBURLPATTERN_PARSE_H_