Spaces:
Configuration error
Configuration error
| import * as url from '../../utils/url.js'; | |
| import * as string from '../../utils/string.js'; | |
| import { | |
| Function as FunctionToken, | |
| String as StringToken, | |
| Url, | |
| RightParenthesis | |
| } from '../../tokenizer/index.js'; | |
| export const name = 'Url'; | |
| export const structure = { | |
| value: String | |
| }; | |
| // <url-token> | <function-token> <string> ) | |
| export function parse() { | |
| const start = this.tokenStart; | |
| let value; | |
| switch (this.tokenType) { | |
| case Url: | |
| value = url.decode(this.consume(Url)); | |
| break; | |
| case FunctionToken: | |
| if (!this.cmpStr(this.tokenStart, this.tokenEnd, 'url(')) { | |
| this.error('Function name must be `url`'); | |
| } | |
| this.eat(FunctionToken); | |
| this.skipSC(); | |
| value = string.decode(this.consume(StringToken)); | |
| this.skipSC(); | |
| if (!this.eof) { | |
| this.eat(RightParenthesis); | |
| } | |
| break; | |
| default: | |
| this.error('Url or Function is expected'); | |
| } | |
| return { | |
| type: 'Url', | |
| loc: this.getLocation(start, this.tokenStart), | |
| value | |
| }; | |
| } | |
| export function generate(node) { | |
| this.token(Url, url.encode(node.value)); | |
| } | |