38 lines
1 KiB
JavaScript
38 lines
1 KiB
JavaScript
|
/**
|
||
|
* An element which displays the contents of a Dockerfile in a nicely formatted way.
|
||
|
*/
|
||
|
angular.module('quay').directive('dockerfileView', function () {
|
||
|
var directiveDefinitionObject = {
|
||
|
priority: 0,
|
||
|
templateUrl: '/static/directives/dockerfile-view.html',
|
||
|
replace: false,
|
||
|
transclude: false,
|
||
|
restrict: 'C',
|
||
|
scope: {
|
||
|
'contents': '=contents'
|
||
|
},
|
||
|
controller: function($scope, $element, UtilService) {
|
||
|
$scope.$watch('contents', function(contents) {
|
||
|
$scope.lines = [];
|
||
|
|
||
|
var lines = contents ? contents.split('\n') : [];
|
||
|
for (var i = 0; i < lines.length; ++i) {
|
||
|
var line = $.trim(lines[i]);
|
||
|
var kind = 'text';
|
||
|
if (line && line[0] == '#') {
|
||
|
kind = 'comment';
|
||
|
} else if (line.match(/^([A-Z]+\s)/)) {
|
||
|
kind = 'command';
|
||
|
}
|
||
|
|
||
|
var lineInfo = {
|
||
|
'text': line,
|
||
|
'kind': kind
|
||
|
};
|
||
|
$scope.lines.push(lineInfo);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
return directiveDefinitionObject;
|
||
|
});
|