Code Monkey home page Code Monkey logo

lim014-mdlinks's Introduction

Markdown Links

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

Planteamiento del problema

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.

Resumen del proyecto

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.

Logo de md-links

logo

1. Diagramas de Flujo

Primer prototipo de diagrama de flujo API

Diagrama en blanco

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"

Diagrama de flujo API FINAL

Copia de Diagrama eAPI

Diagrama de flujo CLI FINAL

Copia de Diagrama en blanco

Guía de uso e instalación de la librería

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]

Options

not option

Para extraer los links de una ruta de un archivo Markdown, se coloca lo siguiente:

$ md-links <path-to-file> 

Ejemplo:

not option

--validate

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:

validate

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.

--stats

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:

stats

--stats --validate

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:

stats y validate

--help

Si deseas conocer sobre los comandos que puedes usar, ingresa este

$ md-links <path-to-file> --help

Por ejemplo:

help

Próximas Mejoras

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

JavaScript

Node

Testing

Estructura del código y guía de estilo

Git y GitHub

HTTP

Fundamentos de programación


General

  • Puede instalarse via npm install --global <github-user>/md-links

README.md

  • 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

API mdLinks(path, opts)

  • El módulo exporta una función con la interfaz (API) esperada.
  • Implementa soporte para archivo individual
  • Implementa soporte para directorios
  • Implementa options.validate

CLI

  • Expone ejecutable md-links en el path (configurado en package.json)
  • Se ejecuta sin errores / output esperado
  • Implementa --validate
  • Implementa --stats

Pruebas / tests

  • Pruebas unitarias cubren un mínimo del 70% de statements, functions, lines, y branches.
  • Pasa tests (y linters) (npm test).

lim014-mdlinks's People

Contributors

fakel avatar nangebav avatar

lim014-mdlinks's Issues

Diagrama de Flujo

  • Hacer el diagrama de flujo para API y pedir feedback.
  • Modificar el diagrama de flujo API con las nuevas sugerencias y volver a pedir feedback
  • Hacer el diagrama de flujo para CLI y pedir feedback.
  • Modificar el diagrama de flujo CLI con las nuevas sugerencias y volver a pedir feedback

Redacción del Readme

  • Descripción del módulo
  • Estructura del diagrama de Flujo del módulo
  • Instrucciones de instalación/uso fácil de comprender

Investigación

  • Node
    Es un entorno de ejecución de javascript, es decir interpreta el código js.

  • Markdown

  • ¿Qué es un API?

  • Rutas absolutas y relativas

  • File System

  • Expresiones Regulares

Librerias y frameworks

Una librería nos proporciona una serie de funciones/métodos muy concretos para simplificar tareas complejas y no necesitamos alterar nuestra estructura. Un claro ejemplo es jQuery ya que nos da funciones sencillas para manejo del DOM, para comunicación AJAX y entre otros.

Un framework es más que una librería porque aporta una estructura completa en la que nosotros “encajamos” nuestro código, impone las condiciones y debemos respetarlas.

Es decir, en una librería tu código es el que está al mando y utiliza las funciones de la librería cuando y como quiere. En un framework, éste es el que está al mando y tu código debe encajarse en su estructura y normas.

Para saber si lo que estamos por usar es un framework o librería, podemos apoyarnos en su propia documentación y así utilizamos el término que le corresponde.

En cuanto a los paquetes y módulos encontré que:
Un paquete es un archivo o directorio que se describe en package.json
Un módulo es cualquier archivo o directorio que Node.js puede cargar con require()

Configurición de package.json

  • Nombre
  • Versión
  • Descripción
  • Autor

Scripts

  • pretest
  • test

Dependencias

  • eslint:
    Herramienta para las buenas prácticas del código
  • jest:
    Servirá para el testeo de mis funciones
  • editorconfig:
  • nodemon:
  • express:
  • markdown-it:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.