## PL: Práctica Publicación de un módulo npm
[![made-for-VSCode](https://img.shields.io/badge/Made%20for-VSCode-1f425f.svg)](https://code.visualstudio.com/)
[![GitHub Pages](https://img.shields.io/badge/Web-GitHub%20Pages-informational)](https://ull-esit-pl-2021.github.io/espree-logging-module-EduardoEB3/)
[![JavaScript](https://img.shields.io/badge/-JavaScript-yellow)](https://www.javascript.com)

AddLogging
===
Esto es una pequeña librería que proporciona métodos para convertir cadenas en formato string código ejecutable.

## Instalación
Para porder hacer uso de este paquete, debe ejecutar el siguiente comando:

    npm i @eduardoeb3/espree-logging-module-eduardoeb3

## Uso
Para hacer uso de este paquete, usted debe añadir las siguientes líneas al código:

  ```js
  const addLogging = require('add-logging');
  ```
A continuación ya podrá hacer uso del paquete proporcionadado.

En este paquete puede encontrar dos maneras de usar el `addLogging`. La primera de ellas, consiste en especificar la cadena que desea transformar y un patrón el cual seguirá para añadir los distintos console.log(). Esto significa que si el patrón especificado que en este caso será el nombre de una función, si este coincide con una parte de la cadena, ahí añadirá a continuación un nuevo console.log(). Sin embargo, la otra manera de utilizarlo, es simplemente pasándole la cadena que desea transformar a formato código en la que añadirá un nuevo consolo.log() a continuación de la declaración a la función.

A continuación le dejo una ayuda para su uso:
```md
Usage: add-logging [options]

Options:
  -o, --output                         muestra la salida del programa por defecto
  -f, --fichero <filename> <filename>  muestra la salida en el fichero especificado
  -p, --pattern <filename> <filename>  muestra la salida del programa en el fichero especificado
  -V, --version                        output the version number
  -h, --help                           output usage information
```
## Ejemplo de cambio
Inicialmente tenemos:
```js
function foo(a, b) {
    var x = 'blah';
    var y = (function (z) {
        return z+3;
    })(2);
}
foo(1, 'wut', 3);
```
Cuando ejecutamos el programa obtenemos como resultado:
```js
function foo(a, b) {
    console.log(`Entering foo(${ a }, ${ b }) at line 1`);
    var x = 'blah';
    var y = function (z) {
        console.log(`Entering <anonymous function>(${ z }) at line 3`);
        return z + 3;
    }(2);
}
foo(1, 'wut', 3);
```
## Test
Para ejecutar las siguientes pruebas utilizando [Mocha](https://mochajs.org/) and [Chai](https://www.chaijs.com/) ejecute el siguiente comando:

      npm run test
Sin embargo, si desea hacerlo con `Coverage` ejecute el siguiente comando:
      
      npm run test-with-coverage

## Documentación de la API
Para poder hacer la documentación de la API proporcionada, debemos hacer lo siguiente:

    npm run doc
  
El cual nos generará un directorio llamado `docs` que contendrá los distintos ficheros
necesarios sobre la documentación del módulo, los cuales pueden ser desplegados en una páigina web.
Esto lo hacemos utilizando la herramienta [JSDoc](https://jsdoc.app/) que es un generador de documentación. Para instalarlo, puede consultar la página web o simplemente ejecute lo siguiente:

    npm install -g documentation

Aquí puede encontrar un ejemplo de lo que podemos apreciar hasta el momento: [Web](https://ull-esit-pl-2021.github.io/espree-logging-module-EduardoEB3/)

## Contribución
Vaya añadiendo pequeñas pruebas para comprobar su correcto funcionamiento.

## Licencia
Este proyecto tiene la licencia [MIT LICENSE](https://github.com/ULL-ESIT-PL-2021/espree-logging-module-EduardoEB3/blob/master/LICENSE-MIT).

## Historial de versiones

  * 1.0.0 Versión inicial
  * 1.0.1 Añadiendo keywords
  * 1.0.2 Creando nodejs.yml
  * 1.1.2 Añadiendo patrón al código
  * 1.1.3 Agregando comentarios
  * 1.1.4 Modificando README.md
  * 1.1.5 Añadiendo Coverage al nodejs.yml
  * 1.1.6 Modificando nodejs.yml
  * 1.1.7 Modificando nodejs.yml
  * 1.1.8 Añadiendo ficheros de prueba
  * 1.1.9 Modificando documentación
  * 1.1.10 Mejorando documentación

**Realizado por:** *Eduardo Expósito Barrera*

**e-mail**: alu0101230382@ull.edu.es
