@@ -18,7 +18,7 @@ use icu_properties::script::ScriptWithExtensions;
18
18
use icu_properties:: {
19
19
props:: {
20
20
CanonicalCombiningClass , EnumeratedProperty , GeneralCategory , GeneralCategoryGroup ,
21
- GraphemeClusterBreak , Script , SentenceBreak , WordBreak ,
21
+ GraphemeClusterBreak , LineBreak , Script , SentenceBreak , WordBreak ,
22
22
} ,
23
23
CodePointMapData ,
24
24
} ;
@@ -487,12 +487,14 @@ where
487
487
+ DataProvider < PropertyEnumCanonicalCombiningClassV1 >
488
488
+ DataProvider < PropertyEnumGeneralCategoryV1 >
489
489
+ DataProvider < PropertyEnumGraphemeClusterBreakV1 >
490
+ + DataProvider < PropertyEnumLineBreakV1 >
490
491
+ DataProvider < PropertyEnumScriptV1 >
491
492
+ DataProvider < PropertyEnumSentenceBreakV1 >
492
493
+ DataProvider < PropertyEnumWordBreakV1 >
493
494
+ DataProvider < PropertyNameParseCanonicalCombiningClassV1 >
494
495
+ DataProvider < PropertyNameParseGeneralCategoryMaskV1 >
495
496
+ DataProvider < PropertyNameParseGraphemeClusterBreakV1 >
497
+ + DataProvider < PropertyNameParseLineBreakV1 >
496
498
+ DataProvider < PropertyNameParseScriptV1 >
497
499
+ DataProvider < PropertyNameParseSentenceBreakV1 >
498
500
+ DataProvider < PropertyNameParseWordBreakV1 >
@@ -1128,6 +1130,8 @@ where
1128
1130
let mut try_scx = Err ( PEK :: UnknownProperty . into ( ) ) ;
1129
1131
// contains a value for the Grapheme_Cluster_Break property that needs to be tried
1130
1132
let mut try_gcb = Err ( PEK :: UnknownProperty . into ( ) ) ;
1133
+ // contains a value for the Line_Break property that needs to be tried
1134
+ let mut try_lb = Err ( PEK :: UnknownProperty . into ( ) ) ;
1131
1135
// contains a value for the Sentence_Break property that needs to be tried
1132
1136
let mut try_sb = Err ( PEK :: UnknownProperty . into ( ) ) ;
1133
1137
// contains a value for the Word_Break property that needs to be tried
@@ -1150,6 +1154,7 @@ where
1150
1154
GraphemeClusterBreak :: NAME | GraphemeClusterBreak :: SHORT_NAME => {
1151
1155
try_gcb = Ok ( value)
1152
1156
}
1157
+ LineBreak :: NAME | LineBreak :: SHORT_NAME => try_lb = Ok ( value) ,
1153
1158
Script :: NAME | Script :: SHORT_NAME => try_sc = Ok ( value) ,
1154
1159
SentenceBreak :: NAME | SentenceBreak :: SHORT_NAME => try_sb = Ok ( value) ,
1155
1160
WordBreak :: NAME | WordBreak :: SHORT_NAME => try_wb = Ok ( value) ,
@@ -1187,6 +1192,7 @@ where
1187
1192
. or_else ( |_| try_scx. and_then ( |value| self . try_load_script_extensions_set ( value) ) )
1188
1193
. or_else ( |_| try_binary. and_then ( |value| self . try_load_ecma262_binary_set ( value) ) )
1189
1194
. or_else ( |_| try_gcb. and_then ( |value| self . try_load_grapheme_cluster_break_set ( value) ) )
1195
+ . or_else ( |_| try_lb. and_then ( |value| self . try_load_line_break_set ( value) ) )
1190
1196
. or_else ( |_| try_sb. and_then ( |value| self . try_load_sentence_break_set ( value) ) )
1191
1197
. or_else ( |_| try_wb. and_then ( |value| self . try_load_word_break_set ( value) ) )
1192
1198
. or_else ( |_| try_ccc. and_then ( |value| self . try_load_ccc_set ( value) ) )
@@ -1419,6 +1425,21 @@ where
1419
1425
Ok ( ( ) )
1420
1426
}
1421
1427
1428
+ fn try_load_line_break_set ( & mut self , name : & str ) -> Result < ( ) > {
1429
+ let parser = PropertyParser :: < LineBreak > :: try_new_unstable ( self . property_provider )
1430
+ . map_err ( |_| PEK :: Internal ) ?;
1431
+ let lb_value = parser
1432
+ . as_borrowed ( )
1433
+ . get_loose ( name)
1434
+ . ok_or ( PEK :: UnknownProperty ) ?;
1435
+ // TODO(#3550): This could be cached; does not depend on name.
1436
+ let property_map = CodePointMapData :: < LineBreak > :: try_new_unstable ( self . property_provider )
1437
+ . map_err ( |_| PEK :: Internal ) ?;
1438
+ let set = property_map. as_borrowed ( ) . get_set_for_value ( lb_value) ;
1439
+ self . single_set . add_set ( & set. to_code_point_inversion_list ( ) ) ;
1440
+ Ok ( ( ) )
1441
+ }
1442
+
1422
1443
fn try_load_sentence_break_set ( & mut self , name : & str ) -> Result < ( ) > {
1423
1444
let parser = PropertyParser :: < SentenceBreak > :: try_new_unstable ( self . property_provider )
1424
1445
. map_err ( |_| PEK :: Internal ) ?;
@@ -1670,12 +1691,14 @@ where
1670
1691
+ DataProvider < PropertyEnumCanonicalCombiningClassV1 >
1671
1692
+ DataProvider < PropertyEnumGeneralCategoryV1 >
1672
1693
+ DataProvider < PropertyEnumGraphemeClusterBreakV1 >
1694
+ + DataProvider < PropertyEnumLineBreakV1 >
1673
1695
+ DataProvider < PropertyEnumScriptV1 >
1674
1696
+ DataProvider < PropertyEnumSentenceBreakV1 >
1675
1697
+ DataProvider < PropertyEnumWordBreakV1 >
1676
1698
+ DataProvider < PropertyNameParseCanonicalCombiningClassV1 >
1677
1699
+ DataProvider < PropertyNameParseGeneralCategoryMaskV1 >
1678
1700
+ DataProvider < PropertyNameParseGraphemeClusterBreakV1 >
1701
+ + DataProvider < PropertyNameParseLineBreakV1 >
1679
1702
+ DataProvider < PropertyNameParseScriptV1 >
1680
1703
+ DataProvider < PropertyNameParseSentenceBreakV1 >
1681
1704
+ DataProvider < PropertyNameParseWordBreakV1 >
@@ -1786,12 +1809,14 @@ where
1786
1809
+ DataProvider < PropertyEnumCanonicalCombiningClassV1 >
1787
1810
+ DataProvider < PropertyEnumGeneralCategoryV1 >
1788
1811
+ DataProvider < PropertyEnumGraphemeClusterBreakV1 >
1812
+ + DataProvider < PropertyEnumLineBreakV1 >
1789
1813
+ DataProvider < PropertyEnumScriptV1 >
1790
1814
+ DataProvider < PropertyEnumSentenceBreakV1 >
1791
1815
+ DataProvider < PropertyEnumWordBreakV1 >
1792
1816
+ DataProvider < PropertyNameParseCanonicalCombiningClassV1 >
1793
1817
+ DataProvider < PropertyNameParseGeneralCategoryMaskV1 >
1794
1818
+ DataProvider < PropertyNameParseGraphemeClusterBreakV1 >
1819
+ + DataProvider < PropertyNameParseLineBreakV1 >
1795
1820
+ DataProvider < PropertyNameParseScriptV1 >
1796
1821
+ DataProvider < PropertyNameParseSentenceBreakV1 >
1797
1822
+ DataProvider < PropertyNameParseWordBreakV1 >
0 commit comments