@@ -199,6 +199,12 @@ function isPrintable(c) {
199
199
|| ( 0x10000 <= c && c <= 0x10FFFF ) ;
200
200
}
201
201
202
+ // Return true if the char is printable or a tab.
203
+ // derived from nb-char - #x85 - #xA0 - #x2028 - #x2029.
204
+ function isPrintableWithTabs ( c ) {
205
+ return isPrintable ( c ) || c === CHAR_TAB ;
206
+ }
207
+
202
208
// [34] ns-char ::= nb-char - s-white
203
209
// [27] nb-char ::= c-printable - b-char - c-byte-order-mark
204
210
// [26] b-char ::= b-line-feed | b-carriage-return
@@ -332,7 +338,7 @@ function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth,
332
338
// Check for disallowed characters to rule out plain and single.
333
339
for ( i = 0 ; i < string . length ; char >= 0x10000 ? i += 2 : i ++ ) {
334
340
char = codePointAt ( string , i ) ;
335
- if ( ! isPrintable ( char ) ) {
341
+ if ( ! isPrintableWithTabs ( char ) ) {
336
342
return STYLE_DOUBLE ;
337
343
}
338
344
plain = plain && isPlainSafe ( char , prevChar , inblock ) ;
@@ -352,7 +358,7 @@ function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth,
352
358
string [ previousLineBreak + 1 ] !== ' ' ) ;
353
359
previousLineBreak = i ;
354
360
}
355
- } else if ( ! isPrintable ( char ) ) {
361
+ } else if ( ! isPrintableWithTabs ( char ) ) {
356
362
return STYLE_DOUBLE ;
357
363
}
358
364
plain = plain && isPlainSafe ( char , prevChar , inblock ) ;
0 commit comments