**Prueba de Avisos**
2- septiembre- 2024
# Detectar los avisos/admonitions en Docutopia/HedgeDoc
Creamos una pagina en HedgeDoc, la cual llamamos **Avisos** en ella encontramos ejercicios de prueba los cuales son:
* info - success - warning - danger

Este codigo se utiliza para acceder a los hijos del árbol de documentos de la página almacenada en la variable testPage , los cuales me enlista las colecciones de documentTree childre


Se crea un bloque para que podamos agrupar información, entonces el codigo nos dice que tenemos una variable llamada **testPage** donde se seleccionara o envia a documentTree children que son los nodos o hijos, item class verifica el formato que en este caso es PPCMParagraph, donde los filtra y selecciona segun condición y el and lo usamos para dar una segunda condicion que evalua a las variables **avisos** y **palabra**, luego las definimos y en palabras queremos que tome al primer hijo o nodo y se obtenga el texto del mismo. y en avisos estamos definiendo una coleccion de variedad de tipo de avisos y por ultimo tenemos una variable que es **avisos** que incluye a la coleccion de **palabra**

Segunda Condición, Encontrar en los nodos hijos los avisos de info- success-warning-danger




# Arreglo de tipo de aviso
Se crea una variable llamada avisos, en ella se encuentra info - success - warning - danger.

* detect: Es un método que se usa para buscar un elemento en una colección que cumpla con un criterio específico.
* [:each | each includesSubstring: 'warning']: Este es el bloque que se pasa al método detect:. El bloque tiene una variable llamada **each,** que representa el elemento actual de la colección avisos. Dentro del bloque, **each includesSubstring: 'warning' ** verifica si el elemento each contiene la subcadena 'warning'.
*Nota:*
el código busca en la colección avisos el primer elemento que contenga la subcadena 'warning' y lo asigna a la variable tipodeavisos. Si no se encuentra ningún elemento que cumpla con el criterio, tipodeavisos será nil.

# Definiendo Variables:
* palabra: Es el nombre de una variable la cual se define y se asignan usando el símbolo :=
Este código se asigna el valor **warning** a la variable palabra.
* avisos, Es una colección (como una lista) que contiene varios elementos.
* includes, Es el método que se usa para verificar si la colección contiene ese elemento dado
* Y palabra, Es la variable que contiene el valor **'warning'**
Para finalizar, ya tenemos nuestras variables definidas para realizar ejercicio anterior de llamar los tipos de avisos en conjunto y no por codigo separado.
# Convertirlos a Admonitions en Markdeep

Las advertencias son pequeños cuadros de separación que contienen notas, consejos, advertencias, etc., para el lector. Comienzan con una línea de título formada por un patrón de tres signos de exclamación, una clase CSS opcional y un título opcional.
La hoja de estilo predeterminada proporciona clases para "nota" (por defecto), "consejo", "advertencia" y "error". Estas clases no distinguen entre mayúsculas y minúsculas y omiten cualquier dos puntos después de la clase CSS.
!!!tip
Detectar las líneas donde están los avisos tipo `:::info`

Este código está diseñado para detectar líneas en un texto que contengan ':::info', y registrar sus índices en un diccionario ordenado. Si se encuentra una línea que coincide, el índice se guarda con el valor 'info'.
!!!inf
Detectar las líneas donde están los avisos tipo `:::success` `:::warning` `:::danger`
Ahora para cumplir con el anterior ejercicio se debe realizar el siguiente bloque, el cual facilitará detectar las líneas y el valor donde se ubican los avisos tipo ``:::success` `:::warning` y `:::danger`


Conforme al anterior código, el bloque `detecAdmonitionLines` verifica si una línea es igual a ':::success' ':::warning'. o `:::danger`, Si una línea coincide con cualquiera de estos valores, se agrega al diccionario response con el índice de la línea y el tipo de aviso detectado. De esta manera, solo se detectan los avisos de tipo ':::success' ':::warning'. o `:::danger`
!!!inf
Incorpore una manera de intercalar dónde empiezan y dónde terminan.


para fianlizar, este código procesa el contenido de la página suministrada (a través del enlace proporcionado anteriormente) línea por línea, con el objetivo de detectar las ubicaciones donde comienzan los bloques de aviso (marcadas por los tipos de aviso, como ':::info', ':::success', ':::warning' y ':::danger') adicional ver las ubicaciones donde terminan estos bloques (marcadas por 'end'). y representadas (':::').
!!! note
Cada vez que se encuentra una línea que contiene solo `:::` (sin ningún tipo de aviso precedente), se agrega al diccionario de respuesta con la clave `end`. Esta marca indica que el bloque de aviso actual ha llegado a su fin. No se refiere al final del documento completo, sino al final de un bloque de aviso específico.