@@ -312,6 +312,8 @@ pub fn head_row_start(tokenizer: &mut Tokenizer) -> State {
312
312
Some ( b'|' ) => State :: Retry ( StateName :: GfmTableHeadRowBreak ) ,
313
313
_ => {
314
314
tokenizer. tokenize_state . seen = true ;
315
+ // Count the first character, that isn’t a pipe, double.
316
+ tokenizer. tokenize_state . size_b += 1 ;
315
317
State :: Retry ( StateName :: GfmTableHeadRowBreak )
316
318
}
317
319
}
@@ -332,22 +334,34 @@ pub fn head_row_break(tokenizer: &mut Tokenizer) -> State {
332
334
None => {
333
335
tokenizer. tokenize_state . seen = false ;
334
336
tokenizer. tokenize_state . size = 0 ;
337
+ tokenizer. tokenize_state . size_b = 0 ;
335
338
State :: Nok
336
339
}
337
340
Some ( b'\n' ) => {
338
- // Feel free to interrupt:
339
- tokenizer. interrupt = true ;
340
- tokenizer. exit ( Name :: GfmTableRow ) ;
341
- tokenizer. enter ( Name :: LineEnding ) ;
342
- tokenizer. consume ( ) ;
343
- tokenizer. exit ( Name :: LineEnding ) ;
344
- State :: Next ( StateName :: GfmTableHeadDelimiterStart )
341
+ // If anything other than one pipe (ignoring whitespace) was used, it’s fine.
342
+ if tokenizer. tokenize_state . size_b > 1 {
343
+ tokenizer. tokenize_state . size_b = 0 ;
344
+ // Feel free to interrupt:
345
+ tokenizer. interrupt = true ;
346
+ tokenizer. exit ( Name :: GfmTableRow ) ;
347
+ tokenizer. enter ( Name :: LineEnding ) ;
348
+ tokenizer. consume ( ) ;
349
+ tokenizer. exit ( Name :: LineEnding ) ;
350
+ State :: Next ( StateName :: GfmTableHeadDelimiterStart )
351
+ } else {
352
+ tokenizer. tokenize_state . seen = false ;
353
+ tokenizer. tokenize_state . size = 0 ;
354
+ tokenizer. tokenize_state . size_b = 0 ;
355
+ State :: Nok
356
+ }
345
357
}
346
358
Some ( b'\t' | b' ' ) => {
347
359
tokenizer. attempt ( State :: Next ( StateName :: GfmTableHeadRowBreak ) , State :: Nok ) ;
348
360
State :: Retry ( space_or_tab ( tokenizer) )
349
361
}
350
362
_ => {
363
+ tokenizer. tokenize_state . size_b += 1 ;
364
+
351
365
// Whether a delimiter was seen.
352
366
if tokenizer. tokenize_state . seen {
353
367
tokenizer. tokenize_state . seen = false ;
0 commit comments