Correcciones de documentacion y pruebas de funcionamiento
This commit is contained in:
18
LICENSE
Normal file
18
LICENSE
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2025 Drk0027
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
||||||
|
associated documentation files (the "Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
|
||||||
|
following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial
|
||||||
|
portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
||||||
|
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
|
||||||
|
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||||
|
USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
55
README.md
Normal file
55
README.md
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# Word Clock Javascript
|
||||||
|
|
||||||
|
Este ejercicio didactico busca aprender a crear un modulo para nodejs y a utilizar la documentacion generada por JSDocs y los test Mocha.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Tabla de Contenidos
|
||||||
|
- 🚀 Descripción
|
||||||
|
- ✨ Características
|
||||||
|
- ⚙️ Instalación
|
||||||
|
- 💡 Uso
|
||||||
|
- 🔧 Tecnologías
|
||||||
|
- 📄 Licencia
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Descripción
|
||||||
|
Este coodigo pretende explicar como funcionan los modulos para nodejs y la implementacion de test de Mocha.
|
||||||
|
|
||||||
|
|
||||||
|
## ✨ Características
|
||||||
|
* Ejecucion en el terminal de NodeJS
|
||||||
|
* Cambio entre tres idiomas
|
||||||
|
* Documentacion mediante JSDocs
|
||||||
|
* Test mediante Mocha
|
||||||
|
|
||||||
|
## ⚙️ Instalación
|
||||||
|
1. Clona el repositorio:
|
||||||
|
```bash
|
||||||
|
git clone https://git.interlan.ec/Drk0027/Word-Clock-Javascript.git
|
||||||
|
```
|
||||||
|
2. Navega al directorio:
|
||||||
|
```bash
|
||||||
|
cd Word-Clock-Javascript
|
||||||
|
```
|
||||||
|
3. Instala las dependencias:
|
||||||
|
```bash
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
## 💡 Uso
|
||||||
|
**Ejemplo Básico:**
|
||||||
|
```bash
|
||||||
|
npm run run #Ejecuta en idioma inglés
|
||||||
|
npm run run_eo #Ejecuta en idioma esperanto
|
||||||
|
npm run run_es #Ejecuta en idioma español
|
||||||
|
npm run test #Ejecuta test mocha
|
||||||
|
```
|
||||||
|
|
||||||
|
# 🔧 Tecnologías Usadas
|
||||||
|
|
||||||
|
Lenguaje: JavaScript (Node.js)
|
||||||
|
|
||||||
|
# 📄 Licencia
|
||||||
|
Este proyecto está bajo la licencia MIT.
|
||||||
128
index.js
128
index.js
@@ -6,198 +6,198 @@ var display = [
|
|||||||
{
|
{
|
||||||
palabra: "It",
|
palabra: "It",
|
||||||
estado: 1,
|
estado: 1,
|
||||||
id:"it"
|
id: "it"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: " ",
|
palabra: " ",
|
||||||
estado: 1,
|
estado: 1,
|
||||||
id:""
|
id: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: "is",
|
palabra: "is",
|
||||||
estado: 1,
|
estado: 1,
|
||||||
id:"is"
|
id: "is"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: " ",
|
palabra: " ",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:""
|
id: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: "twenty",
|
palabra: "twenty",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"m_20"
|
id: "m_20"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
palabra: "quarter",
|
palabra: "quarter",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"m_15"
|
id: "m_15"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: " ",
|
palabra: " ",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:""
|
id: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: "half",
|
palabra: "half",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"m_30"
|
id: "m_30"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
palabra: "ten",
|
palabra: "ten",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"m_10"
|
id: "m_10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: "five",
|
palabra: "five",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"m_5"
|
id: "m_5"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: " ",
|
palabra: " ",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:""
|
id: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: "past",
|
palabra: "past",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"past"
|
id: "past"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
palabra: "to",
|
palabra: "to",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"to"
|
id: "to"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: " ",
|
palabra: " ",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:""
|
id: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: "twelve",
|
palabra: "twelve",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"h_0"
|
id: "h_0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: "one",
|
palabra: "one",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"h_1"
|
id: "h_1"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
palabra: "two",
|
palabra: "two",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"h_2"
|
id: "h_2"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: "three",
|
palabra: "three",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"h_3"
|
id: "h_3"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: "four",
|
palabra: "four",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"h_4"
|
id: "h_4"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
palabra: "five",
|
palabra: "five",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"h_5"
|
id: "h_5"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: "six",
|
palabra: "six",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"h_6"
|
id: "h_6"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: "seven",
|
palabra: "seven",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"h_7"
|
id: "h_7"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
palabra: "eight",
|
palabra: "eight",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"h_8"
|
id: "h_8"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: "nine",
|
palabra: "nine",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"h_9"
|
id: "h_9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: "ten",
|
palabra: "ten",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"h_10"
|
id: "h_10"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
palabra: " ",
|
palabra: " ",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:""
|
id: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: " ",
|
palabra: " ",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:""
|
id: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: " ",
|
palabra: " ",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:""
|
id: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: "eleven",
|
palabra: "eleven",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"h_11"
|
id: "h_11"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: " ",
|
palabra: " ",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:""
|
id: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: " ",
|
palabra: " ",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:""
|
id: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: " ",
|
palabra: " ",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:""
|
id: ""
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
palabra: " ",
|
palabra: " ",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:""
|
id: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: "O'Clock",
|
palabra: "O'Clock",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:"m_0"
|
id: "m_0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: " ",
|
palabra: " ",
|
||||||
estado: 0,
|
estado: 0,
|
||||||
id:""
|
id: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
palabra: "now",
|
palabra: "now",
|
||||||
estado: 1,
|
estado: 1,
|
||||||
id:"now"
|
id: "now"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
@@ -209,13 +209,13 @@ console.log(chalk.greenBright("---WordClock---"))
|
|||||||
* Reinicia el display a sus valores por defecto
|
* Reinicia el display a sus valores por defecto
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function resetDisplay(){
|
function resetDisplay() {
|
||||||
display.map(fila=>{
|
display.map(fila => {
|
||||||
fila.map(columna=>{
|
fila.map(columna => {
|
||||||
if(columna.id=="it"||columna.id=="is"||columna.id=="now"){
|
if (columna.id == "it" || columna.id == "is" || columna.id == "now") {
|
||||||
display[display.indexOf(fila)][fila.indexOf(columna)].estado=1
|
display[display.indexOf(fila)][fila.indexOf(columna)].estado = 1
|
||||||
}else{
|
} else {
|
||||||
display[display.indexOf(fila)][fila.indexOf(columna)].estado=0
|
display[display.indexOf(fila)][fila.indexOf(columna)].estado = 0
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@@ -233,7 +233,7 @@ function actualizar_display() {
|
|||||||
//evaluar si la columna tiene un estado activo o inactivo y guardar el estado
|
//evaluar si la columna tiene un estado activo o inactivo y guardar el estado
|
||||||
if (columna.estado == 0) {
|
if (columna.estado == 0) {
|
||||||
show.push(chalk.gray(columna.palabra))
|
show.push(chalk.gray(columna.palabra))
|
||||||
}else{
|
} else {
|
||||||
show.push(chalk.yellowBright(columna.palabra))
|
show.push(chalk.yellowBright(columna.palabra))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -246,12 +246,12 @@ function actualizar_display() {
|
|||||||
* Actualiza el estado a activo
|
* Actualiza el estado a activo
|
||||||
* @param {string} id Recibe el id del elemento a actualizar
|
* @param {string} id Recibe el id del elemento a actualizar
|
||||||
*/
|
*/
|
||||||
function cambiar_estado(id){
|
function cambiar_estado(id) {
|
||||||
display.map(fila=>{
|
display.map(fila => {
|
||||||
fila.map(columna=>{
|
fila.map(columna => {
|
||||||
//buscar la hora correspondiente mediante el id y cambiar su estado a 1
|
//buscar la hora correspondiente mediante el id y cambiar su estado a 1
|
||||||
if(columna.id==id){
|
if (columna.id == id) {
|
||||||
display[display.indexOf(fila)][fila.indexOf(columna)].estado=1
|
display[display.indexOf(fila)][fila.indexOf(columna)].estado = 1
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@@ -276,14 +276,14 @@ function hora() {
|
|||||||
|
|
||||||
if (minute > 30) {//si hay mas de 30 minutos
|
if (minute > 30) {//si hay mas de 30 minutos
|
||||||
//activa la hora pasada tanto
|
//activa la hora pasada tanto
|
||||||
cambiar_estado("h_"+(hour+1))
|
cambiar_estado("h_" + (hour + 1))
|
||||||
|
|
||||||
//activa el to
|
//activa el to
|
||||||
cambiar_estado("to")
|
cambiar_estado("to")
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
//activa la hora correspondiente
|
//activa la hora correspondiente
|
||||||
cambiar_estado("h_"+hour)
|
cambiar_estado("h_" + hour)
|
||||||
if (minute !== 0) {
|
if (minute !== 0) {
|
||||||
//activa la palabra pasado /past
|
//activa la palabra pasado /past
|
||||||
cambiar_estado("past")
|
cambiar_estado("past")
|
||||||
@@ -296,15 +296,15 @@ function hora() {
|
|||||||
minutes = {
|
minutes = {
|
||||||
0: "m_0",
|
0: "m_0",
|
||||||
5: "m_5",
|
5: "m_5",
|
||||||
10:"m_10",
|
10: "m_10",
|
||||||
15:"m_15",
|
15: "m_15",
|
||||||
20:"m_20",
|
20: "m_20",
|
||||||
30:"m_30",
|
30: "m_30",
|
||||||
};
|
};
|
||||||
|
|
||||||
if (offset in minutes) {
|
if (offset in minutes) {
|
||||||
//activa los minutos
|
//activa los minutos
|
||||||
cambiar_estado("m_"+offset)
|
cambiar_estado("m_" + offset)
|
||||||
|
|
||||||
} else if (offset === 25) {
|
} else if (offset === 25) {
|
||||||
cambiar_estado("m_20")
|
cambiar_estado("m_20")
|
||||||
@@ -325,20 +325,20 @@ function hora() {
|
|||||||
* Permite reemplazar el array de display por el correspondiente segun el idioma seleccionado
|
* Permite reemplazar el array de display por el correspondiente segun el idioma seleccionado
|
||||||
* @param {string} lang idioma a cambiar
|
* @param {string} lang idioma a cambiar
|
||||||
*/
|
*/
|
||||||
function cambiar_idioma(lang){
|
function cambiar_idioma(lang) {
|
||||||
if(lang=="es"||lang=="en"||lang=="eo"){
|
if (lang == "es" || lang == "en" || lang == "eo") {
|
||||||
display=language[lang]
|
display = language[lang]
|
||||||
return lang
|
return lang
|
||||||
}else{
|
} else {
|
||||||
console.log("argumento desconocido, usando idioma por defecto")
|
console.log("argumento desconocido, usando idioma por defecto")
|
||||||
return "en"
|
return "en"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cambiar_idioma(process.argv[2])
|
cambiar_idioma(process.argv[2])
|
||||||
hora()
|
hora()
|
||||||
setInterval(hora,60000)
|
setInterval(hora, 60000)
|
||||||
|
|
||||||
exports.cambiar_idioma=cambiar_idioma
|
exports.cambiar_idioma = cambiar_idioma
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
"terminal"
|
"terminal"
|
||||||
],
|
],
|
||||||
"author": "drk0027",
|
"author": "drk0027",
|
||||||
"license": "ISC",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chai": "^4.3.4",
|
"chai": "^4.3.4",
|
||||||
"chalk": "^4.1.1"
|
"chalk": "^4.1.1"
|
||||||
|
|||||||
@@ -1,64 +1,22 @@
|
|||||||
var assert = require("chai").assert;
|
var assert = require("chai").assert;
|
||||||
var expect = require("chai").expect;
|
|
||||||
var should = require("chai").should();
|
|
||||||
|
|
||||||
|
|
||||||
var inicio = require("../index");
|
var inicio = require("../index");
|
||||||
|
|
||||||
describe("WordClock evaluado utilizando la interfaz Assert del modulo CHAI", function () {
|
describe("WordClock evaluado utilizando la interfaz Assert del modulo CHAI", function () {
|
||||||
describe("Comprobar que el idioma sea cambiado con exito",function(){
|
describe("Comprobar que el idioma sea cambiado con exito", function () {
|
||||||
it("Comprobar que el idioma esperado coincida con el seleccionado",function(){
|
it("Comprobar que el idioma esperado coincida con el seleccionado", function () {
|
||||||
result= inicio.cambiar_idioma("es")
|
result = inicio.cambiar_idioma("es")
|
||||||
assert.equal(result,"es")
|
assert.equal(result, "es")
|
||||||
})
|
})
|
||||||
it("Comprobar que el idioma seleccionado retorne el idioma predeterminado",function(){
|
it("Comprobar que el idioma esperado coincida con el seleccionado", function () {
|
||||||
result= inicio.cambiar_idioma("ep")
|
result = inicio.cambiar_idioma("eo")
|
||||||
assert.equal(result,"en")
|
assert.equal(result, "eo")
|
||||||
|
})
|
||||||
|
it("Comprobar que el idioma seleccionado al ser desconocido retorne el idioma predeterminado", function () {
|
||||||
|
result = inicio.cambiar_idioma("ep")
|
||||||
|
assert.equal(result, "en")
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
describe("WordClock evaluado utilizando la interfaz Assert del modulo CHAI", function () {
|
|
||||||
describe("revisar que el idioma sea cambiado con exito",function(){
|
|
||||||
it("Comprobar que el idioma esperado coincida con el seleccionado",function(){
|
|
||||||
result= inicio.cambiar_idioma("es")
|
|
||||||
assert.equal(result,"es")
|
|
||||||
})
|
|
||||||
it("Comprobar que el idioma seleccionado retorne el idioma predeterminado",function(){
|
|
||||||
result= inicio.cambiar_idioma("ep")
|
|
||||||
assert.equal(result,"error")
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("WordClock evaluado utilizando la interfaz EXPECT del modulo CHAI",function(){
|
|
||||||
describe("Revisar funcion cambiar_idioma",function(){
|
|
||||||
it("revisar el valor de retorno esperado usando expect(value).to.equal('value')",function(){
|
|
||||||
result=inicio.cambiar_idioma("es")
|
|
||||||
expect(result).to.equal("es")
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe("Calcultator tests using SHOULD interface from CHAI module: ", function () {
|
|
||||||
describe("Check addTested Function: ", function () {
|
|
||||||
it("Check the returned value using: value.should.equal(value): ", function () {
|
|
||||||
result = calculator.addTested("text");
|
|
||||||
result.should.equal("text tested");
|
|
||||||
});
|
|
||||||
it("Check the returned value using: value.should.be.a('value'): ", function () {
|
|
||||||
result = calculator.addTested("text");
|
|
||||||
result.should.be.a('string');
|
|
||||||
});
|
|
||||||
it("Check the returned value using: expect(value).to.have.lengthOf(value): ", function () {
|
|
||||||
result = calculator.addTested("text");
|
|
||||||
result.should.have.lengthOf(11);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
Reference in New Issue
Block a user