Newly Practicing Mortician

    md-links-irp

    0.4.1 • Public • Published

    md-links-irp

    Preámbulo

    Markdown es un lenguaje de marcado ligero muy popular entre muchos developers, pues es donde generalmente escriben su información relevante del proyecto que estan desarrollando (justo como este que estas leyendo).

    Entre los muchos elementos que contiene los archivos MD son los links que sirven para ampliar la data dada y poner a disposición de los lectores más herramientas. Pero, tienen un detalle, algunos de estos te redirigen a páginas que ya no existen o simplemente ya no te redirigen a ningún lado. Y es ahí donde md-links-irp entra a solucionar este problema.

    Objetivo del proyecto

    Crear una librería desde cero que haga uso de otras librerías para retornar los links detectados en un archivo MD y validar que estos sean funcionales o no. Así como entregar estadísticas respecto a estos mismos links.

    Crear un plan para lograr una librería funcional que pueda ser instalada desde npm, utilizada desde la línea de comandos o como una API en un archivo JavaScript requiriendola como módulo.

    ¿Qué es md-links-irp?

    Es una librería que te permite idenficar los links de un archivo Markdown, verlos enlistados en tu consola y validar cuantos y cuales de ellos si son links que te dirigan a una página web.

    ¿Cómo lo instalo?

    Lo único que debes de hacer es abrir tu terminal y posicionarte en la carpeta donde requieras utilizar la librería y teclear o pegar el siguiente comando (esto asume que tu ya tienes instalado nodejs y por lo tanto npm también, que se instala junto con node):

    npm install md-links-irp o si lo necesitas de manera global, lo puedes hacer de esta manera: npm install -g md-links-irp

    Y listo!

    ¿Cómo se usa?

    md-links-irp puede ser utilizado desde un archivo js o desde tu terminal.

    • ### Uso desde la terminal Una vez instalado puedes teclear en tu terminal mdlinksirp <ruta del archivo que quieres analizar> y enter.

      Por ejemplo mdlinksirp README.md <-- este ruta o path es del archivo que lees actualmente. Lo que te retornará en consola un listado de los links dentro de ese archivo.

      Si quieres saber cuales de ellos si "sirven" puedes agregar la bandera --validate mdlinksirp README.md -validate. Que te retornará un listado de los mismos links y un ok a lado de los links que si te redirigen a una página web y un false cuando no "sirva".

      Si quieres saber cuantos links son, agregas la bandera -stats ejemplo: mdlinksirp README.md -stats. Te retornará un conteo de los links que si sirvan y un conteo de los que no.

    • ### Uso como API Una vez instalada la librería solo necesitas requerirla en el archivo por ejemplo:

      const mdLinks: require(md-links-irp) 
       
      mdLinks('./README.md');

      Y abajo en tu terminal/consola vas encontrar el resultado de tu búsqueda.

      Ahora si nuevamente quieres validar los links que si te redirigen agregarías un segundo parámetro.

      const mdLinks: require(md-links-irp) 
       
      mdLinks('./README.md', {validate: true});

    Autores

    Isela Reyes Perdomo

    Plan de acción

    Preparar github y proyecto local.

    • Forkear y clonar repositorio de Laboratoria.
    • Instalar dependencias (jest, eslint).
    • Leer librerías sugeridas para implementar la adecuada a mi proyecto.

    Preparar NPM

    • Crear cuenta en NPM.
    • Crear archivo package.json.
    • Vincular proyecto con NPM.
    • Versionar archivo package.json.
    • Subir archivos a NPM.

    Elegir librería

    • Markdown it.

    Crear módulos

    • Un archivo index.js que será el encargado de llamar a las funciones necesarias para realizar las actividades que retornen el resultado esperado.
    • Un archivo stats.js que se encargará de realizar las estadísticas de los links.
    • Un archivo validate.js que se encargará de revisar que los links si te redirijan a algún lugar.
    • Un archivo md.js que se dedique solo a saber si un archivo es markdown o no.
    • Un archivo readfile.js que lea el archivo y retorne un string que analizar.
    • Un archivo analize.js que analice el string y filtre los links.

    Crear test

    index.js

    • Test que cheque que si sea una función.
    • Test que ejecute la función pero que no reciba parámetros (¿qué pasa?)
    • Test que retorna algo si recibe una ruta sin archivo MD.
    • Test que ejecute la función con un solo parámetro.
    • Test que ejecute la función con dos parametros (path y validate).
    • Test que ejecute la función con dos parametros (path y stats).

    readfile.js

    • Test que cheque que es una función.
    • Test que revise que lo que retorna es una string.

    md.js

    • Test que cheque que si sea una función.
    • Test que ejecute la función recibiendo archivo md y retorne true.
    • Test que ejecute la función recibiendo archivo txt y retorne false.

    analize.js

    • Test que revise que analize sea una función.
    • Test que revisa que pasa si recibe un archivo sin links.
    • Test que revisa que pasa si recibe un archivo con puros links.
    • Test que revisa que pasa si recibe un archivo con links y texto variado.

    validate.js

    • Test que pase un arreglo de links no rotos revisar su retorno de ok.
    • Test que pase un arreglo de links rotos y no rotos, revisar que su retorno sea ok o fail.
    • Test que pase un arreglo de links rotos revisar que su retorno sea fail.

    stats.js

    • Test que pase un arreglo de links no rotos revisar y que regrese el total de los links.
    • Test que pase un arreglo de links rotos y no rotos que regrese el total de los links de c/u.
    • Test que pase un arreglo de links rotos y que regrese el total de los links rotos.

    Diagrama de flujo del programa mdlinksirp

    Diagrama de flujo

    Otros recursos

    Como veras, md-links-irp utiliza una librería llamada Marckdown it, para detectar los links del archivo MD. Por lo que si te gustaría conocer más sobre sus metódos o su documentación para utilizarlo en tus proyectos puedes visitar el repositorio aquí.

    También utilicé la librería colors. Para personalizar los mensajes y evitar un gris que puede ser repetitivo.

    Install

    npm i md-links-irp

    DownloadsWeekly Downloads

    15

    Version

    0.4.1

    License

    ISC

    Unpacked Size

    102 kB

    Total Files

    24

    Last publish

    Collaborators

    • iselareyesp94