From 84e5b83f6abb06f5d8bcfc147a03ce801e45cc93 Mon Sep 17 00:00:00 2001 From: "mbguzman.099@gmail.com" Date: Tue, 27 Feb 2024 15:29:05 -0500 Subject: [PATCH 1/5] todaslaspruebashtmlfuncionan --- package-lock.json | 4 ++-- src/index.html | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index ef1c093..b531843 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "card-validation", + "name": "text-analyzer", "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "card-validation", + "name": "text-analyzer", "version": "1.0.0", "license": "MIT", "devDependencies": { diff --git a/src/index.html b/src/index.html index 3f32ea9..48b45df 100644 --- a/src/index.html +++ b/src/index.html @@ -8,6 +8,30 @@ +
+

+ Analizador de texto +

+
+
+ + + + +
+ + + + \ No newline at end of file From b2925500f64e1108bb63d33d04d8312588d90ded Mon Sep 17 00:00:00 2001 From: "mbguzman.099@gmail.com" Date: Mon, 4 Mar 2024 12:44:14 -0500 Subject: [PATCH 2/5] arregla nombres de html --- src/index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/index.html b/src/index.html index 48b45df..482675e 100644 --- a/src/index.html +++ b/src/index.html @@ -16,13 +16,13 @@

  • Palabras
  • -
  • Caracteres
  • -
  • Caracteres excluyendo espacios
  • +
  • Caracteres
  • +
  • Caracteres sin espacios y signos de puntuación
  • Números
  • -
  • Suma de Números
  • +
  • Suma de Números
  • Promedio Longitud Palabras
