UNPKG

gitgraph-minigram

Version:

Provides grammar and parser for git commands (made with pegjs), and API invoker for gitgraph.

68 lines (57 loc) 1.43 kB
const format2 = require('./grammar/format2'); const LogManager = require('./grammar-support/log-manager'); const ParseResult = require('./parse-result'); const ParseData = require('./parse-data'); class Format2Parser { /** * @param {string} input * @returns {ParseResult} */ parse(input) { try { const format2Parsed = format2.parse(input, { logManager: new LogManager(), }); const defaultBranch = this._resolveDefaultBranch(format2Parsed.option); const actions = this._prepareActions(format2Parsed.log); const parseData = new ParseData({ defaultBranch: defaultBranch, actions: actions, }); return new ParseResult(parseData, null); } catch (e) { return new ParseResult(null, e); } } /** * @param {Object[]} options * @returns {string} * @private */ _resolveDefaultBranch(options) { let result = 'master'; for (let i = 0; i < options.length; i++) { if (options[i].name === 'defaultBranch') { result = options[i].value; } } return result; } /** * @param {Object[]} logs * @returns {Object[]} * @private */ _prepareActions(logs) { const targets = [ 'branch:create', 'commit', 'merge', 'tag', ]; return logs.filter((log) => { return targets.indexOf(log.type) >= 0; }); } } module.exports = Format2Parser;