Skip to content

Instantly share code, notes, and snippets.

@emanoelqueiroz
Last active February 10, 2017 13:41
Show Gist options
  • Save emanoelqueiroz/627d4ba949a917bc09f059322a6253cf to your computer and use it in GitHub Desktop.
Save emanoelqueiroz/627d4ba949a917bc09f059322a6253cf to your computer and use it in GitHub Desktop.
Generate a summary
function mergeArr(arr1, arr2) {
for (var i = 0; i < arr1.length; i++) {
for (var j = 0; j < arr2.length; j++) {
if (i !== j)
continue;
arr2[j] = arr1[i];
}
}
return arr2;
}
function makeSummary(arr) {
var count = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i] == 'N') {
count++;
arr[i] = count + '';
continue;
}
if (arr[i].indexOf('.') > -1) {
var newArr = [];
var oldCount = 0;
var arrX = arr[i].split('.');
var arrOval = arr[i - 1].split('.');
newArr = mergeArr(arrOval, arrX);
if (arr[i - 1].length > arr[i].length) {
var j = 1;
for (j; j < arr.length; j++) {
if (arr[i - j].length === arr[i].length)
break;
}
var arrPreviousVal = arr[i - j].split('.');
oldCount = parseInt(arrPreviousVal[arrPreviousVal.length - 1]);
newArr[newArr.length - 1] = (oldCount + 1);
arr[i] = newArr.join('.');
continue;
}
if (arr[i - 1].length === arr[i].length) {
oldCount = parseInt(arrOval[arrOval.length - 1]);
newArr[newArr.length - 1] = (oldCount + 1);
arr[i] = newArr.join('.');
} else {
arr[i] = makeSummary(newArr).join('.');
}
}
}
return arr;
}
String.prototype.contains = function(arg) {
return this.indexOf(arg) > -1;
};
function getSumFromText(val) {
var pos = 0;
var aux = '';
var arr = [];
for (var i = 0; i < val.length; i++) {
if (val[i] !== '[')
continue;
aux = '';
pos = i + 1;
while (val[pos] !== ']') {
aux += val[pos];
pos++;
}
if ((aux.contains('N') && aux.length === 1) || aux.contains('N.'))
arr.push(aux);
}
return arr;
}
function setSumToText(text, arr) {
var pos = 0;
var aux = '';
var count = 0;
var iniTxt = '';
var endTxt = '';
for (var i = 0; i < text.length; i++) {
if (text[i] !== '[')
continue;
aux = '';
pos = i + 1;
while (text[pos] !== ']') {
aux += text[pos];
pos++;
}
if ((aux.contains('N') && aux.length === 1) || aux.contains('N.')) {
iniTxt = text.substring(0, i);
endTxt = text.substring((pos + 1), text.length);
text = iniTxt + arr[count] + endTxt;
count++;
}
}
return text;
}
function generateSummary(txt) {
var arr = getSumFromText(txt);
arr = makeSummary(arr);
return setSumToText(txt, arr);
}
var txt = '[N] asdasdasdas [TECNICO] da [N.N] asdasdasd [N] weqweasdqweqweasd [N.N] weqwewqeq [N.N] asqweasdqwe ' +
'[N.N.N] weqe qweq e [N.N] weqeasd a [N.N.N] weqweqwe qweqw [N.N] eqweqweqwe qweqw [N] sada sdqwew qe [N.N]';
generateSummary(txt);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment