Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fs = require('fs')
- fs.readFile("./doc.txt", 'utf8', function (err,data) {
- if (err) {
- return console.log(err);
- }
- var header_arr = ["CODIGO_PRODUCTO","UNIDAD_DE_MEDIDA","DESCRIPCION","CANTIDAD","COSTO_UNITARIO","COSTO_TOTAL"];
- var valid_count_arr = ['100','100','100','12.4','12.6','12.2'];
- var lines_arr = [];
- var curr_line_arr = [];
- var col = [];
- var curr_line;
- var doc = [];
- lines_arr = data.split("\n");
- for (var i=0;i<lines_arr.length;i++){
- curr_line_num = i+1;
- curr_line_arr = lines_arr[i].split("\t");
- // chequea fin del doc
- if(lines_arr[i].length<1){
- break;
- }
- // chequeo de numero de columnas
- if(curr_line_arr.length!=6){
- console.log("La línea "+curr_line_num+" no tiene exactamente 6 columnas, tiene: "+curr_line_arr.length);
- }
- for (var j=0;j<curr_line_arr.length;j++){
- curr_col_num = j+1;
- curr_col_data = remove_lb(curr_line_arr[j]);
- // Verifica el nombre de cada columna en el header
- if(i==0){
- if(curr_col_data!=header_arr[j]){
- console.log("Encabezado no encaja, "+'"'+curr_col_data+'"'+" debería ser "+'"'+header_arr[j]+'".');
- }
- // to ignore the first line
- continue;
- }
- //
- x = valid_count_arr[j]+0;
- // texto - numerico
- if(x % 1 != 0){
- if(!curr_col_data){
- console.log(curr_col_data);
- break;
- }
- if(!valid_count_arr[j]){
- console.log(valid_count_arr[j]);
- break;
- }
- // test numerico
- if(!testNum(curr_col_data)){
- console.log("La linea número \""+curr_line_num+"\" columna \""+header_arr[j]+"\" no es un valor numérico valido.");
- }else{
- // test decimal y length
- if(!validate_dec(curr_col_data,valid_count_arr[j])){
- chperm = valid_count_arr[j].split('.');
- console.log("La linea número \""+curr_line_num+"\" columna \""+header_arr[j]+"\" tiene más del límite permitido que es de \""+chperm[0]+"\" enteros y \""+chperm[1]+"\" decimales.");
- }
- }
- }else{
- // test length strings
- if(curr_col_data.length > valid_count_arr[j]){
- console.log("La linea número \""+curr_line_num+"\" columna \""+header_arr[j]+"\" tiene más del límite permitido que es de \""+valid_count_arr[j]+"\".");
- }
- if(!alphaTest(curr_col_data)){
- console.log("La linea número \""+curr_line_num+"\" columna \""+header_arr[j]+"\" tiene caracteres inválidos.");
- //console.log(curr_col_data);
- }
- }
- }
- }
- });
- // remueve caracteres de retorno
- function remove_lb(s){
- return s.replace(/(\r\n|\n|\r)/gm,"");
- }
- // verifica ancho de decimales, los trata como strings porque el documento es texto
- function validate_dec(v,test){
- var tv = test.split('.');
- var val = v.split('.');
- var max_len = parseInt(tv[0]);
- if(val[0].length>max_len){
- return false;
- }
- max_len = parseInt(tv[1]);
- if(val[1].length>max_len){
- return false;
- }
- return true;
- }
- // verifica si es un número
- function testNum(value){
- return((!isNaN(value) && value.toString().indexOf('.') != -1) || !isNaN(value));
- }
- // verifica si es alphanum
- function alphaTest(v){
- return !(/[^a-zA-Z0-9 ]/.test(v));
- }
Advertisement
Add Comment
Please, Sign In to add comment