123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // Parse image size
- //
- 'use strict';
- function parseNextNumber(str, pos, max) {
- var code,
- start = pos,
- result = {
- ok: false,
- pos: pos,
- value: ''
- };
- code = str.charCodeAt(pos);
- while (pos < max && (code >= 0x30 /* 0 */ && code <= 0x39 /* 9 */) || code === 0x25 /* % */) {
- code = str.charCodeAt(++pos);
- }
- result.ok = true;
- result.pos = pos;
- result.value = str.slice(start, pos);
- return result;
- }
- module.exports = function parseImageSize(str, pos, max) {
- var code,
- result = {
- ok: false,
- pos: 0,
- width: '',
- height: ''
- };
- if (pos >= max) { return result; }
- code = str.charCodeAt(pos);
- if (code !== 0x3d /* = */) { return result; }
- pos++;
- // size must follow = without any white spaces as follows
- // (1) =300x200
- // (2) =300x
- // (3) =x200
- code = str.charCodeAt(pos);
- if (code !== 0x78 /* x */ && (code < 0x30 || code > 0x39) /* [0-9] */) {
- return result;
- }
- // parse width
- var resultW = parseNextNumber(str, pos, max);
- pos = resultW.pos;
- // next charactor must be 'x'
- code = str.charCodeAt(pos);
- if (code !== 0x78 /* x */) { return result; }
- pos++;
- // parse height
- var resultH = parseNextNumber(str, pos, max);
- pos = resultH.pos;
- result.width = resultW.value;
- result.height = resultH.value;
- result.pos = pos;
- result.ok = true;
- return result;
- };
|