fixup! block attributes
This commit is contained in:
		
					parent
					
						
							
								653bd59eb5
							
						
					
				
			
			
				commit
				
					
						9dd10a558f
					
				
			
		
					 1 changed files with 25 additions and 8 deletions
				
			
		
							
								
								
									
										33
									
								
								src/attr.rs
									
										
									
									
									
								
							
							
						
						
									
										33
									
								
								src/attr.rs
									
										
									
									
									
								
							| 
						 | 
					@ -183,7 +183,7 @@ impl<I: Iterator<Item = char>> Parser<I> {
 | 
				
			||||||
                        ValueQuoted
 | 
					                        ValueQuoted
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                Invalid | Done => panic!(),
 | 
					                Invalid | Done => panic!("{:?}", self.state),
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -195,6 +195,10 @@ impl<I: Iterator<Item = char>> Parser<I> {
 | 
				
			||||||
            return (Done, Span::empty_at(start));
 | 
					            return (Done, Span::empty_at(start));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if self.state == Invalid {
 | 
				
			||||||
 | 
					            return (Invalid, Span::empty_at(start));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        while let Some(state_next) = self.step_char() {
 | 
					        while let Some(state_next) = self.step_char() {
 | 
				
			||||||
            if self.state != state_next {
 | 
					            if self.state != state_next {
 | 
				
			||||||
                return (
 | 
					                return (
 | 
				
			||||||
| 
						 | 
					@ -206,7 +210,7 @@ impl<I: Iterator<Item = char>> Parser<I> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        (
 | 
					        (
 | 
				
			||||||
            if self.state == Done { Done } else { Invalid },
 | 
					            if self.state == Done { Done } else { Invalid },
 | 
				
			||||||
            Span::new(start, self.pos - 1),
 | 
					            Span::new(start, self.pos.saturating_sub(1)),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -216,7 +220,7 @@ fn is_name_start(c: char) -> bool {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn is_name(c: char) -> bool {
 | 
					fn is_name(c: char) -> bool {
 | 
				
			||||||
    is_name_start(c) || c.is_ascii_digit() || matches!(c, '-' | '.')
 | 
					    is_name_start(c) || c.is_ascii_digit() || matches!(c, '-')
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum Element {
 | 
					enum Element {
 | 
				
			||||||
| 
						 | 
					@ -329,11 +333,24 @@ mod test {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #[test]
 | 
					    #[test]
 | 
				
			||||||
    fn valid() {
 | 
					    fn valid_full() {
 | 
				
			||||||
        let src0 = "{.class %comment%}";
 | 
					        let src = "{.class %comment%}";
 | 
				
			||||||
        assert_eq!(super::valid(src0.chars()), src0.len());
 | 
					        assert_eq!(super::valid(src.chars()), src.len());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let src1 = format!("{} trailing", src0);
 | 
					    #[test]
 | 
				
			||||||
        assert_eq!(super::valid(src1.chars()), src0.len());
 | 
					    fn valid_trailing() {
 | 
				
			||||||
 | 
					        let src = "{.class}";
 | 
				
			||||||
 | 
					        assert_eq!(
 | 
				
			||||||
 | 
					            super::valid(src.chars().chain("{.ignore}".chars())),
 | 
				
			||||||
 | 
					            src.len()
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #[test]
 | 
				
			||||||
 | 
					    fn valid_invalid() {
 | 
				
			||||||
 | 
					        assert_eq!(super::valid("{.class invalid}".chars()), 0);
 | 
				
			||||||
 | 
					        assert_eq!(super::valid("abc".chars()), 0);
 | 
				
			||||||
 | 
					        assert_eq!(super::valid("{.abc.}".chars()), 0);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue