chromium/ios/web/common/annotations_utils.h

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_WEB_COMMON_ANNOTATIONS_UTILS_H_
#define IOS_WEB_COMMON_ANNOTATIONS_UTILS_H_

#import <UIKit/UIKit.h>

#import "base/values.h"

namespace web {

using TextAnnotation = std::pair<base::Value::Dict, NSTextCheckingResult*>;

// Checks if the detected entity is an URL and more specifically an email.
bool IsNSTextCheckingResultEmail(NSTextCheckingResult* result);

// Returns a NSTextCheckingTypeLink result from an email string.
NSTextCheckingResult* MakeNSTextCheckingResultEmail(NSString* email,
                                                    NSRange range);

// Encapsulates data into a `TextAnnotation` that can be passed to JS.
TextAnnotation ConvertMatchToAnnotation(NSString* source,
                                        NSRange range,
                                        NSTextCheckingResult* data,
                                        NSString* type);

}  // namespace web

#endif  // IOS_WEB_COMMON_ANNOTATIONS_UTILS_H_