2015-02-19 21:21:54 +00:00
|
|
|
|
/**
|
|
|
|
|
* Service which exposes various utility methods.
|
|
|
|
|
*/
|
|
|
|
|
angular.module('quay').factory('UtilService', ['$sanitize', function($sanitize) {
|
|
|
|
|
var utilService = {};
|
|
|
|
|
|
|
|
|
|
utilService.isEmailAddress = function(val) {
|
|
|
|
|
var emailRegex = /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
|
|
|
|
|
return emailRegex.test(val);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
utilService.getMarkedDown = function(string) {
|
2015-02-23 21:43:59 +00:00
|
|
|
|
return html = Markdown.getSanitizingConverter().makeHtml(string || '');
|
2015-02-19 21:21:54 +00:00
|
|
|
|
};
|
|
|
|
|
|
2015-02-23 21:43:59 +00:00
|
|
|
|
utilService.getFirstMarkdownLineAsText = function(commentString, placeholderNeeded) {
|
|
|
|
|
if (!commentString) {
|
|
|
|
|
if (placeholderNeeded) {
|
|
|
|
|
return '<p style="visibility:hidden">placeholder</p>';
|
|
|
|
|
}
|
|
|
|
|
return '';
|
|
|
|
|
}
|
2015-02-19 21:21:54 +00:00
|
|
|
|
|
|
|
|
|
var lines = commentString.split('\n');
|
|
|
|
|
var MARKDOWN_CHARS = {
|
|
|
|
|
'#': true,
|
|
|
|
|
'-': true,
|
|
|
|
|
'>': true,
|
|
|
|
|
'`': true
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (var i = 0; i < lines.length; ++i) {
|
|
|
|
|
// Skip code lines.
|
|
|
|
|
if (lines[i].indexOf(' ') == 0) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Skip empty lines.
|
|
|
|
|
if ($.trim(lines[i]).length == 0) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Skip control lines.
|
|
|
|
|
if (MARKDOWN_CHARS[$.trim(lines[i])[0]]) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return utilService.getMarkedDown(lines[i]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return '';
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
utilService.escapeHtmlString = function(text) {
|
|
|
|
|
var adjusted = text.replace(/&/g, "&")
|
|
|
|
|
.replace(/</g, "<")
|
|
|
|
|
.replace(/>/g, ">")
|
|
|
|
|
.replace(/"/g, """)
|
|
|
|
|
.replace(/'/g, "'");
|
|
|
|
|
|
|
|
|
|
return adjusted;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
utilService.getRestUrl = function(args) {
|
|
|
|
|
var url = '';
|
|
|
|
|
for (var i = 0; i < arguments.length; ++i) {
|
|
|
|
|
if (i > 0) {
|
|
|
|
|
url += '/';
|
|
|
|
|
}
|
|
|
|
|
url += encodeURI(arguments[i])
|
|
|
|
|
}
|
|
|
|
|
return url;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
utilService.textToSafeHtml = function(text) {
|
|
|
|
|
return $sanitize(utilService.escapeHtmlString(text));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
utilService.clickElement = function(el) {
|
|
|
|
|
// From: http://stackoverflow.com/questions/16802795/click-not-working-in-mocha-phantomjs-on-certain-elements
|
|
|
|
|
var ev = document.createEvent("MouseEvent");
|
|
|
|
|
ev.initMouseEvent(
|
|
|
|
|
"click",
|
|
|
|
|
true /* bubble */, true /* cancelable */,
|
|
|
|
|
window, null,
|
|
|
|
|
0, 0, 0, 0, /* coordinates */
|
|
|
|
|
false, false, false, false, /* modifier keys */
|
|
|
|
|
0 /*left*/, null);
|
|
|
|
|
el.dispatchEvent(ev);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return utilService;
|
|
|
|
|
}]);
|