/BOG002-md-links

Herramienta que obtiene y analiza archivos markdown, para verificar los links que contiene y reportar algunas estadísticas

Primary LanguageJavaScript

Markdown Links

1. Preámbulo

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.md).

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.

Dentro de una comunidad de código abierto, nos han propuesto 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.

2. Diagrama de flujo

3. Instalación interfaz linea de comando CLI

3.1 Comandos

  • Obtener links e información: Se puede utilizar un directorio o la ruta de un archivo con extensión .md

  • href: URL encontrada.

  • text: Texto que aparecía dentro del link (<a>).

  • file: Ruta del archivo donde se encontró el link.

$ md-links ./some/example.md
./some/example.md http://algo.com/2/3/ Link a algo
./some/example.md https://otra-cosa.net/algun-doc.html algún doc
./some/example.md http://google.com/ Google
  • Obtener validación de los links: Si pasamos la opción --validate ó --v, 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 ./some/example.md --validate
./some/example.md http://algo.com/2/3/ ok 200 Link a algo
./some/example.md https://otra-cosa.net/algun-doc.html fail 404 algún doc
./some/example.md http://google.com/ ok 301 Google
  • Obtener el total de links y links únicos: Si pasamos la opción --stats ó --s el output (salida) será un texto con la ryta absoluta y estadísticas básicas sobre los links.
$ md-links ./some/example.md --stats
Total: 3
Unique: 3
  • Obtener el total de links, unicos y rotos. Los comandos --validate y --stats ó --v y --s dara como resultado la ruta absoluta del archivo con el total de links, los unicos y rotos que éste contenga.
$ md-links ./some/example.md --stats --validate
Total: 3
Unique: 3
Broken: 1

4. Instalación y uso como modulo

const mdLinks = require("md-links");

mdLinks("./some/example.md")
  .then(links => {
    // => [{ href, text, file }, ...]
  })
  .catch(console.error);

mdLinks("./some/example.md", { validate: true })
  .then(links => {
    // => [{ href, text, file, status, ok }, ...]
  })
  .catch(console.error);

mdLinks("./some/dir")
  .then(links => {
    // => [{ href, text, file }, ...]
  })
  .catch(console.error);

5. Objetivos de aprendizaje

JavaScript

Node

Testing

Estructura del código y guía de estilo

  • Organizar y dividir el código en módulos (Modularización)
  • Uso de identificadores descriptivos (Nomenclatura | Semántica)
  • Uso de linter (ESLINT)

Git y GitHub

  • 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)

HTTP

Fundamentos de programación