Markdown es un lenguaje de marcado ligero muy popular entre developers. Es usado en muchísimas plataformas que manejan texto plano (GitHub, foros, blogs, ...), y es muy común encontrar varios archivos en ese formato en cualquier tipo de repositorio (empezando por el tradicional README).
Estos archivos Markdown normalmente contienen links (vínculos/ligas) que muchas veces están rotos o ya no son válidos y eso perjudica mucho el valor de la información que se quiere compartir.
Crear una herramienta usando Node.js, que lea y analice archivos en formato Markdown, para verificar los links que contengan y reportar algunas estadísticas.
A base de este primer prototipo se recibió los siguientes feedbacks y recomendaciones para la mejora del diagrama
FeedBacks:
- "El diagrama no cuenta con la lectura de archivos al ingresar las rutas"
- "En la condición de que si no es una ruta abasoluta y debería convertirse en una, es redundante volver a preguntar si lo es, lo más recomendable es
que es hacer la busqueda de directorios y archivos en ese momento"
- "Agregar la lectura de archivos"
Para la instalación se debe colocar el siguiente comando:
Linux:
sudo npm install -g nangebav/LIM014-mdlinks
El ejecutable de esta aplicación se ejecuta de la siguiente manera a través de la terminal:
md-links <path-to-file> [options]
Para extraer los links de una ruta de un archivo Markdown, se coloca lo siguiente:
$ md-links <path-to-file>
Ejemplo:
Si pasamos la opción --validate
o -v
o validate link
, el módulo debe hacer una petición HTTP para
averiguar si el link funciona o no. Si el link resulta en una redirección a una
URL que responde ok, entonces consideraremos el link como ok.
$ md-links <path-to-file> --validate
Por ejemplo:
Vemos que el output en este caso incluye la palabra ok
o fail
después de
la URL, así como el status de la respuesta recibida a la petición HTTP a dicha
URL.
Si pasamos la opción --stats
o -s
o statistic
el output (salida) será un texto con estadísticas
básicas sobre los links.
$ md-links <path-to-file> --stats
Por ejemplo:
También podemos combinar --stats
y --validate
para obtener estadísticas que
necesiten de los resultados de la validación.
$ md-links <path-to-file> --stats --validate
Por ejemplo:
Si deseas conocer sobre los comandos que puedes usar, ingresa este
$ md-links <path-to-file> --help
Por ejemplo:
Que la librería entregue estadisticas más completas en el comando de validate
Tal vez que los links estén ordenados según si están ok o fail
- Uso de condicionales (if-else | switch | operador ternario)
- Uso de funciones (parámetros | argumentos | valor de retorno)
- Manipular arrays (filter | map | sort | reduce)
- Manipular objects (key | value)
- Uso ES modules (
import
|export
) - Diferenciar entre expression y statements.
- Diferenciar entre tipos de datos atómicos y estructurados.
- Uso de callbacks.
- Consumo de Promesas.
- Creación de Promesas.
- Uso de sistema de archivos. (fs, path)
- Instalar y usar módulos. (npm)
- Creación de modules. (CommonJS)
- Configuración de package.json.
- Configuración de npm-scripts
- Uso de CLI (Command Line Interface - Interfaz de Línea de Comando)
- Testeo unitario.
- Testeo asíncrono.
- Uso de librerias de Mock.
- Uso de Mocks manuales.
- Testeo para múltiples Sistemas Operativos.
- Organizar y dividir el código en módulos (Modularización)
- Uso de identificadores descriptivos (Nomenclatura | Semántica)
- Uso de linter (ESLINT)
- Uso de comandos de git (add | commit | pull | status | push)
- Manejo de repositorios de GitHub (clone | fork | gh-pages)
- Colaboración en Github (branches | pull requests | |tags)
- Organización en Github (projects | issues | labels | milestones)
- Verbos HTTP (http.get)
- Puede instalarse via
npm install --global <github-user>/md-links
- Un board con el backlog para la implementación de la librería.
- Documentación técnica de la librería.
- Guía de uso e instalación de la librería
- El módulo exporta una función con la interfaz (API) esperada.
- Implementa soporte para archivo individual
- Implementa soporte para directorios
- Implementa
options.validate
- Expone ejecutable
md-links
en el path (configurado enpackage.json
) - Se ejecuta sin errores / output esperado
- Implementa
--validate
- Implementa
--stats
- Pruebas unitarias cubren un mínimo del 70% de statements, functions, lines, y branches.
- Pasa tests (y linters) (
npm test
).