18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project// Copyright 2013 The Chromium Authors. All rights reserved. 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project// Use of this source code is governed by a BSD-style license that can be 38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project// found in the LICENSE file. 48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef UI_APP_LIST_SEARCH_TOKENIZED_STRING_H_ 68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define UI_APP_LIST_SEARCH_TOKENIZED_STRING_H_ 78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <vector> 98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "base/basictypes.h" 118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "base/strings/string16.h" 128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "ui/app_list/app_list_export.h" 138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "ui/gfx/range/range.h" 148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectnamespace app_list { 168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project// TokenizedString takes a string and breaks it down into token words. It 188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project// first breaks using BreakIterator to get all the words. Then it breaks 198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project// the words again at camel case boundaries and alpha/number boundaries. 208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectclass APP_LIST_EXPORT TokenizedString { 218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project public: 228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project typedef std::vector<base::string16> Tokens; 238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project typedef std::vector<gfx::Range> Mappings; 248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project explicit TokenizedString(const base::string16& text); 268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project ~TokenizedString(); 27e1e03df288d5a44bfbffbd86588395c7cbbc27dfDavid 'Digit' Turner 2893e0d9cfb6d950b638ba93cf5318e5689e4ba64eDavid 'Digit' Turner const base::string16& text() const { return text_; } 29031d655004e505a15e92580a16a181d1d247c4d5David 'Digit' Turner const Tokens& tokens() const { return tokens_; } 308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project const Mappings& mappings() const { return mappings_; } 318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project private: 338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project void Tokenize(); 348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner // Input text. 365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner const base::string16 text_; 375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner // Broken down tokens and the index mapping of tokens in original string. 395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner Tokens tokens_; 405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner Mappings mappings_; 41dd9cb7929e2b98bf9f8017ebbd7e433d38541664David 'Digit' Turner 425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner DISALLOW_COPY_AND_ASSIGN(TokenizedString); 435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}; 445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner} // namespace app_list 465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif // UI_APP_LIST_SEARCH_TOKENIZED_STRING_H_ 485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner