39 lines
950 B
JavaScript
39 lines
950 B
JavaScript
|
/**
|
||
|
* An element which displays an edit box for regular expressions.
|
||
|
*/
|
||
|
angular.module('quay').directive('regexEditor', function () {
|
||
|
var directiveDefinitionObject = {
|
||
|
priority: 0,
|
||
|
templateUrl: '/static/directives/regex-editor.html',
|
||
|
replace: false,
|
||
|
transclude: true,
|
||
|
restrict: 'C',
|
||
|
scope: {
|
||
|
'placeholder': '@placeholder',
|
||
|
'optional': '=optional',
|
||
|
'binding': '=binding'
|
||
|
},
|
||
|
controller: function($scope, $element) {
|
||
|
}
|
||
|
};
|
||
|
return directiveDefinitionObject;
|
||
|
});
|
||
|
|
||
|
angular.module('quay').directive('requireValidRegex', function() {
|
||
|
return {
|
||
|
require: 'ngModel',
|
||
|
link: function(scope, element, attr, ctrl) {
|
||
|
function validator(value) {
|
||
|
try {
|
||
|
new RegExp(value)
|
||
|
ctrl.$setValidity('regex', true);
|
||
|
} catch (e) {
|
||
|
ctrl.$setValidity('regex', false);
|
||
|
}
|
||
|
return value;
|
||
|
}
|
||
|
|
||
|
ctrl.$parsers.push(validator);
|
||
|
}
|
||
|
};
|
||
|
});
|