@@ -207,24 +207,29 @@ impl Preferences {
207
207
} )
208
208
}
209
209
210
- pub fn line_length_guide ( & self ) -> Option < usize > {
210
+ pub fn line_length_guides ( & self ) -> Vec < usize > {
211
211
self . data
212
212
. as_ref ( )
213
- . and_then ( |data| match data[ LINE_LENGTH_GUIDE_KEY ] {
214
- Yaml :: Integer ( line_length) => Some ( line_length as usize ) ,
213
+ . map ( |data| match data[ LINE_LENGTH_GUIDE_KEY ] {
214
+ Yaml :: Integer ( line_length) => vec ! [ line_length as usize ] ,
215
215
Yaml :: Boolean ( line_length_guide) => {
216
216
let default = self . default [ LINE_LENGTH_GUIDE_KEY ]
217
217
. as_i64 ( )
218
218
. expect ( "Couldn't find default line length guide setting!" ) ;
219
219
220
220
if line_length_guide {
221
- Some ( default as usize )
221
+ vec ! [ default as usize ]
222
222
} else {
223
- None
223
+ vec ! [ ]
224
224
}
225
225
}
226
- _ => None ,
226
+ Yaml :: Array ( ref guides) => guides
227
+ . into_iter ( )
228
+ . filter_map ( |value| value. as_i64 ( ) . map ( |v| v as usize ) )
229
+ . collect ( ) ,
230
+ _ => vec ! [ ] ,
227
231
} )
232
+ . unwrap_or_default ( )
228
233
}
229
234
230
235
pub fn line_wrapping ( & self ) -> bool {
@@ -584,23 +589,31 @@ mod tests {
584
589
let data = YamlLoader :: load_from_str ( "line_length_guide: 100" ) . unwrap ( ) ;
585
590
let preferences = Preferences :: new ( data. into_iter ( ) . nth ( 0 ) ) ;
586
591
587
- assert_eq ! ( preferences. line_length_guide( ) , Some ( 100 ) ) ;
592
+ assert_eq ! ( preferences. line_length_guides( ) , vec![ 100 ] ) ;
593
+ }
594
+
595
+ #[ test]
596
+ fn preferences_returns_user_defined_multiple_line_length_guides ( ) {
597
+ let data = YamlLoader :: load_from_str ( "line_length_guide: [80, 100, 120]" ) . unwrap ( ) ;
598
+ let preferences = Preferences :: new ( data. into_iter ( ) . nth ( 0 ) ) ;
599
+
600
+ assert_eq ! ( preferences. line_length_guides( ) , vec![ 80 , 100 , 120 ] ) ;
588
601
}
589
602
590
603
#[ test]
591
604
fn preferences_returns_user_disabled_line_length_guide ( ) {
592
605
let data = YamlLoader :: load_from_str ( "line_length_guide: false" ) . unwrap ( ) ;
593
606
let preferences = Preferences :: new ( data. into_iter ( ) . nth ( 0 ) ) ;
594
607
595
- assert_eq ! ( preferences. line_length_guide ( ) , None ) ;
608
+ assert_eq ! ( preferences. line_length_guides ( ) , Vec :: < usize > :: new ( ) ) ;
596
609
}
597
610
598
611
#[ test]
599
612
fn preferences_returns_user_default_line_length_guide ( ) {
600
613
let data = YamlLoader :: load_from_str ( "line_length_guide: true" ) . unwrap ( ) ;
601
614
let preferences = Preferences :: new ( data. into_iter ( ) . nth ( 0 ) ) ;
602
615
603
- assert_eq ! ( preferences. line_length_guide ( ) , Some ( 80 ) ) ;
616
+ assert_eq ! ( preferences. line_length_guides ( ) , vec! [ 80 ] ) ;
604
617
}
605
618
606
619
#[ test]
0 commit comments