blob: 698e8c7d524770ab0caa2fbe689ec6ca25efaaa8 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// 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 <string_view>
#include "base/component_export.h"
#include "base/types/expected.h"
#include "third_party/abseil-cpp/absl/status/status.h"
#include "third_party/liburlpattern/options.h"
#include "third_party/liburlpattern/utils.h"
namespace liburlpattern {
class Pattern;
// Parse a pattern string and return the result. The parse will fail if the
// input |pattern| is not valid UTF-8. 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)
base::expected<Pattern, absl::Status> Parse(std::string_view pattern,
EncodeCallback callback,
const Options& options = Options());
} // namespace liburlpattern
#endif // THIRD_PARTY_LIBURLPATTERN_PARSE_H_