blob: 95c28b76b6380eefbc20635abad90dee6c602a62 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef FLUTTER_FML_STRING_RANGE_SANITIZATION_H_
#define FLUTTER_FML_STRING_RANGE_SANITIZATION_H_
#include <Foundation/Foundation.h>
namespace fml {
// Returns a range encompassing the grapheme cluster in which |index| is located.
//
// A nil |text| or an index greater than or equal to text.length will result in
// `NSRange(NSNotFound, 0)`.
NSRange RangeForCharacterAtIndex(NSString* text, NSUInteger index);
// Returns a range encompassing the grapheme clusters falling in |range|.
//
// This method will not alter the length of the input range, but will ensure
// that the range's location is not in the middle of a multi-byte unicode
// sequence.
//
// An invalid range will result in `NSRange(NSNotFound, 0)`.
NSRange RangeForCharactersInRange(NSString* text, NSRange range);
} // namespace fml
#endif // FLUTTER_FML_STRING_RANGE_SANITIZATION_H_