// Used for 'position' and 'size'. static bool scanPercentage(VTTScanner& input, const VTTScanner::Run& valueRun, int& number) { // 1. If value contains any characters other than U+0025 PERCENT SIGN // characters (%) and characters in the range U+0030 DIGIT ZERO (0) to // U+0039 DIGIT NINE (9), then jump to the step labeled next setting. // 2. If value does not contain at least one character in the range U+0030 // DIGIT ZERO (0) to U+0039 DIGIT NINE (9), then jump to the step // labeled next setting. if (!input.scanDigits(number)) return false; // 3. If any character in value other than the last character is a U+0025 // PERCENT SIGN character (%), then jump to the step labeled next // setting. // 4. If the last character in value is not a U+0025 PERCENT SIGN character // (%), then jump to the step labeled next setting. if (!input.scan('%') || !input.isAt(valueRun.end())) return false; // 5. Ignoring the trailing percent sign, interpret value as an integer, // and let number be that number. // 6. If number is not in the range 0 ≤ number ≤ 100, then jump to the step // labeled next setting. return number >= 0 && number <= 100; }
static inline bool parsedEntireRun(const VTTScanner& input, const VTTScanner::Run& run) { return input.isAt(run.end()); }