// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#pragma once

#include <string>
#include <string_view>

namespace zxdb {

// Extracts the substring into the given file path of the last path component
// (the stuff following the last slash). If the path ends in a slash, it will
// return an empty StringView. If the input has no slash, it will return the
// whole thing.
std::string_view ExtractLastFileComponent(std::string_view path);

// Returns true if the given file path is absolute (begins with a slash).
// The contents could still have relative components ("/foo/../bar" is still
// absolute).
bool IsPathAbsolute(const std::string& path);

// Concatenates the two path components with a slash in between them. "first"
// can end with a slash or not. The second component shouldn't begin with a
// slash.
std::string CatPathComponents(const std::string& first,
                              const std::string& second);

}  // namespace zxdb
