- 1. Introducción
- 2. Resumen del proyecto
- 3. Funcionalidades del proyecto
- 4. Descripción de archivos
- 5. Criterios de diseño
- 6. Pruebas
Un analizador de texto es una aplicación que permite extraer de un cadena de caracteres información útil de un texto utilizado.
Puede propocionar una variedad de métricas como:
- Conteo de palabras.
- Conteo de caracteres.
- Longitud media de palabras.
- Número de oraciones.
- Número de párrafos, entre otros.
En términos generales, las herramientas de análisis de texto ofrecen datos relevantes y medidas que permiten a los usuarios tomar decisiones bien fundamentadas y extraer conclusiones importantes.
El presente proyecto es una aplicación web de un analizardor de texto que permite a los usuario ingresar y analizar su texto en el navegador, al calcular métricas específicas sobre el número de palabras, número de caracteres, números, signos de puntuación que contiene el texto ingresado por medio del input.
En la desarroolo del proyecto se utilizó HTML, CSS y JavaScript.
El listado de funcionalidades del proyecto es el siguiente:
-
Permite a los usuarios ingresar un texto escribiéndolo en un cuadro de texto.
-
Calcula las siguientes métricas y actualiza el resultado en tiempo real a medida que los usuarios escriben su texto:
- Palabras: Determina el número de palabras en el texto de entrada.
- Caracteres: Cuenta el número de caracteres en el texto de entrada, incluidos espacios y signos de puntuación.
- Caracteres excluyendo espacios y signos de puntuación: Calcula el número de caracteres en el texto de entrada, excluyendo espacios y signos de puntuación.
- Recuento de números: Cuenta cúantos números hay en el texto de entrada.
- Suma de números: Calcula la suma de todos los números que hay en el texto de entrada.
- Longitud media de las palabras: Determina la longitud media de las palabras en el texto de entrada.
-
La aplicación limpia el contenido de la caja de texto haciendo clic en un botón.
La lógica del proyecto está implementada completamente en JavaScript. En este proyecto no se utilizan librerías o frameworks, solo JavaScript puro también conocido como Vanilla JavaScript.
-
README.md: Documento que explica la información sobre el proyecto, su funcionalidad, archivos y criterios de diseño que se tomaron. -
.github/workflows: Esta carpeta contine la configuracion para la ejecution de Github Actions. -
read-only/: Esta carpeta contiene las pruebas de criterios mínimos de aceptación y end-to-end. No debes modificar esta carpeta ni su contenido. -
src/index.html: Contiene el archivo que utiliza el HTML semático. -
src/style.css: En este archivo se generaron las reglas de estilo de la aplicación web. -
src/analyzer.js: Este archivo contiene el objetoanalyzer, que realizar los siguientes métodos:analyzer.getWordCount(text): Esta función calcula el número de palabras que se encuentran en el parámetrotextde tipostring.analyzer.getCharacterCount(text): Esta función determina el total de caracteres se encuentran en el parámetrotextde tipostring.analyzer.getCharacterCountExcludingSpaces(text): Está función calcula el número de caracteres excluyendo espacios y signos de puntuación que se encuentran en el parámetrotextde tipostring.analyzer.getNumberCount(text): Esta función evalúa cuántos números se encuentran en el parámetrotextde tipostring.analyzer.getNumberSum(text): Esta función realiza la suma de todos los números que se encuentran en el parámetrotextde tipostring.analyzer.getAverageWordLength(text): Esta función determinar la longitud media de palabras que se encuentran en el parámetrotextde tipostring.
-
src/index.js: En este archivo se escucha los eventos del DOM, y se invoca los métodos del objetoanalyzersegún sea necesario y se actualiza el resultado en la UI (interfaz de usuaria). -
test/analyzer.spec.js: Este archivo contiene las pruebas unitarias para los métodos del objetoanalyzer.
Se describen los criterios de diseño que se tomaron en el proyecto.
-
Uso de HTML semántico
-
Tiene un encabezado conformado por un
<header>que es padre de un<h1>con el títuloAnalizador de texto. No posee atributosid, niname, niclass. -
La aplicación usa un
<textarea>con un el atributonameen el valoruser-input, es lo que permite ingresar el texto a los usuarios. No contiene atributosid, niclass. -
La aplicación usa un
<ul>con 6 hijos<li>, uno para mostrar cada métrica. Los hijos<li>no pueden tener atributosidninameni hijos. -
El
<li>que muestra el total de palabras tiene el atributodata-testidcon valorword-count. -
El
<li>que muestra el total de caracteres tiene el atributodata-testidcon valorcharacter-count. -
El
<li>que muestra el total de caracteres excluyendo espacios y signos de puntuación posee el atributodata-testidcon valorcharacter-no-spaces-count. -
El
<li>que muestra el total de números tiene el atributodata-testidcon valornumber-count. -
El
<li>que muestra la suma total de números posee el atributodata-testidcon valornumber-sum. -
El
<li>que muestra la longitud media de palabras tiene el atributodata-testidcon valorword-length-average. -
El
<footer>es padre de un<p>que tiene como texto el nombre de la persona que desarrolló la aplicación. -
Posee un
<button>con el atributoiden el valorreset-buttonpara permitir a los usuarios, mediante un clic, limpiar el contenido de la caja de texto.
-
-
Uso de selectores de CSS
-
La aplicación usa
selectores CSS de tipopara darle estilo al<header>y al<footer>. -
La aplicación usa
selectores CSS de classpara darle estilo a los<li>. -
La aplicación usa
selectores de atributopara darle estilo al<textarea>usando el atributoname. -
La aplicación usa
selectores CSS de IDpara darle estilo al<button>con el atributoiden el valorreset-button.
-
-
Modelo de caja (box model): border, margen, padding
- Las
clases cssde los<li>hijos del<ul>definen un estilo usando las propiedades del modelo de caja,background,border,margin,padding. - El
<ul>define un display: grid de 2 filas y 3 columnas para la ubicación de los<li>.
- Las
-
Uso de selectores del DOM
-
La aplicación usa el
selector del DOM querySelectorpara llamar a todos los<li>y al textarea. -
La aplicación usa el
selector del DOM getElementByIdpara llamar al botón.
-
-
Manejo de eventos del DOM (listeners, propagación, delegación)
-
La aplicación registra un Event Listener para escuchar el evento
inputdel<textarea>y actualizar las métricas cuando se haga escriba en el cuadro de texto. -
La aplicación registra un Event Listener para escuchar el evento
clickdel<button>que limpia el contenido de la caja de texto.
-
-
Manipulación dinámica del DOM
- La aplicación actualiza el atributo
textContentde los<li>para mostrar las métricas del texto en tiempo real.
- La aplicación actualiza el atributo
-
Tipos de datos primitivos
- La aplicación convierte valores tipo
stringa tiponumber.
- La aplicación convierte valores tipo
-
Strings (cadenas de caracteres)
- La aplicación usa métodos para manipular strings como
splitque utiliza para generar un array con las palabras de la cadena de texto ingresada cada elemento del array es separado con un espacio,trimse utiliza para quitar los espacio de la cadena de caracteres yreplaceque se utiliza para que dentro de la cadena de texto reemplazar ciertos caracteres por otros.
- La aplicación usa métodos para manipular strings como
-
Variables (declaración, asignación, ámbito)
-
La aplicación declara variables con
letyconst. -
La aplicación NO declara variables con
var.
-
-
Uso de condicionales (if-else, switch, operador ternario, lógica booleana)
- La aplicación usa el statement
if..elsepara evaluar condiciones y determinar si los arrays que creamos en nuestros código cumplen con las condiciones estableciones. Estos condicionales se utilizaron analyzer.js para la funciones que calcula el total de números y la suma total de los números de nuestra texto ingresado.
- La aplicación usa el statement
-
Uso de bucles/ciclos (while, for, for..of)
- La aplicación usa el statement
forpara crear un bucle es iterar en los arrays que creamos y así analizar los elementos de nuestro array y con eso poder calcular la longitud media de las palabras, el total de números y la suma de los número del texto.
- La aplicación usa el statement
-
Funciones (params, args, return)
- El objeto
analyzercontiene seis métodogetWordCount,getCharacterCount,getCharacterCountExcludingSpaces,getNumbersCount,getNumbersSumygetAverageWordLengthpara calcular el recuento de palabras, caracteres, caracteres excluyendo espacios y signos de puntuación, recuento de número, la suma de los números y la longitud media de las palabras de un texto,. Para ello utilizamos parámetrotexty return el valor final calculado en cada uno de los seis métodos.
- El objeto
-
Pruebas unitarias (unit tests)
- Se pasan todas las pruebas unitarias.
-
Módulos de ECMAScript (ES Modules)
- La aplicación usan
importyexportpara importar y exportar valores desde nuestros archivosindex.jsalanalyzer.js.
- La aplicación usan
-
Uso de linter (ESLINT)
- Se utilizó la herramiento de dar formato al archivo de visual studio code para eliminar los errores del formato y pasar todas las pruebas.
-
Uso de identificadores descriptivos (Nomenclatura y Semántica)
- En el código se utilizan identificadores descriptivos para variables y funciones.
Una prueba unitaria es una técnica de prueba de software en la que se comprueba que cada componente individual de un programa o sistema funciona correctamente de manera aislada. En otras palabras, se prueba cada unidad de código por separado para asegurarse de que cumpla con los requisitos y especificaciones.
Las pruebas unitarias de este proyecto ejecutarán los métodos getWordCount, getCharacterCount, getCharacterCountExcludingSpaces, getNumbersCount, getNumbersSum y getAverageWordLength con diferentes argumentos y se confirmará que los valores retornados sean los esperados.
Puedes ejecutar estas pruebas con el comando npm run test.
Estas pruebas analizarán los archivos
index.html,
index.js,
analyzer.js
y
style.css
Puedes ejecutar todas estas pruebas con el comando npm run test:oas
Puedes ejecutar las pruebas de cada grupo de objetivos de aprendizaje de manera individual con los siguientes comandos:
npm run test:oas-htmlnpm run test:oas-cssnpm run test:oas-web-apinpm run test:oas-js
Una prueba end-to-end (E2E) es una técnica de prueba de software en la que se verifica el funcionamiento de todo el sistema desde el inicio hasta el final. En otras palabras, se prueba el flujo completo del software, simulando la interacción de la usuaria con la aplicación, para asegurarse de que todas las partes del sistema funcionan correctamente en conjunto.
Puedes ejecutar estas pruebas con el comando npm run test:e2e.