Skip to content
This repository was archived by the owner on Jul 11, 2026. It is now read-only.
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
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

139 changes: 129 additions & 10 deletions src/analyzer.js
Original file line number Diff line number Diff line change
@@ -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, se incrementa 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;
24 changes: 24 additions & 0 deletions src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,30 @@
</head>

<body>
<header>
<h1>
<little> Analizador de texto</little>
</h1>
</header>
<main>
<ul>
<li class="count1" data-testid="word-count">Palabras</li>
<li class="count2" data-testid="character-count">Caracteres</li>
<li class="count3" data-testid="character-no-spaces-count">Caracteres sin espacios y signos de puntuación</li>
<li class="count4" data-testid="number-count">Números</li>
<li class="count5" data-testid="number-sum">Suma de Números</li>
<li class="count6" data-testid="data-testid">Promedio Longitud Palabras</li>
</ul>
<textarea name="user-input" rows="6" cols="40"></textarea>

<button type="reset" id="reset-button">Limpiar Métricas</button>
</main>
<footer>
<p> María Belén Guzmán </p>
</footer>

<script src="index.js" type="module"></script>


</body>
</html>
67 changes: 66 additions & 1 deletion src/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,68 @@
import analyzer from './analyzer.js';

//TODO: escuchar eventos del DOM e invocar los métodos del objeto `analyzer`
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 <li> dentro de un <ul>
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();



});
52 changes: 52 additions & 0 deletions src/style.css
Original file line number Diff line number Diff line change
@@ -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;
}