// Copyright (c) 2011 The Chromium 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 CHROME_BROWSER_SPELLCHECKER_WORD_TRIMMER_H_
#define CHROME_BROWSER_SPELLCHECKER_WORD_TRIMMER_H_

#include "base/strings/string16.h"

// Trims |text| to contain only the range from |start| to |end| and |keep| words
// on either side of the range. The |start| and |end| parameters are character
// indexes into |text|. The |keep| parameter is the number of words to keep on
// either side of the |start|-|end| range. The function updates |start| in
// accordance with the trimming.
//
// Example:
//
//  size_t start = 14;
//  size_t end = 23;
//  base::string16 text =
//      base::ASCIIToUTF16("one two three four five six seven eight");
//  int keep = 2;
//  base::string16 trimmed = TrimWords(&start, end, text, keep);
//  DCHECK(trimmed == base::ASCIIToUTF16("two three four five six seven"));
//  DCHECK(start == 10);
//
base::string16 TrimWords(size_t* start,
                         size_t end,
                         const base::string16& text,
                         size_t keep);

#endif  // CHROME_BROWSER_SPELLCHECKER_WORD_TRIMMER_H_
