File tree Expand file tree Collapse file tree 3 files changed +24
-1
lines changed Expand file tree Collapse file tree 3 files changed +24
-1
lines changed Original file line number Diff line number Diff line change 11[package ]
22name = " cssparser"
3- version = " 0.19.4 "
3+ version = " 0.19.5 "
44authors = [ " Simon Sapin <simon.sapin@exyr.org>" ]
55
66description = " Rust implementation of CSS Syntax Level 3"
Original file line number Diff line number Diff line change @@ -101,6 +101,15 @@ impl<'i> ParserInput<'i> {
101101 }
102102 }
103103
104+ /// Create a new input for a parser. Line numbers in locations
105+ /// are offset by the given value.
106+ pub fn new_with_line_number_offset ( input : & ' i str , first_line_number : u32 ) -> ParserInput < ' i > {
107+ ParserInput {
108+ tokenizer : Tokenizer :: with_first_line_number ( input, first_line_number) ,
109+ cached_token : None ,
110+ }
111+ }
112+
104113 #[ inline]
105114 fn cached_token_ref ( & self ) -> & Token < ' i > {
106115 & self . cached_token . as_ref ( ) . unwrap ( ) . token
Original file line number Diff line number Diff line change @@ -970,6 +970,20 @@ fn parser_maintains_current_line() {
970970 assert_eq ! ( parser. current_line( ) , "ident" ) ;
971971}
972972
973+ #[ test]
974+ fn parser_with_line_number_offset ( ) {
975+ let mut input = ParserInput :: new_with_line_number_offset ( "ident\n ident" , 72 ) ;
976+ let mut parser = Parser :: new ( & mut input) ;
977+ assert_eq ! ( parser. current_source_location( ) , SourceLocation { line: 72 , column: 0 } ) ;
978+ assert_eq ! ( parser. next_including_whitespace_and_comments( ) , Ok ( & Token :: Ident ( "ident" . into( ) ) ) ) ;
979+ assert_eq ! ( parser. current_source_location( ) , SourceLocation { line: 72 , column: 5 } ) ;
980+ assert_eq ! ( parser. next_including_whitespace_and_comments( ) ,
981+ Ok ( & Token :: WhiteSpace ( "\n " . into( ) ) ) ) ;
982+ assert_eq ! ( parser. current_source_location( ) , SourceLocation { line: 73 , column: 0 } ) ;
983+ assert_eq ! ( parser. next_including_whitespace_and_comments( ) , Ok ( & Token :: Ident ( "ident" . into( ) ) ) ) ;
984+ assert_eq ! ( parser. current_source_location( ) , SourceLocation { line: 73 , column: 5 } ) ;
985+ }
986+
973987#[ test]
974988fn cdc_regression_test ( ) {
975989 let mut input = ParserInput :: new ( "-->x" ) ;
You can’t perform that action at this time.
0 commit comments