- +
From 2bceddf0c57689eca6a4b531c3ef75db10cc2ee6 Mon Sep 17 00:00:00 2001 From: "mbguzman.099@gmail.com" Date: Wed, 6 Mar 2024 00:54:57 -0500 Subject: [PATCH 3/5] funcionalidadesdejsyeldom --- src/analyzer.js | 139 ++++++++++++++++++++++++++++++++++++++++++++---- src/index.js | 67 ++++++++++++++++++++++- 2 files changed, 195 insertions(+), 11 deletions(-) diff --git a/src/analyzer.js b/src/analyzer.js index 85797a8..00e1a0a 100644 --- a/src/analyzer.js +++ b/src/analyzer.js @@ -1,22 +1,141 @@ -const analyzer = { + +const analyzer = { getWordCount: (text) => { - //TODO: esta función debe retornar el recuento de palabras que se encuentran en el parámetro `text` de tipo `string`. + // TODO: esta función debe retornar el recuento de palabras que se encuentran Dividir el texto en palabras utilizando los espacios como separadores + let palabras = text.split(" "); + let count = 0; + + // for= crea un bucle (loop) para Iterar sobre cada palabra + for (let i = 0; i < palabras.length; i++) { + if (palabras[i] !=="") // "" <-- esto es una cadena de caracteres vacía (no hay nada) + //esto también va dentro del bucle (for) + count++; + } + return count; + }, getCharacterCount: (text) => { - //TODO: esta función debe retornar el recuento de caracteres que se encuentran en el parámetro `text` de tipo `string`. - }, + // TODO: Esta función debe retornar el recuento de caracteres que se encuentran en el parámetro `text` de tipo `string`. + return text.length; // propiedad para obtener longitud o número de elementos + + }, + getCharacterCountExcludingSpaces: (text) => { //TODO: esta función debe retornar el recuento de caracteres excluyendo espacios y signos de puntuación que se encuentran en el parámetro `text` de tipo `string`. + let count = 0; + //los signos y el espacio se meten en un array. + const signosDePuntuación = [' ', '.', ',', ';', ':', '!', '?', '"', "'", '-', '_', '/', '\\', '|', '@', '#', '$', '%', '^', '&', '*', '(', ')', '[', ']', '{', '}']; + const espacio = [" "]; + + for (let i = 0; i < text.length; i++) { + // Verificar si el carácter no es un espacio ni un signo de puntuación + if (text[i] !== espacio && !signosDePuntuación.includes(text[i])) { + + count++ + } + } + return count; + }, - getAverageWordLength: (text) => { - //TODO: esta función debe retornar la longitud media de palabras que se encuentran en el parámetro `text` de tipo `string`. - }, + + getAverageWordLength: (text) => { + //TODO: esta función debe retornar la longitud media de palabras que se encuentran en el parámetro `text` de tipo `string`. + + if (!text.trim()) { + return 0; + } + + let wordCount = 0; + let totalLength = 0; + + let inicioPalabra = false; // Variable para controlar si se ha comenzado una palabra + + // Recorremos cada caracter del texto + for (let i = 0; i < text.length; i++) { + // Verificar si el carácter actual es una letra o un número??? + if ((text[i] >= 'a' && text[i] <= 'z') || (text[i] >= 'A' && text[i] <= 'Z') || !isNaN(parseInt(text[i]))) { + // Si es una letra o un dígito, indicamos que se ha comenzado una palabra + inicioPalabra = true; + } else { + // Si no es una letra ni un dígito y ya se ha comenzado una palabra + if (inicioPalabra) { + // Incrementamos el contador de palabras + wordCount++; + // Se reinicia la variable que indica si se ha comenzado una palabra + inicioPalabra = false; + } + } + + // + if (i < text.length - 1 && text[i] !== ' ') { + // Incrementamos la longitud total de todas las palabras + totalLength++; + } + } + + // Si se termina de recorrer el texto y ha comenzado una palabra, incrementamos el contador de palabras + if (inicioPalabra) { + wordCount++; + } + + // longitud media de las palabras + const promedioLength = totalLength / wordCount; + + return promedioLength; + + }, + getNumberCount: (text) => { //TODO: esta función debe retornar cúantos números se encuentran en el parámetro `text` de tipo `string`. + let count = 0; + + for (let i = 0; i < text.length; i++) { + // El carácter actual es un número + // Necesario usar isNaN para comprobar si es un número válido + if (!isNaN(parseInt(text[i]))) { + + count++; + + // No se debe contar dígitos consecutivos como uno solo + while (!isNaN(parseInt(text[i]))) { + i++; + } + } + } + + return count; + }, + getNumberSum: (text) => { //TODO: esta función debe retornar la suma de todos los números que se encuentran en el parámetro `text` de tipo `string`. - }, -}; - + // + let suma = 0; + + let numeroActual = ""; // este es un número temporal + + for (let i = 0; i < text.length; i++) { + + if (!isNaN(parseInt(text[i]))) { + // Si es un número, se agrega al número actual + numeroActual += text[i]; + } else { + // Si no es un número, se verifica si hay un número acumulado + if (numeroActual !== "") { + // el número acumulado o suma se convierte a entero y se suma al total + suma += parseInt(numeroActual); + // Esto reiniia el número actual para usarlo con el siguiente número + numeroActual = ""; + } + } + } + + if (numeroActual !== "") { + suma += parseInt(numeroActual); + } + + return suma; + +} +} export default analyzer; diff --git a/src/index.js b/src/index.js index 58ba255..4df3f41 100644 --- a/src/index.js +++ b/src/index.js @@ -1,3 +1,68 @@ import analyzer from './analyzer.js'; -//TODO: escuchar eventos del DOM e invocar los métodos del objeto `analyzer` \ No newline at end of file +const inputText = document.querySelector('textarea[name="user-input"]'); +inputText.addEventListener('input', function() { + // Aquí se obtiene el texto ingresado por la usuaria + const texto = inputText.value; +// Seleccionar todos los elementos
  • dentro de un
      + const elementosLi = document.querySelectorAll("ul > li"); + +// Función 1 + const primerElementoLi = elementosLi[0]; + + const wordcount = analyzer.getWordCount(texto); + + primerElementoLi.textContent = "Palabras: " + wordcount; + +// Función 2 + const segundoElementoLi = elementosLi[1]; + + const charactercount = analyzer.getCharacterCount(texto); + + segundoElementoLi.textContent = "Caracteres: " + charactercount; + +// Función 3 + const tercerElementoLi = elementosLi[2]; + + const characterCountExcludingSpaces = analyzer.getCharacterCountExcludingSpaces(texto); + + tercerElementoLi.textContent = "Caracteres sin espacios y signos de puntuación: " + characterCountExcludingSpaces; + + // Función 4 + + const cuartoElementoLi = elementosLi[3]; + + const numbercount = analyzer.getNumberCount (texto); + + cuartoElementoLi.textContent = "Números: " + numbercount; + +// función 5 + + const quintoElementoLi = elementosLi[4] + const numbersum = analyzer.getNumberSum(texto); + quintoElementoLi.textContent = "Suma de Números: " + numbersum; + + // Función 6 + + const sextoElementoLi = elementosLi [5] + const datatestid = analyzer.getAverageWordLength(texto); + // Aquí despues de Plabras: "<--- hay un espacio, eso se ve reflejado en el analizador de textos" + sextoElementoLi.textContent = "Promedio Longitud Palabras: " + datatestid ; + + // Botón Limpiar + + function setupResetButton() { + // hay que llamar al textarea usando querySelector por su atributo name + const textarea = document.querySelector('textarea[name="user-input"]'); + const LimpiarMetricas = document.getElementById('reset-button'); + + LimpiarMetricas.addEventListener('click', function() { + textarea.value = ''; + }); + } + // Hay que Llamar a la función para que se ejecute o se configure el event listener + setupResetButton(); + + + +}); \ No newline at end of file From 12cb89a138db68080adb1b6cbd0bb523a9e4bd5a Mon Sep 17 00:00:00 2001 From: "mbguzman.099@gmail.com" Date: Wed, 6 Mar 2024 01:58:38 -0500 Subject: [PATCH 4/5] Guardando cambios en src/analyzer.js antes de cambiar de rama --- src/analyzer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/analyzer.js b/src/analyzer.js index 00e1a0a..9a5dd35 100644 --- a/src/analyzer.js +++ b/src/analyzer.js @@ -73,7 +73,7 @@ const analyzer = { } } - // Si se termina de recorrer el texto y ha comenzado una palabra, incrementamos el contador de palabras + // Si se termina de recorrer el texto y ha comenzado una palabra, se incrementa el contador de palabras if (inicioPalabra) { wordCount++; } From f4c22e91c3212613614ebb4843ce5ac1a64178e7 Mon Sep 17 00:00:00 2001 From: "mbguzman.099@gmail.com" Date: Wed, 13 Mar 2024 13:37:02 -0500 Subject: [PATCH 5/5] =?UTF-8?q?dise=C3=B1ofinalcss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/style.css | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/style.css b/src/style.css index e69de29..0e48c10 100644 --- a/src/style.css +++ b/src/style.css @@ -0,0 +1,52 @@ +html { + background-color: #ccd5ae; +} +header { + display: block; +} +header h1 { + font-family: 'Roboto', sans-serif; + font-size: 50px; + color: #1E1D1D; + text-align: center; + display: block; +} + +textarea[name="user-input"] { + background-color: #FEFAE0; + border: 1px solid #d5ffdd; + border-radius: 10px; + margin-top: 20px; + display: block; + margin: 10px auto; +} + + +.count { + + display: inline-block; + color: #1E1D1D; + border: 2px solid #d5ffdd; + background-color: #FAEDCD; + padding: 12px; + border-radius: 5px; + margin: 5px; + margin-bottom: 20px; +} + + +#reset-button { + border: none; + background-color: #FAEDCD; + color: #1E1D1D; + border-radius: 10px; + display: block; + margin: 10px auto; +} + + +footer { + color: #1E1D1D; + font-family: 'Times New Roman', Times, serif; + margin-left: 100px; +} \ No newline at end of file