'use strict'; function FetchSummary (raw) { this.raw = raw; this.remote = null; this.branches = []; this.tags = []; } FetchSummary.parsers = [ [ /From (.+)$/, function (fetchSummary, matches) { fetchSummary.remote = matches[0]; } ], [ /\* \[new branch\]\s+(\S+)\s*\-> (.+)$/, function (fetchSummary, matches) { fetchSummary.branches.push({ name: matches[0], tracking: matches[1] }); } ], [ /\* \[new tag\]\s+(\S+)\s*\-> (.+)$/, function (fetchSummary, matches) { fetchSummary.tags.push({ name: matches[0], tracking: matches[1] }); } ] ]; FetchSummary.parse = function (data) { var fetchSummary = new FetchSummary(data); String(data) .trim() .split('\n') .forEach(function (line) { var original = line.trim(); FetchSummary.parsers.some(function (parser) { var parsed = parser[0].exec(original); if (parsed) { parser[1](fetchSummary, parsed.slice(1)); return true; } }); }); return fetchSummary; }; module.exports = FetchSummary;