Menú principal

Javascript en la línea de comandos con Rhino

13 Jun
Published by antonio.hernandez in

Tags 

Desarrollo

http://www.mozilla.org/rhino/

* Empleado.js

var Empleado = function(nombre, apellidoPaterno, apellidoMaterno, fechaNacimiento) {
  return {
    getNombre: function() {
      return nombre
    },
    setNombre: function(_nombre) {
      nombre = _nombre
    },
    getApellidoPaterno: function() {
      return apellidoPaterno
    },
    setApellidoPaterno: function(_apellidoPaterno) {
      apellidoPaterno = _apellidoPaterno
    },
    getApellidoMaterno: function() {
      return apellidoMaterno
    },
    setApellidoMaterno: function(_apellidoMaterno) {
      apellidoMaterno = _apellidoMaterno
    },
    getAnioNacimiento: function() {
      return fechaNacimiento
    },
    setAnioNacimiento: function(_fechaNacimiento) {
      fechaNacimiento = _fechaNacimiento
    },
    getEdad: function() {
      var objDate = new Date();
      var anio = fechaNacimiento.split('-')
      return objDate.getFullYear() - anio[2]
    },
    getNombreCompleto: function() {
      return nombre + " " + apellidoPaterno + " " + apellidoMaterno
    },
    getApellidos: function() {
      return apellidoPaterno + " " + apellidoMaterno
    },
    toString: function() {
      return "{ nombre: " + nombre +
        ", apellidoPaterno: " + apellidoPaterno +
        ", apellidoMaterno: " + apellidoMaterno +
        ", fechaNacimiento: " + fechaNacimiento +
        " }"
    },
    toHtmlTd: function() {
      return "<td>" + nombre +
        "</td><td>" + apellidoPaterno +
        "</td><td>" + apellidoMaterno +
        "</td><td>" + fechaNacimiento +
        "</td>"
    }
  }
}

* LectorCsv.js

defineClass("File")
 
var LectorCsv = function(archivo) {
  var acceso = new File(archivo);
 
  return {
    getSiguienteLinea: function() {
      return acceso.readLine();
    }
  }
}

* ListaEmpleados.js

load(['Empleado.js'])
 
var ListaEmpleados = function(fuente) {
  var lista = new Array()
  var cabecera = fuente.getSiguienteLinea()
  var indice = 0;
  while ((linea = lector.getSiguienteLinea()) != null) {
    var aux = linea.split(',')
    lista[indice] = new Empleado(aux[0], aux[1], aux[2], aux[3])
    indice += 1;
  }
  return {
    getTotal: function() { return lista.length },
    searchPorNombre: function(_nombre) {
      var i
      for (i = 0; i < lista.length; i++) {
        if (lista[i].getNombre().toUpperCase() == _nombre.toUpperCase()) {
          return lista[i]
        }
      }
      return false
    },
    printHtmlTable: function(incremental) {
      print("<table summary=\"Empleados.csv como una tabla HTML usando JavaScript/Rhino\">")
      print("<caption>Empleados.csv</caption>")
      print("<thead>")
      print("<tr>")
      if (incremental == true) {
        print("<th>#</td>")
      }
      print("<th>Nombre</th>")
      print("<th>Apellidos paterno</th>")
      print("<th>Apellidos materno</th>")
      print("<th>A&ntilde;o nacimiento</th>")
      print("</tr>")
      print("</thead>")
      print("<tbody>")
      var i
      if (incremental == true) {
        for (i= 0; i < lista.length; i++) {
          print("<tr>" + "<td>" + (i+1) + "</td>" + lista[i].toHtmlTd() + "</tr>")
        }
      } else {
        for (i = 0; i < lista.length; i++) {
          print("<tr>" + lista[i].toHtmlTd() + "</tr>")
        }
      }
      print("</tbody>")
      print("</table>")
    }
  }
}

* Main.js

load(['LectorCsv.js']);
load(['ListaEmpleados.js']);
 
var lector = LectorCsv('Empleados.csv');
var lista = ListaEmpleados(lector)
lista.printHtmlTable(true)

* Empleados.csv

nombre,apellidoPaterno,apellidoMaterno,anioNacimiento
Kyla,Christian,Medina,03-10-1984
Whoopi,Morrison,Hale,18-09-1984
Thomas,Barber,Freeman,01-10-1981
Paloma,Byrd,Meyers,24-02-1982
Gretchen,Robles,Sanford,04-03-1980
Quincy,Sutton,Gray,16-11-1982
Carla,Horn,Blanchard,28-03-1982
Yetta,Ferguson,Osborn,19-08-1981
Unity,Rush,Whitley,05-10-1980
Beck,Nolan,Erickson,29-11-1983
Imani,Delacruz,Horn,28-02-1981
Amal,Cole,Bowman,08-01-1984
Hyacinth,Bradley,Burton,09-05-1984
Oprah,Shannon,Dudley,02-08-1981
Gil,Cook,Barber,27-11-1981
Caryn,Whitley,Vaughn,22-05-1984
Keaton,Byers,Griffith,15-01-1982
Logan,Brooks,Morse,31-07-1980
Emery,Ayala,Howe,29-03-1980
Desiree,Burns,Burt,10-11-1980


usuario@localhost:~$ /usr/bin/rhino -f Main.js > tabla.html

* Resultado