File tree 3 files changed +24
-1
lines changed
3 files changed +24
-1
lines changed Original file line number Diff line number Diff line change 1
1
[package ]
2
2
name = " cssparser"
3
- version = " 0.19.4 "
3
+ version = " 0.19.5 "
4
4
authors = [ " Simon Sapin <simon.sapin@exyr.org>" ]
5
5
6
6
description = " 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> {
101
101
}
102
102
}
103
103
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
+
104
113
#[ inline]
105
114
fn cached_token_ref ( & self ) -> & Token < ' i > {
106
115
& 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() {
970
970
assert_eq ! ( parser. current_line( ) , "ident" ) ;
971
971
}
972
972
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
+
973
987
#[ test]
974
988
fn cdc_regression_test ( ) {
975
989
let mut input = ParserInput :: new ( "-->x" ) ;
You can’t perform that action at this time.
0 commit comments