1
1
var DEBUG = false ; // `true` to print debugging info.
2
2
var TIMER = false ; // `true` to time calls to `parse()` and print the results.
3
3
4
-
5
4
import dbg from './debug.js'
6
5
let debug = dbg ( 'parse' ) ;
7
6
8
7
import lex from './lexer.ts' ;
8
+ import { Token , AST } from "./types.ts" ;
9
9
10
10
export default parse ;
11
11
@@ -22,7 +22,7 @@ var _tokens: any[]; // Array of lexical tokens.
22
22
* @param {Boolean } [options.comments=false] allow comment nodes in the AST
23
23
* @returns {Object } `stringify`-able AST
24
24
*/
25
- function parse ( css : string | any [ ] , options : any ) {
25
+ function parse ( css : string | any [ ] , options : any ) : AST {
26
26
var start = 0 ; // Debug timer start.
27
27
28
28
options || ( options = { } ) ;
@@ -65,29 +65,28 @@ function parse(css: string | any[], options: any) {
65
65
* already in the token, or that will be added to the token.
66
66
* @returns {Object } AST node
67
67
*/
68
- function astNode ( token : any , overrd ?: any ) : any {
68
+ function astNode ( token : Token , overrd ?: any ) : Token {
69
69
let override : any = overrd || { } ;
70
70
71
- var key ;
72
- var keys = [ 'type' , 'name' , 'value' ] ;
73
- var node : any = { } ;
74
-
75
- // Avoiding [].forEach for performance reasons.
76
- for ( var i = 0 ; i < keys . length ; ++ i ) {
77
- key = keys [ i ] ;
71
+ var node : Token = { } ;
78
72
79
- if ( token [ key ] ) {
80
- node [ key ] = override [ key ] || token [ key ] ;
81
- }
73
+ if ( token . type ) {
74
+ node . type = override . type || token . type ;
75
+ }
76
+ if ( token . name ) {
77
+ node . name = override . name || token . name ;
78
+ }
79
+ if ( token . type ) {
80
+ node . type = override . type || token . type ;
82
81
}
83
82
84
- keys = Object . keys ( override ) ;
85
-
86
- for ( i = 0 ; i < keys . length ; ++ i ) {
83
+ let keys = Object . keys ( override ) ;
84
+ let key ;
85
+ for ( let i = 0 ; i < keys . length ; ++ i ) {
87
86
key = keys [ i ] ;
88
-
89
- if ( ! node [ key ] ) {
90
- node [ key ] = override [ key ] ;
87
+ let n = node as Record < string , any >
88
+ if ( ! n [ key ] ) {
89
+ n [ key ] = override [ key ] ;
91
90
}
92
91
}
93
92
@@ -122,7 +121,7 @@ function next() {
122
121
* @param {Object } token @-group lexical token
123
122
* @returns {Object } @-group AST node
124
123
*/
125
- function parseAtGroup ( token : any ) : any {
124
+ function parseAtGroup ( token : Token ) : any {
126
125
_depth = _depth + 1 ;
127
126
128
127
// As the @-group token is assembled, relevant token values are captured here
0 commit comments