12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- var NUMBER = require('../../tokenizer').TYPE.Number;
- // special reader for units to avoid adjoined IE hacks (i.e. '1px\9')
- function readUnit(scanner) {
- var unit = scanner.getTokenValue();
- var backSlashPos = unit.indexOf('\\');
- if (backSlashPos > 0) {
- // patch token offset
- scanner.tokenStart += backSlashPos;
- // return part before backslash
- return unit.substring(0, backSlashPos);
- }
- // no backslash in unit name
- scanner.next();
- return unit;
- }
- // number ident
- module.exports = {
- name: 'Dimension',
- structure: {
- value: String,
- unit: String
- },
- parse: function() {
- var start = this.scanner.tokenStart;
- var value = this.scanner.consume(NUMBER);
- var unit = readUnit(this.scanner);
- return {
- type: 'Dimension',
- loc: this.getLocation(start, this.scanner.tokenStart),
- value: value,
- unit: unit
- };
- },
- generate: function(node) {
- this.chunk(node.value);
- this.chunk(node.unit);
- }
- };
|