Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pruebas: agregue package.json y funcion de leer archivo md #2

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions README-NERY..md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@

## 1. Preámbulo

[Markdown](https://es.wikipedia.org/wiki/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](https://nodejs.org/), que lea y analice archivos
en formato `Markdown`, para verificar los links que contengan y reportar
algunas estadísticas.

## 2. Diagrama de Flujo

![<DIAGRAMA DE FLUJO](img/flujoNerymar.jpg)


## 3. Documentación técnica de la librería

Las herramientas y dependencias implementadas para la construcción de esta Librería fueron las siguientes:

Especificaciones técnicas
## Lenguaje
JavaScript

## Ejecución
Node.js

## Dependencias y modulos NPM

Path
File System
markdown-link-extractor
marked
url-status-code
chalk
node-fetch
module.exports


## PROXIMAS ITERACIONES

En próximas iteraciones se agregara las opciones de --validate y --stats y estadisticas, asi como tambien la creacion de la libreria instalable, pasos para la ## Instalación de la librería y ## Guía de Uso.
(
## Instalación de la librería
## Guía de Uso
)

## Autor
Nerymar Guarnizo Carvajal

Binary file added img/flujoNerymar.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
108 changes: 106 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,107 @@
module.exports = () => {
// ...

module = (file) => {
readFileMd(file);
readLinks(file);
};
exports.module = module;

const pathNode = require('path');
const fs = require('fs');
const markdownLinkExtractor = require('markdown-link-extractor')
// const fetch = require('node-fetch');
const marked = require('marked');
const urlStatusCode = require('url-status-code')
const chalk = require('chalk');

let file = process.argv[2];
file = pathNode.resolve(file);

// const mdLinks = require("md-links");
// console.log(mdLinks)




// <------Función para leer archivo md------>
const readFileMd = (path) =>{
return new Promise((resolve,reject) =>{
if(pathNode.extname(path)!=('.md')){
reject("esta ruta no es valida")
}else{
fs.readFile(path,'utf-8', (err, data) =>{
if(err){
reject(err);
}else{
resolve(data);
}
})
}
})
}
readFileMd(file)
.then((data) => {
let newMarked = new marked.Renderer();
let linksArray= [];
newMarked.link = function (href, title, text){
linksArray.push({
href: href,
text: text,
file: file
});
};
marked(data, { newMarked: newMarked });
})
.catch(err => {console.log(err)
exports.readFileMd = readFileMd
})
// exports.readFileMd = readFileMd;


// <------Función para leer links en archivo md------>
const readLinks = (file) =>{
let urlsOk = 0;
let urlsFails = 0;
let links = markdownLinkExtractor(fs.readFileSync(file).toString());

// - Recorre el Areglo de Links
links.forEach(function (link) {
// - Verifica el Status de las URLs
urlStatusCode(link, (error, statusCode) => {
if (error) {
console.error(error)
} else {
// - Imprime el Link
console.log(chalk.green(link));

// - Imprime el Status Code
console.log(statusCode);

// - Verifica el Status Code
// - Si está arriba entr 200 y 399 la URL está OK
// - En caso contrario no está OK
if ((statusCode >= 200) && (statusCode <= 399)) {
urlsOk ++;
console.log("this link is ok");
} if ((statusCode >= 400)){
urlsFails ++;
console.log("this link is fails");
}
}

// - Imprime el reporte de las URLs
console.log(chalk.blue("URLs OK =" + urlsOk));
console.log(chalk.red("URLs Fails =" + urlsFails));
})
});
}
readLinks(file)
// exports.readLinks = readLinks;









40 changes: 40 additions & 0 deletions md-links.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@

const index = require('./index.js')
// console.log(index);


// console.log(index.readLinks(process.argv[2]));

// console.log(index.readFileMd(file));
console.log(index.module(process.argv[2]));






// <------Función global------>
// const validateLinks = (file) => {
// return new Promise((resolve,reject))
// mdLinks("./md-Links/README.md")
// .then(links => {
// [{ href, text, file }]
// })
// .catch(console.error);

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

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

// }
// validateLinks(process.argv[2])

// exports.validateLinks = validateLinks;
Loading