Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(112)

Unified Diff: source/common/brkiter.cpp

Issue 1621843002: ICU 56 update step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@561
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « source/common/brkeng.cpp ('k') | source/common/caniter.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: source/common/brkiter.cpp
diff --git a/source/common/brkiter.cpp b/source/common/brkiter.cpp
index a4e4466808a3dae236d45bab302185bb070024c7..d466fb80d25e952c0ccb9600732fba2d6dc45faa 100644
--- a/source/common/brkiter.cpp
+++ b/source/common/brkiter.cpp
@@ -1,6 +1,6 @@
/*
*******************************************************************************
-* Copyright (C) 1997-2014, International Business Machines Corporation and
+* Copyright (C) 1997-2015, International Business Machines Corporation and
* others. All Rights Reserved.
*******************************************************************************
*
@@ -27,6 +27,7 @@
#include "unicode/udata.h"
#include "unicode/ures.h"
#include "unicode/ustring.h"
+#include "unicode/filteredbrk.h"
#include "ucln_cmn.h"
#include "cstring.h"
#include "umutex.h"
@@ -69,13 +70,7 @@ BreakIterator::buildInstance(const Locale& loc, const char *type, int32_t kind,
ures_initStackObject(brkName);
// Get the locale
- UResourceBundle *b = ures_open(U_ICUDATA_BRKITR, loc.getName(), &status);
- /* this is a hack for now. Should be fixed when the data is fetched from
- brk_index.txt */
- if(status==U_USING_DEFAULT_WARNING){
- status=U_ZERO_ERROR;
- ures_openFillIn(b, U_ICUDATA_BRKITR, "", &status);
- }
+ UResourceBundle *b = ures_openNoDefault(U_ICUDATA_BRKITR, loc.getName(), &status);
// Get the "boundaries" array.
if (U_SUCCESS(status)) {
@@ -389,6 +384,7 @@ BreakIterator::createInstance(const Locale& loc, int32_t kind, UErrorCode& statu
}
// -------------------------------------
+enum { kKeyValueLenMax = 32 };
BreakIterator*
BreakIterator::makeInstance(const Locale& loc, int32_t kind, UErrorCode& status)
@@ -397,6 +393,7 @@ BreakIterator::makeInstance(const Locale& loc, int32_t kind, UErrorCode& status)
if (U_FAILURE(status)) {
return NULL;
}
+ char lbType[kKeyValueLenMax];
BreakIterator *result = NULL;
switch (kind) {
@@ -407,10 +404,32 @@ BreakIterator::makeInstance(const Locale& loc, int32_t kind, UErrorCode& status)
result = BreakIterator::buildInstance(loc, "word", kind, status);
break;
case UBRK_LINE:
- result = BreakIterator::buildInstance(loc, "line", kind, status);
+ uprv_strcpy(lbType, "line");
+ {
+ char lbKeyValue[kKeyValueLenMax] = {0};
+ UErrorCode kvStatus = U_ZERO_ERROR;
+ int32_t kLen = loc.getKeywordValue("lb", lbKeyValue, kKeyValueLenMax, kvStatus);
+ if (U_SUCCESS(kvStatus) && kLen > 0 && (uprv_strcmp(lbKeyValue,"strict")==0 || uprv_strcmp(lbKeyValue,"normal")==0 || uprv_strcmp(lbKeyValue,"loose")==0)) {
+ uprv_strcat(lbType, "_");
+ uprv_strcat(lbType, lbKeyValue);
+ }
+ }
+ result = BreakIterator::buildInstance(loc, lbType, kind, status);
break;
case UBRK_SENTENCE:
result = BreakIterator::buildInstance(loc, "sentence", kind, status);
+ {
+ char ssKeyValue[kKeyValueLenMax] = {0};
+ UErrorCode kvStatus = U_ZERO_ERROR;
+ int32_t kLen = loc.getKeywordValue("ss", ssKeyValue, kKeyValueLenMax, kvStatus);
+ if (U_SUCCESS(kvStatus) && kLen > 0 && uprv_strcmp(ssKeyValue,"standard")==0) {
+ FilteredBreakIteratorBuilder* fbiBuilder = FilteredBreakIteratorBuilder::createInstance(loc, kvStatus);
+ if (U_SUCCESS(kvStatus)) {
+ result = fbiBuilder->build(result, status);
+ delete fbiBuilder;
+ }
+ }
+ }
break;
case UBRK_TITLE:
result = BreakIterator::buildInstance(loc, "title", kind, status);
« no previous file with comments | « source/common/brkeng.cpp ('k') | source/common/caniter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698