| 488 | } |
| 489 | |
| 490 | raw(node, prop, tokens, customProperty) { |
| 491 | let token, type |
| 492 | let length = tokens.length |
| 493 | let value = '' |
| 494 | let clean = true |
| 495 | let next, prev |
| 496 | |
| 497 | for (let i = 0; i < length; i += 1) { |
| 498 | token = tokens[i] |
| 499 | type = token[0] |
| 500 | if (type === 'space' && i === length - 1 && !customProperty) { |
| 501 | clean = false |
| 502 | } else if (type === 'comment') { |
| 503 | prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty' |
| 504 | next = tokens[i + 1] ? tokens[i + 1][0] : 'empty' |
| 505 | if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) { |
| 506 | if (value.slice(-1) === ',') { |
| 507 | clean = false |
| 508 | } else { |
| 509 | value += token[1] |
| 510 | } |
| 511 | } else { |
| 512 | clean = false |
| 513 | } |
| 514 | } else { |
| 515 | value += token[1] |
| 516 | } |
| 517 | } |
| 518 | if (!clean) { |
| 519 | let raw = tokens.reduce((all, i) => all + i[1], '') |
| 520 | node.raws[prop] = { raw, value } |
| 521 | } |
| 522 | node[prop] = value |
| 523 | } |
| 524 | |
| 525 | rule(tokens) { |
| 526 | tokens.pop() |