unserver-unify
Version:
109 lines (108 loc) • 3.37 kB
JavaScript
angular.module('bamboo.common').service('regexHelper', regexHelper);
regexHelper.$inject = [];
function regexHelper() {
var self = this;
//extract img from html string
var regex_extract_img = /<img[^>]*src="([^"]*)"/g;
//var regex_extract_img = /<img.*?src="(.*?)"/;
function extractRegex(str, regex) {
var arr, outp = [];
while ((arr = regex.exec(str))) {
outp.push(arr[1]);
}
return outp;
}
/**
* extractImgfromStr
* @param {string} str
* @return {arr}
*/
self.extractImgfromStr = function(str) {
extractRegex(str, regex_extract_img);
}
self.getSrcFromImg = function(imgData) {
var tmp = document.createElement('div');
tmp.innerHTML = imgData;
console.log(tmp);
var src = tmp.querySelector('img').getAttribute('src');
return src;
}
/**
* changeImgSrc
* @param {dataURL} imgData
* @param {string} newSrc url
* @return {dataUrl}
*/
self.changeImgSrc = function(imgData, newSrc) {
var tmp = document.createElement('div');
tmp.innerHTML = imgData;
var src = tmp.querySelector('img').src = newSrc;
//return tmp.childNodes[0].html();
return tmp.innerHTML;
}
self.getImgByUrl = function(url) {
var img = new Image();
img.src = url;
return img;
}
self.replaceMultiSpaceWithsingle = function(str) {
return str.replace(/\s\s+/g, ' ');
}
//Based on http://www.samliew.com/icval/
self.validateNRIC = function(str) {
if (str.length != 9) return false;
str = str.toUpperCase();
var i,
icArray = [];
for (i = 0; i < 9; i++) {
icArray[i] = str.charAt(i);
}
icArray[1] = parseInt(icArray[1], 10) * 2;
icArray[2] = parseInt(icArray[2], 10) * 7;
icArray[3] = parseInt(icArray[3], 10) * 6;
icArray[4] = parseInt(icArray[4], 10) * 5;
icArray[5] = parseInt(icArray[5], 10) * 4;
icArray[6] = parseInt(icArray[6], 10) * 3;
icArray[7] = parseInt(icArray[7], 10) * 2;
var weight = 0;
for (i = 1; i < 8; i++) {
weight += icArray[i];
}
var offset = (icArray[0] == "T" || icArray[0] == "G") ? 4 : 0;
var temp = (offset + weight) % 11;
var st = ["J", "Z", "I", "H", "G", "F", "E", "D", "C", "B", "A"];
var fg = ["X", "W", "U", "T", "R", "Q", "P", "N", "M", "L", "K"];
var theAlpha;
if (icArray[0] == "S" || icArray[0] == "T") {
theAlpha = st[temp];
} else if (icArray[0] == "F" || icArray[0] == "G") {
theAlpha = fg[temp];
}
return (icArray[8] === theAlpha);
}
self.html2DivDom = function(htmlstr) {
var tmp = document.createElement('div');
tmp.innerHTML = htmlstr;
return tmp;
}
// will skip <td>
var skipArr = ['TD','TR','TH','TABLE','THEAD','TFOOT','TBODY'];
self.clearDomStyle = function(dom) {
if(!dom) return;
var styleElems = dom.querySelectorAll('[style]');
angular.forEach(styleElems, function(el, idx) {
console.log(el.nodeName);
if(skipArr.indexOf(el.nodeName) < 0){
el.style = undefined;
}
});
return dom;
}
self.clearHtmlStrStyle = function(str) {
if(!str) return;
if(!angular.isString(str)) return str;
var dom = self.html2DivDom(str);
self.clearDomStyle(dom);
return dom.innerHTML;
}
}