dotnet-solution
Version:
dotnet solution file model
77 lines (58 loc) • 2.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _solution = require('./solution');
var _solution2 = _interopRequireDefault(_solution);
var _childTypes = require('./childTypes');
var _childTypes2 = _interopRequireDefault(_childTypes);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var SolutionReader = function () {
function SolutionReader() {
_classCallCheck(this, SolutionReader);
}
_createClass(SolutionReader, [{
key: 'fromLines',
value: function fromLines(lines) {
var solution = new _solution2.default();
this.readProjects(solution, lines);
return solution;
}
}, {
key: 'readProjects',
value: function readProjects(solution, lines) {
var relationshipExpression = new RegExp(/\{(.*?)\} = \{(.*?)\}/, 'i');
var relationships = lines.map(function (line) {
return line.match(relationshipExpression);
}).filter(function (match) {
return match;
}).reduce(function (o, match) {
return Object.assign(o, _defineProperty({}, match[1], match[2]));
}, {});
var projectExpression = new RegExp(/Project\("\{(.*)\}"\) = "(.*?)".*?"(.*?)".*"\{(.*)\}"/, 'i');
var projects = lines.map(function (line) {
return line.match(projectExpression);
}).filter(function (match) {
return match;
}).forEach(function (project) {
var value = {
id: project[4],
name: project[2],
path: project[3],
parent: relationships[project[4]]
};
if (project[1] === _childTypes2.default.folder) {
solution.addFolder(value);
}
if (project[1] === _childTypes2.default.project) {
solution.addProject(value);
}
});
}
}]);
return SolutionReader;
}();
exports.default = SolutionReader;