in src/rule.ts [758:794]
private static _compileCaptures(captures: IRawCaptures | undefined, helper: IRuleFactoryHelper, repository: IRawRepository): (CaptureRule | null)[] {
let r: (CaptureRule | null)[] = [];
if (captures) {
// Find the maximum capture id
let maximumCaptureId = 0;
for (const captureId in captures) {
if (captureId === '$vscodeTextmateLocation') {
continue;
}
const numericCaptureId = parseInt(captureId, 10);
if (numericCaptureId > maximumCaptureId) {
maximumCaptureId = numericCaptureId;
}
}
// Initialize result
for (let i = 0; i <= maximumCaptureId; i++) {
r[i] = null;
}
// Fill out result
for (const captureId in captures) {
if (captureId === '$vscodeTextmateLocation') {
continue;
}
const numericCaptureId = parseInt(captureId, 10);
let retokenizeCapturedWithRuleId = 0;
if (captures[captureId].patterns) {
retokenizeCapturedWithRuleId = RuleFactory.getCompiledRuleId(captures[captureId], helper, repository);
}
r[numericCaptureId] = RuleFactory.createCaptureRule(helper, captures[captureId].$vscodeTextmateLocation, captures[captureId].name, captures[captureId].contentName, retokenizeCapturedWithRuleId);
}
}
return r;
}