fix(py|ecma): Fixed some bugs and added multicode sample blocks.
This commit is contained in:
		
							parent
							
								
									b215e04060
								
							
						
					
					
						commit
						2f95746f20
					
				@ -45,6 +45,15 @@ Esto es un ejemplo del error, donde el ***elemento1*** y el ***elemento2*** tend
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
> [!Srx00] El problema radica, en el ejemplo aquí expuesto, en que la cursiva sólo afectaría por posición de los atributos de WMarkDown por defecto, al fragmento de texto " y el ", dejando el resto en negrilla y con dos asteriscos sin procesar. Para arreglar dicho error hay que crear un subelemento que monte negrilla y cursiva de golpe, aunque lo ideal es que lo procese directamente tal como está. Es un poco chapuzas el arreglo pero inicialmente, y en base a la filosofía de funcionamiento, esta es la solución más plausible.
 | 
					> [!Srx00] El problema radica, en el ejemplo aquí expuesto, en que la cursiva sólo afectaría por posición de los atributos de WMarkDown por defecto, al fragmento de texto " y el ", dejando el resto en negrilla y con dos asteriscos sin procesar. Para arreglar dicho error hay que crear un subelemento que monte negrilla y cursiva de golpe, aunque lo ideal es que lo procese directamente tal como está. Es un poco chapuzas el arreglo pero inicialmente, y en base a la filosofía de funcionamiento, esta es la solución más plausible.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Proporción de imágenes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Las imagénes tienden a salir desproporcionadas en algunos casos.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* [X] Localizar el error.
 | 
				
			||||||
 | 
					* [X] Solventar el error.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> [!@Srx00] El problema radicaba en que no está definido un sistema que determine si una imagen ha de ser adaptada al ancho o al largo. Se dejó temporalmente establecido siempre al ancho, pero ha de cambiar con el tiempo.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Valor en el CodeDoc
 | 
					### Valor en el CodeDoc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Cuando se establece valor en el Code Doc, el igual que separa el valor o función del resultado por defecto, en el caso de las funciones, no está separado.
 | 
					Cuando se establece valor en el Code Doc, el igual que separa el valor o función del resultado por defecto, en el caso de las funciones, no está separado.
 | 
				
			||||||
@ -52,4 +61,13 @@ Cuando se establece valor en el Code Doc, el igual que separa el valor o funció
 | 
				
			|||||||
* [ ] Localizar el error.
 | 
					* [ ] Localizar el error.
 | 
				
			||||||
* [ ] Solventar el error.
 | 
					* [ ] Solventar el error.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Switch en Code Block
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					El evento tiene elementos superpuestos los cuales evitan que salte.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* [-] Localizar el error.
 | 
				
			||||||
 | 
					* [ ] Solventar el error.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> [!#] Línea 289 de [https://wmarkdown.k3y.pw/ecma/WMarkDown.ecma.js WMarkDown.ecma.js].
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<!-- [[wmd]] -->
 | 
					<!-- [[wmd]] -->
 | 
				
			||||||
@ -29,12 +29,12 @@ Este proyecto es plenamente gratuito pues es un proyecto orientado a complementa
 | 
				
			|||||||
A continuación se mostrará una tabla de balance con respecto a las cantidades y usos dados.
 | 
					A continuación se mostrará una tabla de balance con respecto a las cantidades y usos dados.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[|
 | 
					[|
 | 
				
			||||||
|= Activo   | Cantidad | Motivo                                      | Usuario     | Cantidad total actual
 | 
					|= Activo   | Cantidad | Fecha      | Motivo                                      | Usuario     | Cantidad total actual
 | 
				
			||||||
|  **BTC**  | 0 BTC    | Inicio del contador de unidades de BTC.     |             | 0 BTC
 | 
					|  **BTC**  | 0 BTC    |            | Inicio del contador de unidades de BTC.     |             | 0 BTC
 | 
				
			||||||
|  **LTC**  | 0 LTC    | Inicio del contador de unidades de LTC.     |             | 0 LTC
 | 
					|  **LTC**  | 0 LTC    |            | Inicio del contador de unidades de LTC.     |             | 0 LTC
 | 
				
			||||||
|  **DOGE** | 0 DOGE   | Inicio del contador de unidades de DOGE.    |             | 0 DOGE
 | 
					|  **DOGE** | 0 DOGE   |            | Inicio del contador de unidades de DOGE.    |             | 0 DOGE
 | 
				
			||||||
|  **DASH** | 0 DASH   | Inicio del contador de unidades de DASH.    |             | 0 DASH
 | 
					|  **DASH** | 0 DASH   |            | Inicio del contador de unidades de DASH.    |             | 0 DASH
 | 
				
			||||||
|  **FAIR** | 0 FAIR   | Inicio del contador de unidades de FAIR.    |             | 0 FAIR
 | 
					|  **FAIR** | 0 FAIR   |            | Inicio del contador de unidades de FAIR.    |             | 0 FAIR
 | 
				
			||||||
|]
 | 
					|]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Cómputo total actual en tenencia.
 | 
					Cómputo total actual en tenencia.
 | 
				
			||||||
 | 
				
			|||||||
@ -75,6 +75,8 @@ Los objetivos para poder llevar a cabo este proyecto son los siguientes:
 | 
				
			|||||||
    + [X] Módulo para visibilizar proyectos y recursos.
 | 
					    + [X] Módulo para visibilizar proyectos y recursos.
 | 
				
			||||||
    + [ ] Módulo para visualizar direcciones de monedas o de pago mediante String y QR con Link integrado.
 | 
					    + [ ] Módulo para visualizar direcciones de monedas o de pago mediante String y QR con Link integrado.
 | 
				
			||||||
    + [ ] Módulo para comentar fragmentos que no resulten en el String de salida.
 | 
					    + [ ] Módulo para comentar fragmentos que no resulten en el String de salida.
 | 
				
			||||||
 | 
					    + [ ] Implementar compatibilidad HTML.
 | 
				
			||||||
 | 
					        + [ ] Gestor de etiquetas HTML limitadas.
 | 
				
			||||||
+ [X] Implementar SyntaxHightlighter para el módulo de bloque de código.
 | 
					+ [X] Implementar SyntaxHightlighter para el módulo de bloque de código.
 | 
				
			||||||
+ [X] Implementar MathJax.
 | 
					+ [X] Implementar MathJax.
 | 
				
			||||||
+ [X] Implementar MermaidJS.
 | 
					+ [X] Implementar MermaidJS.
 | 
				
			||||||
@ -88,20 +90,41 @@ Los puntos a cubrir dentro del proyecto son los siguientes:
 | 
				
			|||||||
[|
 | 
					[|
 | 
				
			||||||
|= Objetivo              | Py  | C#  | Go  | PHP | JS  | CSS | HTML
 | 
					|= Objetivo              | Py  | C#  | Go  | PHP | JS  | CSS | HTML
 | 
				
			||||||
|  Base HTML             |     |     |     |     | [X] | [X] | [X] 
 | 
					|  Base HTML             |     |     |     |     | [X] | [X] | [X] 
 | 
				
			||||||
|  Checkboxes            | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
					 | 
				
			||||||
|  Párrafos              | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
					|  Párrafos              | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
				
			||||||
 | 
					|  Checkboxes            | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
				
			||||||
 | 
					|  Radiobuttons          | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
				
			||||||
 | 
					|  Ticks                 | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
				
			||||||
|  Títulos y cabeceras   | [X] | [X] | [ ] | [ ] | [X] | [X] |
 | 
					|  Títulos y cabeceras   | [X] | [X] | [ ] | [ ] | [X] | [X] |
 | 
				
			||||||
|  Formatos de texto     | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
					|  Negrilla              | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
				
			||||||
|  Exclusor de marcas    | [X] | [X] | [ ] | [ ] | [X] |     |
 | 
					|  Cursiva               | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
				
			||||||
|  Include               | [X] | [X] | [ ] | [ ] |     |     |
 | 
					|  Tachado               | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
				
			||||||
 | 
					|  Subrayado             | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
				
			||||||
|  Links                 | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
					|  Links                 | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
				
			||||||
|  Listas                | [X] | [X] | [ ] | [ ] | [X] | [X] |
 | 
					|  Muestras de color     | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
				
			||||||
|  Tablas                | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
					|  Tablas                | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
				
			||||||
|  Quotes                | [X] | [X] | [ ] | [ ] | [X] | [X] |
 | 
					|  Listas                | [X] | [X] | [ ] | [ ] | [X] | [X] |
 | 
				
			||||||
 | 
					|  Quotes y comentarios  | [X] | [X] | [ ] | [ ] | [X] | [X] |
 | 
				
			||||||
 | 
					|  Bloques de código     | [X] | [X] | [ ] | [ ] | [X] | [X] |
 | 
				
			||||||
 | 
					|  Bloque MathJAX        | [X] | [X] | [ ] | [ ] | [X] | [X] |
 | 
				
			||||||
 | 
					|  Bloque Mermaid        | [X] | [X] | [ ] | [ ] | [X] | [X] |
 | 
				
			||||||
 | 
					|  Bloque de ejemplos    | [X] | [X] | [ ] | [ ] | [X] | [X] |
 | 
				
			||||||
 | 
					|  Bloque XML WMD        | [X] | [X] | [ ] | [ ] | [X] | [X] |
 | 
				
			||||||
 | 
					|  Links de presentación | [X] | [X] | [ ] | [ ] | [X] | [X] |
 | 
				
			||||||
 | 
					|  Módulo de exclusión   | [X] | [X] | [ ] | [ ] | [X] |     |
 | 
				
			||||||
 | 
					|  Inclusiones           | [X] | [X] | [ ] | [ ] |     |     |
 | 
				
			||||||
|  Diccionario           |     |     |     |     | [X] | [X] |
 | 
					|  Diccionario           |     |     |     |     | [X] | [X] |
 | 
				
			||||||
|  Sample de color       | [X] | [X] | [ ] | [ ] |     | [X] |
 | 
					 | 
				
			||||||
|  Presentación de Links | [X] | [X] | [ ] | [ ] | [X] | [X] |
 | 
					 | 
				
			||||||
|  Documento de código   | [X] | [X] | [ ] | [ ] | [X] | [X] |
 | 
					|  Documento de código   | [X] | [X] | [ ] | [ ] | [X] | [X] |
 | 
				
			||||||
 | 
					|  Links Cryptomonedas   | [ ] | [ ] | [ ] | [ ] | [ ] | [ ] |
 | 
				
			||||||
 | 
					|  Scripts de ejemplo    | [ ] | [ ] | [ ] | [ ] | [ ] | [ ] |
 | 
				
			||||||
 | 
					|  Módulo de imagen      | [-] | [ ] | [ ] | [ ] | [-] | [-] |
 | 
				
			||||||
 | 
					|  Módulo de imágenes    | [ ] | [ ] | [ ] | [ ] | [ ] | [ ] |
 | 
				
			||||||
 | 
					|  Módulo de vídeo       | [ ] | [ ] | [ ] | [ ] | [ ] | [ ] |
 | 
				
			||||||
 | 
					|  Módulo de vídeos      | [ ] | [ ] | [ ] | [ ] | [ ] | [ ] |
 | 
				
			||||||
 | 
					|  Módulo de audio       | [ ] | [ ] | [ ] | [ ] | [ ] | [ ] |
 | 
				
			||||||
 | 
					|  Módulo de audios      | [ ] | [ ] | [ ] | [ ] | [ ] | [ ] |
 | 
				
			||||||
 | 
					|  Módulo de multimedia  | [ ] | [ ] | [ ] | [ ] | [ ] | [ ] |
 | 
				
			||||||
 | 
					|  Sistema de progreso   | [ ] | [ ] | [ ] | [ ] | [ ] | [ ] |
 | 
				
			||||||
 | 
					|  Bloque de comentarios | [ ] | [ ] | [ ] | [ ] | [ ] | [ ] |
 | 
				
			||||||
|]
 | 
					|]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> [!#] Con respecto a Python y Go hablamos de compatibilidad local tanto servidor como WASM.
 | 
					> [!#] Con respecto a Python y Go hablamos de compatibilidad local tanto servidor como WASM.
 | 
				
			||||||
 | 
				
			|||||||
@ -156,4 +156,64 @@ Esto es más contenido de la celda 2-B." | Celda 3-B
 | 
				
			|||||||
Esto es más contenido de la celda 2-C.' | Celda 3-C
 | 
					Esto es más contenido de la celda 2-C.' | Celda 3-C
 | 
				
			||||||
|]
 | 
					|]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Code Sample Block Test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<code-sample-block>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```js
 | 
				
			||||||
 | 
					console.log("PASA");
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```py
 | 
				
			||||||
 | 
					print("PASA")
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					¿Funciona? xD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```rust
 | 
				
			||||||
 | 
					fn main(){
 | 
				
			||||||
 | 
					    println!(String::from("PASA"));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```go
 | 
				
			||||||
 | 
					fn main(){
 | 
				
			||||||
 | 
					    println("PASA")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```c
 | 
				
			||||||
 | 
					print("PASA");
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```c++
 | 
				
			||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					#include <string>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					std::cout << "PASA" << std::endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```c#
 | 
				
			||||||
 | 
					debug.println("a", "PASA");
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```java
 | 
				
			||||||
 | 
					system.out.println("PASA");
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```php
 | 
				
			||||||
 | 
					echo "PASA";
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```as
 | 
				
			||||||
 | 
					trace("PASA");
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sql
 | 
				
			||||||
 | 
					select "PASA" as x
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</code-sample-block>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<!-- [[wmd]] -->
 | 
					<!-- [[wmd]] -->
 | 
				
			||||||
@ -327,6 +327,22 @@ export const WMarkDown = (function(){
 | 
				
			|||||||
            return item;
 | 
					            return item;
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /**
 | 
				
			||||||
 | 
					         * @param {!string} type 
 | 
				
			||||||
 | 
					         * @returns {string}
 | 
				
			||||||
 | 
					         * @access private
 | 
				
			||||||
 | 
					         */
 | 
				
			||||||
 | 
					        const get_alternative_type_dictionary = type => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            /** @type {number} */
 | 
				
			||||||
 | 
					            const l = type_dictionary.length;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for(let i = 0; i < l; i ++)
 | 
				
			||||||
 | 
					                if(type_dictionary[i].includes(type))
 | 
				
			||||||
 | 
					                    return type_dictionary[i][0];
 | 
				
			||||||
 | 
					            return type;
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const code_block_format = () => {
 | 
					        const code_block_format = () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            document.querySelectorAll(".wmd-code-block[data-processed=false]").forEach(block => {
 | 
					            document.querySelectorAll(".wmd-code-block[data-processed=false]").forEach(block => {
 | 
				
			||||||
@ -378,6 +394,48 @@ export const WMarkDown = (function(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            document.querySelectorAll(".wmd-code-sample-block[data-processed=false]").forEach(block => {
 | 
				
			||||||
 | 
					                if(!block.innerHTML || (
 | 
				
			||||||
 | 
					                    block.querySelector(".wmd-code-block") && 
 | 
				
			||||||
 | 
					                    !block.querySelector(".wmd-code-block[data-processed=false]")
 | 
				
			||||||
 | 
					                )){
 | 
				
			||||||
 | 
					                    block.setAttribute("data-processed", true);
 | 
				
			||||||
 | 
					                    block.querySelectorAll(".languages>ul>li").forEach((language, i) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        /** @type {string} */
 | 
				
			||||||
 | 
					                        const name = get_alternative_type_dictionary(language.getAttribute("data-language"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        language.setAttribute("data-selected", !i);
 | 
				
			||||||
 | 
					                        language.setAttribute("data-i", i);
 | 
				
			||||||
 | 
					                        language.setAttribute("data-title", name);
 | 
				
			||||||
 | 
					                        language.innerHTML = name;
 | 
				
			||||||
 | 
					                        language.addEventListener("click", event => {
 | 
				
			||||||
 | 
					                            if(event.target.getAttribute("data-selected") == "true")
 | 
				
			||||||
 | 
					                                return;
 | 
				
			||||||
 | 
					                            
 | 
				
			||||||
 | 
					                            /** @type {number} */
 | 
				
			||||||
 | 
					                            const i = Number(event.target.getAttribute("data-i"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            event.target.parentNode.querySelectorAll("li").forEach((language, j) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                /** @type {boolean} */
 | 
				
			||||||
 | 
					                                const selected = i == j;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                if(language.getAttribute("data-selected") != (selected ? "true" : "false")){
 | 
				
			||||||
 | 
					                                    language.setAttribute("data-selected", selected);
 | 
				
			||||||
 | 
					                                    event.target.parentNode.parentNode.parentNode.querySelector(".content>[data-i='" + j + "']").setAttribute("data-visible", selected);
 | 
				
			||||||
 | 
					                                };
 | 
				
			||||||
 | 
					                            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					                    block.querySelectorAll(".content>.wmd-code-block").forEach((sample, i) => {
 | 
				
			||||||
 | 
					                        sample.setAttribute("data-i", i);
 | 
				
			||||||
 | 
					                        sample.setAttribute("data-visible", !i);
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const build_dictionary_items = () => {
 | 
					        const build_dictionary_items = () => {
 | 
				
			||||||
 | 
				
			|||||||
@ -872,4 +872,39 @@
 | 
				
			|||||||
        "https://x.com/faircoinconf", 
 | 
					        "https://x.com/faircoinconf", 
 | 
				
			||||||
        "https://es.wikipedia.org/wiki/FairCoop"
 | 
					        "https://es.wikipedia.org/wiki/FairCoop"
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bmath[ \\-\\.]*jax\\b/i", "MathJax"], 
 | 
				
			||||||
 | 
					        ["/\\blatex\\b/i", "LaTeX"], 
 | 
				
			||||||
 | 
					        ["/\\bmath[ \\-\\.]*ml\\b/i", "MathML"], 
 | 
				
			||||||
 | 
					        ["/\\bascii[ \\.\\-]*math[ \\-\\.]*ml\\b/i", "ASCIIMathML"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "MathJax es una librería JavaScript para implementar funciones matemáticas codificadas en LaTeX, MathML y ", 
 | 
				
			||||||
 | 
					        "ASCIIMathML para entornos Web principalmente, aunque su uso puede extenderse fuera de dicho ámbito.. Fue ", 
 | 
				
			||||||
 | 
					        "desarrollado por la Sociedad Estadounidense de Matemática."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.mathjax.org/", 
 | 
				
			||||||
 | 
					        "https://github.com/mathjax/MathJax", 
 | 
				
			||||||
 | 
					        "https://x.com/mathjax", 
 | 
				
			||||||
 | 
					        "https://www.latex-project.org/", 
 | 
				
			||||||
 | 
					        "https://github.com/latex3/latex2e", 
 | 
				
			||||||
 | 
					        "https://es.wikibooks.org/wiki/Manual_de_LaTeX", 
 | 
				
			||||||
 | 
					        "https://asciimath.org/", 
 | 
				
			||||||
 | 
					        "https://github.com/asciimath/asciimathml", 
 | 
				
			||||||
 | 
					        "https://www.w3.org/Math/", 
 | 
				
			||||||
 | 
					        "https://www.data2type.de/en/xml-xslt-xslfo/math-ml/", 
 | 
				
			||||||
 | 
					        "https://xrjunque.nom.es/(S(wc3b1mabt1xd54jsgfv2gbqm))/MathML_To_String", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/MathJax", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/AsciiMath", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/LaTeX"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bmermaid([ \\-\\.]*js)?\\b/i", "MermaidJS"], [
 | 
				
			||||||
 | 
					        "MermaidJS es una librería JavaScript para implementar esquemas, estructuras, gráficos, etc. Desde un sencillo ", 
 | 
				
			||||||
 | 
					        "entorno de texto encapsulado, procesado de forma dinámica en JavaScript para HTML."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://mermaid.js.org/", 
 | 
				
			||||||
 | 
					        "https://github.com/mermaid-js/mermaid", 
 | 
				
			||||||
 | 
					        "https://mermaid.live/"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
]]
 | 
					]]
 | 
				
			||||||
							
								
								
									
										910
									
								
								Public/json/WMarkDown.dict.gl.kyman.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										910
									
								
								Public/json/WMarkDown.dict.gl.kyman.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,910 @@
 | 
				
			|||||||
 | 
					[[
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bwmarkdown\\b/ig", "WMarkDown"], 
 | 
				
			||||||
 | 
					        ["/\\b(wmd\\b|w\\.m\\.d\\.|w\\. +m\\. +d\\. +)/ig", "WMD"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "O WMarkDown é un procxecto o cal permítenos facer documentación e textos ", 
 | 
				
			||||||
 | 
					        "formateados dende unha linguaxe de marcas sinxelo que parte como idea de ", 
 | 
				
			||||||
 | 
					        "linguaxes de marcas coma MarkDown e MediaWiki, persoaizado a usos máis ", 
 | 
				
			||||||
 | 
					        "extensos, flexibles e sinxelos."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://wmarkdown.k3y.pw/", 
 | 
				
			||||||
 | 
					        "https://git.k3y.pw/Whalers/WMarkDown"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bmedia *wiki\\b/gi", "MediaWiki"], [
 | 
				
			||||||
 | 
					        "MediaWiki é un proxecto Free Open Source que ven sendo a base de Webs ", 
 | 
				
			||||||
 | 
					        "coma Wikipedia entre outros, o cal permite xestionar publicacións e ", 
 | 
				
			||||||
 | 
					        "documentación nun entorno flexible, aberto e extendido cunha gran ", 
 | 
				
			||||||
 | 
					        "comunidade que o mantén."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.mediawiki.org/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/MediaWiki", 
 | 
				
			||||||
 | 
					        "https://github.com/wikimedia/mediawiki"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bmarkdown\\b/gi", "Markdown"], 
 | 
				
			||||||
 | 
					        ["/(?<!\\.)\\b\\bmd\\b|\\b(m\\.d\\.|m\\. +d\\. +)/ig", "MD"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "Markdown é un estándar de linguaxe de marcas que se desenrolou para facilitaren ", 
 | 
				
			||||||
 | 
					        "a documentación con texto formateado nos proyectos, tanto a un nivel visual ", 
 | 
				
			||||||
 | 
					        "mediante texto plano coma unha vez formateado."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://daringfireball.net/projects/markdown", 
 | 
				
			||||||
 | 
					        "https://daringfireball.net/projects/markdown/syntax", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Markdown", 
 | 
				
			||||||
 | 
					        "https://www.markdownguide.org/"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bpython\\b/ig", "Python"], 
 | 
				
			||||||
 | 
					        ["/(?<!\\.)\\bpy\\b/ig", "Py"], 
 | 
				
			||||||
 | 
					        ["/(?<!\\.)\\bpyc\\b/ig", "PyC"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "Python é unha linguaxe de programación moi extendida de uso xeral precompilado ", 
 | 
				
			||||||
 | 
					        "con alta versatilidade moi usado en cómputo. A extensión dos seus arquivos de Script ", 
 | 
				
			||||||
 | 
					        "é '.py' e a dos compilados por defecto '.pyc', ainda que éstes últimos dependen ", 
 | 
				
			||||||
 | 
					        "do compilador."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.python.org/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Python", 
 | 
				
			||||||
 | 
					        "https://es.wikibooks.org/wiki/Python"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/(?<!\\.)\\b(html(5)?\\b|h\\.t\\.m\\.l\\.|h\\. +t\\. +m\\. +l\\. +)/ig", "HTML$2"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "HTML é unha linguaxe de marcas basado en XML pero cunha estructura predefinida ", 
 | 
				
			||||||
 | 
					        "que condiciona como han de exporse os datos, entendendo cada elemento coma unha ", 
 | 
				
			||||||
 | 
					        "estructura de formato para a presentación da información, normalmente, ", 
 | 
				
			||||||
 | 
					        "orientado a contornos Web."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.w3.org/html/", 
 | 
				
			||||||
 | 
					        "https://html.spec.whatwg.org/multipage/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/HTML", 
 | 
				
			||||||
 | 
					        "https://developer.mozilla.org/es/docs/Web/HTML", 
 | 
				
			||||||
 | 
					        "https://www.w3schools.com/html/", 
 | 
				
			||||||
 | 
					        "https://lenguajehtml.com/", 
 | 
				
			||||||
 | 
					        "https://desarrolloweb.com/home/html"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/(?<!\\.)\\b(css\\b|c\\.(s\\.){2}|c\\. +(s\\. +){2})/ig", "CSS"], [
 | 
				
			||||||
 | 
					        "CSS é unha linguaxe de marcas que serve para separa-lo que son os estilos da ", 
 | 
				
			||||||
 | 
					        "estructura da información a cal quérese amosar. Normalmente vai orientado a ", 
 | 
				
			||||||
 | 
					        "contornos Web sobre HTML así como para estructurar e darlle deseño e formato a ", 
 | 
				
			||||||
 | 
					        "contidos XML, velaquí o seu sistema de selectores."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.w3.org/Style/CSS/", 
 | 
				
			||||||
 | 
					        "https://drafts.csswg.org/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/CSS", 
 | 
				
			||||||
 | 
					        "https://developer.mozilla.org/es/docs/Web/CSS", 
 | 
				
			||||||
 | 
					        "https://www.w3schools.com/css/", 
 | 
				
			||||||
 | 
					        "https://lenguajecss.com/css/introduccion/que-es-css/"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\b(sass\\b|s\\.a\\.(s\\.){2}|s\\. +a\\. +(s\\. +){2})/ig", "Sass"], 
 | 
				
			||||||
 | 
					        ["/(?<!\\.)\\b(scss\\b|s\\.c\\.(s\\.){2}|s\\. +c\\. +(s\\. +){2})/ig", "SCSS"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "SASS é unha linguaxe de marcas que extende a propia linguaxe CSS para facilitaren o ", 
 | 
				
			||||||
 | 
					        "desenrolo de estilos de tal forma que unha vez se procese o SASS, éste retorne un ", 
 | 
				
			||||||
 | 
					        "arquiivo CSS mapeado contra o propio arquivo SCSS no que se desenrola SASS."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://sass-lang.com/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Sass", 
 | 
				
			||||||
 | 
					        "https://github.com/sass/sass"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\b(srx01|tars[yi](er(isco)?)?)\\b/ig", "Tarsier"], [
 | 
				
			||||||
 | 
					        "Un Tarsierisco de pura cepa."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://git.k3y.pw/Tarsier"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\b(srx00|ky *man)\\b/ig", "KyMAN"], [
 | 
				
			||||||
 | 
					        "KyMAN é o desenrolador de AnP e dos desenroladores orixináis de WMarkDown, ", 
 | 
				
			||||||
 | 
					        "entre outros. As súas linguaxes principais son Golang, JavaScript/ECMAScript, Python, PHP, ", 
 | 
				
			||||||
 | 
					        "Java, C#, C/C++, MySQL, SQL Server, SQLite, HTML e SASS/CSS."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://kyman.k3y.pw/", 
 | 
				
			||||||
 | 
					        "https://git.k3y.pw/KyMAN", 
 | 
				
			||||||
 | 
					        "https://github.com/0KyMAN0/"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\b(srx02|angelus)\\b/ig", "Angelus"], [
 | 
				
			||||||
 | 
					        "Cine; Running, ainda que agora xa non corro; e Chocolate xD."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://git.k3y.pw/Angelus"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\b(srx03|[1i]noro)\\b/ig", "1noro"], [
 | 
				
			||||||
 | 
					        "Entusiasta das redes, da programación e administración se sistemas. Centrandome sempre no software libre."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://github.com/1noro", 
 | 
				
			||||||
 | 
					        "https://rats.land/", 
 | 
				
			||||||
 | 
					        "https://git.k3y.pw/1noro"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bsrx04\\b/ig", "Srx04"], [
 | 
				
			||||||
 | 
					        "Srx04 é un/ha divulgador@, Gamer e desenrolad@ que participou en certos proxectos ", 
 | 
				
			||||||
 | 
					        "coma MuWeb, AnP, WMarkDown, etc."
 | 
				
			||||||
 | 
					    ], []
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\b(a[n&]p\\b|a\\.n\\.p\\.|a\\. +n\\. +p\\. +)/ig", "AnP"], 
 | 
				
			||||||
 | 
					        ["/\\battach +and +play\\b/gi", "Attach and Play"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "AnP (Attach and Play) é un proxecto a modo Framework para desenrolar aplicacións, ", 
 | 
				
			||||||
 | 
					        "principalmente aplicacións Web ainda que pódese extender a xogos, aplicacións de ", 
 | 
				
			||||||
 | 
					        "escritorio ou de terminal/consola de comandos, desenrolado por KyMAN."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://anp.k3y.pw/", 
 | 
				
			||||||
 | 
					        "https://git.k3y.pw/AnP/AnP"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\b((?<!\\.)xml\\b|x\\.m\\.l\\.|x\\. +m\\. +l\\. +)/ig", "XML"], [
 | 
				
			||||||
 | 
					        "XML é un formato de almaceamento de datos en texto plano basado en marcas para a ", 
 | 
				
			||||||
 | 
					        "encapsulación por etiquetas, as cales identifícanse mediante aperturas e peches de ", 
 | 
				
			||||||
 | 
					        "diamantes, é dicir, '<' e '>'."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.w3.org/XML/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Extensible_Markup_Language", 
 | 
				
			||||||
 | 
					        "https://developer.mozilla.org/es/docs/Web/XML/XML_introduction", 
 | 
				
			||||||
 | 
					        "https://support.microsoft.com/es-es/office/xml-para-no-iniciados-a87d234d-4c2e-4409-9cbc-45e4eb857d44"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\b(dpis?\\b|d\\.p\\.i\\.|d\\. +p\\. +i\\. +)/ig", "DPI"], 
 | 
				
			||||||
 | 
					        ["/\\b(p{3}s?\\b|(p\\.){3}|(p\\. +){3})/ig", "PPP"], 
 | 
				
			||||||
 | 
					        ["/\\bpuntos +(x|por) +pulgada\\b/gi", "Puntos Por Pulgada"], 
 | 
				
			||||||
 | 
					        ["/\\bdots +per +inch\\b/gi", "Dots Per Inch"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "Os DPI ou Puntos por Pulgada, é unha unidade de medida para relativizar á densidade ", 
 | 
				
			||||||
 | 
					        "do número de píxels por pulgada nunha pantalla ou imaxe."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Puntos_por_pulgada", 
 | 
				
			||||||
 | 
					        "https://www.pccomponentes.com/dpi-que-son-para-que-sirven-cual-es-su-funcion-en-raton-gaminge", 
 | 
				
			||||||
 | 
					        "https://www.sony.es/electronics/support/articles/00027623"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\blicencia +(mit\\b|m\\.i\\.t\\.|m\\. +i\\. +t\\. +)/ig", "Licencia MIT"], [
 | 
				
			||||||
 | 
					        "A Licencia MIT é unha licencia Open Source do MIT para compartir abertamente sen ", 
 | 
				
			||||||
 | 
					        "necesidade de nomear ó/á ou ós autores, e que permite a modificación e comercialización ", 
 | 
				
			||||||
 | 
					        "do Software."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Licencia_MIT", 
 | 
				
			||||||
 | 
					        "https://opensource.org/license/mit", 
 | 
				
			||||||
 | 
					        "https://www.licen.cc/es/licencias/mit/", 
 | 
				
			||||||
 | 
					        "https://www.youtube.com/watch?v=5oMm0MBPK6g"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\b(mit\\b|m\\.i\\.t\\.|m\\. +i\\. +t\\. +)/ig", "MIT"], 
 | 
				
			||||||
 | 
					        ["/\\bmas{1,2}achuset{1,2}s? +institute +of +technology\\b/gi", "Massachusetts Institute of Technology"], 
 | 
				
			||||||
 | 
					        ["/\\binstituto +(de +tecnolog[ií]a|tecnol[óo]gico) +de +mas{1,2}achuset{1,2}s?\\b/gi", "Instituto de Tecnología de Massachusetts"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "O MIT, ou Instituto Tecnolóxico de Massachusetts, é a Universidade Americana de ", 
 | 
				
			||||||
 | 
					        "Tecnoloxía por excelencia, onde está o desenrolo dos Robots como Atlas; ou a ", 
 | 
				
			||||||
 | 
					        "famosa licencia de Software Libre MIT."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.mit.edu/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Instituto_de_Tecnolog%C3%ADa_de_Massachusetts"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bopen *source\\b/ig", "Open Source"], 
 | 
				
			||||||
 | 
					        ["/\\bsoftware +libre\\b/ig", "Software Libre"], 
 | 
				
			||||||
 | 
					        ["/\\bsoftware +de +c[óo]digo +abierto\\b/gi", "Software de Código Abierto"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "O Open Source é o concepto de deixar público o código fonte dun proxecto para ", 
 | 
				
			||||||
 | 
					        "poder ser compartido e/ou analizado pola comunidade. O Free Open Source sería ", 
 | 
				
			||||||
 | 
					        "Software Libre e gratuito."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://opensource.org/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Software_de_c%C3%B3digo_abierto"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bgit *hub\\b/ig", "GitHub"], [
 | 
				
			||||||
 | 
					        "GitHub é a plataforma principal pública para proxectos Git en Internet. Actualmente, ", 
 | 
				
			||||||
 | 
					        "GitHub.com é a opción para xestionar repositorios para proxectos mentras que GitHub.io ", 
 | 
				
			||||||
 | 
					        "é para a xeración de páxinas Web basadas no mesmo concepto de Git."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://github.com/", 
 | 
				
			||||||
 | 
					        "https://github.io/",
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/GitHub"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bgit *lab\\b/ig", "GitLab"], [
 | 
				
			||||||
 | 
					        "GitLab é o proxecto orixinal público con soporte para Self Hosting para xestión de ", 
 | 
				
			||||||
 | 
					        "proxectos Git. Pero ademáis ten a opción de facer uso como ferramenta externa como GitHub ", 
 | 
				
			||||||
 | 
					        "sen que éste pertenza a Microsoft."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://gitlab.com/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/GitLab",
 | 
				
			||||||
 | 
					        "https://git-scm.com/book/es/v2/Git-en-el-Servidor-GitLab"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bgitea\\b/ig", "Gitea"], [
 | 
				
			||||||
 | 
					        "Gitea é unha alternativa ultralixeira e portable para ter un servidor local Git alternativo ", 
 | 
				
			||||||
 | 
					        "de baixos recursos e gran versatilidade."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://gitea.com/", 
 | 
				
			||||||
 | 
					        "https://github.com/go-gitea/gitea",
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Gitea"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\b(?<!\\.)git\\b/ig", "Git"], [
 | 
				
			||||||
 | 
					        "Git é un Software para facer control de sistemas de distribución de versións dun proxecto. ", 
 | 
				
			||||||
 | 
					        "Éste tamén permite control entre os participantes en grupos e permisos e xestión da ", 
 | 
				
			||||||
 | 
					        "publicación do código."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://git-scm.com/", 
 | 
				
			||||||
 | 
					        "https://github.com/git/git",
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Git", 
 | 
				
			||||||
 | 
					        "https://learn.microsoft.com/es-es/devops/develop/git/what-is-git", 
 | 
				
			||||||
 | 
					        "https://www.atlassian.com/es/git/tutorials/what-is-git"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\berrors *manager\\b/ig", "ErrorsManager"], [
 | 
				
			||||||
 | 
					        "ErrorsManager é un proxecto multiplataforma desenrolado por KyMAN orientado a xestionar códigos ", 
 | 
				
			||||||
 | 
					        "de error con valores Booleanos dentro de bloques String ou enteiros para simplificaren de forma ", 
 | 
				
			||||||
 | 
					        "binaria cada un deles."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://errorsmanager.k3y.pw/", 
 | 
				
			||||||
 | 
					        "https://git.k3y.pw/KyMAN/ErrorsManager"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bbits? *wise\\b/ig", "Bitwise"], 
 | 
				
			||||||
 | 
					        ["/\\bdesplazamientos? *de *bits?\\b/ig", "Desplazamiento de Bit"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "Bitwise ou Desprazamento de Bit é unha práctica de traballo en binarios que se trata de desaprazar ", 
 | 
				
			||||||
 | 
					        "bits á dereita ou á esquerda nun valor para operar con eles. É unha práctica moi utilizada ", 
 | 
				
			||||||
 | 
					        "en informática é realizan operacións que soen vir integrados nos procesadores físicos, o ", 
 | 
				
			||||||
 | 
					        "que fai destas operacións un traballo moi rápido, global e áxil. Tamén sóense englobar os ", 
 | 
				
			||||||
 | 
					        "operadores de Bits habituais como AND, NOT, OR, etc."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Operador_a_nivel_de_bits", 
 | 
				
			||||||
 | 
					        "https://www.w3schools.com/js/js_bitwise.asp", 
 | 
				
			||||||
 | 
					        "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_OR", 
 | 
				
			||||||
 | 
					        "https://ellibrodepython.com/operadores-bitwise", 
 | 
				
			||||||
 | 
					        "https://manual.gamemaker.io/monthly/es/Additional_Information/Bitwise_Operators.htm"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\b(?<!\\.)((j\\.s\\.o\\.n\\.|j\\. +s\\. +o\\. +n\\. +)|json\\b)/gi", "JSON"], 
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        "Os arquivos JSON son arquivos para estructuración de datos no formato de diccionarios (Arrays ", 
 | 
				
			||||||
 | 
					        "Asociativos) e vectores e matrices (Arrays Indexados ou Secuenciales) de JavaScript."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.json.org/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/JSON", 
 | 
				
			||||||
 | 
					        "https://www.oracle.com/es/database/what-is-json/", 
 | 
				
			||||||
 | 
					        "https://www.hostinger.es/tutoriales/que-es-json"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bjava *script\\b/ig", "JavaScript"], 
 | 
				
			||||||
 | 
					        ["/\\b(?<!\\.)js\\b/ig", "JS"], 
 | 
				
			||||||
 | 
					        ["/\\b(?<!\\.)ecma( *script)?\\b/ig", "ECMAScript"], 
 | 
				
			||||||
 | 
					        ["/\\btype *script\\b/ig", "TypeScript"], 
 | 
				
			||||||
 | 
					        ["/\\b(?<!\\.)ts\\b/gi", "TS"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "JavaScript, ou JS é unha linguaxe de programación débilmente tipada e moi flexible sintácticamente, interpretado ", 
 | 
				
			||||||
 | 
					        "e precompilado, coñecido principalmente por NodeJS e JavaScript nos navegadores cara programación Web ", 
 | 
				
			||||||
 | 
					        "Front End. Por outra banda, temos ECMAScript, que deriva de JavaScript cara un estándar usado en Node ", 
 | 
				
			||||||
 | 
					        "principalmente. Tamén temos derivacións compiladas como TypeScript, TS, que permite definir mellor os ", 
 | 
				
			||||||
 | 
					        "elementos."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://ecma-international.org/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/JavaScript", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/ECMAScript", 
 | 
				
			||||||
 | 
					        "https://www.w3schools.com/js/", 
 | 
				
			||||||
 | 
					        "https://developer.mozilla.org/es/docs/Learn/JavaScript/First_steps/What_is_JavaScript", 
 | 
				
			||||||
 | 
					        "https://developer.mozilla.org/es/docs/Glossary/ECMAScript", 
 | 
				
			||||||
 | 
					        "https://es.javascript.info/", 
 | 
				
			||||||
 | 
					        "https://lenguajejs.com/javascript/"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bstring(s)?\\b/ig", "String$1"], [
 | 
				
			||||||
 | 
					        "Un String é un tipado de valor para referirse a un texto. Básicamente ven sendo unha cadea ou vector de ", 
 | 
				
			||||||
 | 
					        "caracteres que mediante funcións ou estructuras internas da linguaxe permite ser traballado como un tipado ", 
 | 
				
			||||||
 | 
					        "nativo."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Cadena_de_caracteres", 
 | 
				
			||||||
 | 
					        "https://developer.mozilla.org/es/docs/Glossary/String", 
 | 
				
			||||||
 | 
					        "https://docs.python.org/es/3/library/string.html", 
 | 
				
			||||||
 | 
					        "https://learn.microsoft.com/es-es/dotnet/api/system.string?view=net-8.0", 
 | 
				
			||||||
 | 
					        "https://www.php.net/manual/es/language.types.string.php", 
 | 
				
			||||||
 | 
					        "https://www.w3schools.com/js/js_string_methods.asp"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\b(acl|a\\.c\\.l\\.|a\\. +c\\. +l\\. +)\\b/ig", "ACL"], 
 | 
				
			||||||
 | 
					        ["/\\blistas? +de +control +de +acceso\\b/gi", "Lista de Control de Acceso"], 
 | 
				
			||||||
 | 
					        ["/\\baccess +control +lists?\\b/gi", "Access Control List"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "As ACL ou Listas de Control de Acceso son unha serie de normas que extenden os permisos dun ", 
 | 
				
			||||||
 | 
					        "entorno UNIX, LDAP ou de Rede."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Lista_de_control_de_acceso", 
 | 
				
			||||||
 | 
					        "https://datatracker.ietf.org/doc/html/rfc4949", 
 | 
				
			||||||
 | 
					        "https://launchpad.net/ubuntu/+source/acl", 
 | 
				
			||||||
 | 
					        "https://packages.debian.org/search?keywords=acl"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\b(cdn|c\\.d\\.n\\.|c\\. +d\\. +n\\. +)\\b/ig", "CDN"], 
 | 
				
			||||||
 | 
					        ["/\\bred +de +distri[bv]uci[oó]n +de +contenidos?\\b/gi", "Red de Distribución de Contenidos"], 
 | 
				
			||||||
 | 
					        ["/\\bcontents? +delivery +network\\b/gi", "Content Delivery Network"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "Unha Rede de Distribución de Contidos ou CDN ven sendo unha rede de servidores para distruir e ", 
 | 
				
			||||||
 | 
					        "manter contidos en Rede de forma centralizada para especializar contidos de uso común."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Red_de_distribuci%C3%B3n_de_contenidos", 
 | 
				
			||||||
 | 
					        "https://www.cloudflare.com/es-es/learning/cdn/what-is-a-cdn/", 
 | 
				
			||||||
 | 
					        "https://aws.amazon.com/es/what-is/cdn/", 
 | 
				
			||||||
 | 
					        "https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc754435(v=ws.11)?redirectedfrom=MSDN"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bsql *server\\b/ig", "SQL Server"], 
 | 
				
			||||||
 | 
					        ["/\\btransact *sql\\b/gi", "Transact SQL"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "SQL Server é o motor de Base de Datos relacional de Microsoft, coa linguaxe Transact SQL."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.microsoft.com/es-es/sql-server", 
 | 
				
			||||||
 | 
					        "https://www.tsql.info/", 
 | 
				
			||||||
 | 
					        "https://learn.microsoft.com/es-es/training/modules/get-started-transact-sql-programming/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Transact-SQL", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Microsoft_SQL_Server", 
 | 
				
			||||||
 | 
					        "https://www.arsys.es/blog/ms-sql-server"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bmy *sql\\b/ig", "MySQL"], 
 | 
				
			||||||
 | 
					        ["/\\bmaria *(db|bd)\\b/gi", "MariaDB"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "MySQL é un motor Free Open Source para Bases de Datos relacionais coa linguaxe SQL, actualmente ", 
 | 
				
			||||||
 | 
					        "propiedade de Oracle. Por éste último motivo e para preserva-la filosofía anterior a Oracle, existe ", 
 | 
				
			||||||
 | 
					        "o Fork MariaDB como alternativa fora de Oracle."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.mysql.com/", 
 | 
				
			||||||
 | 
					        "https://mariadb.org/", 
 | 
				
			||||||
 | 
					        "https://mariadb.com/", 
 | 
				
			||||||
 | 
					        "https://github.com/mysql/mysql-server", 
 | 
				
			||||||
 | 
					        "https://github.com/MariaDB", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/MySQL", 
 | 
				
			||||||
 | 
					        "https://es.wikibooks.org/wiki/MySQL", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/MariaDB", 
 | 
				
			||||||
 | 
					        "https://en.wikibooks.org/wiki/MariaDB", 
 | 
				
			||||||
 | 
					        "https://www.arsys.es/blog/mysql"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bsql *l?ite\\b/ig", "SQLite"], [
 | 
				
			||||||
 | 
					        "SQLite é un pequeno motor para Bases de Datos relacionais, moi simplificado con ausencia de ", 
 | 
				
			||||||
 | 
					        "certos elementos como Procedimientos Almaceados ainda que coa capacidade de integrar compilados ", 
 | 
				
			||||||
 | 
					        "de C, moi extendido para usos locais."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.sqlite.org/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/SQLite", 
 | 
				
			||||||
 | 
					        "https://github.com/sqlite/sqlite", 
 | 
				
			||||||
 | 
					        "https://docs.python.org/es/3/library/sqlite3.html", 
 | 
				
			||||||
 | 
					        "https://codigofacilito.com/articulos/configurando-sqlite"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\b((?<!\\.)sql\\b|s\\.q\\.l\\.|(?<! )s\\. +q\\. +l\\. +)/ig", "SQL"], 
 | 
				
			||||||
 | 
					        ["/\\bstructured +query +language\\b/gi", "Structured Query Language"], 
 | 
				
			||||||
 | 
					        ["/\\blengua[jg]e +de +consulta +estructurada\\b/gi", "Lenguaje de Consulta Estructurada)"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "SQL é unha linguaxe que parte de Pascal para xestión de datos."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.iso.org/standard/76583.html", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/SQL", 
 | 
				
			||||||
 | 
					        "https://datademia.es/blog/que-es-sql"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\b(?<!\\.)(was[mt]|w\\.a\\.s\\.[mt]\\.|(?<! )w\\. +a\\. +s\\. +[mt]\\. +)\\b/gi", "WASM"], 
 | 
				
			||||||
 | 
					        ["/\\bweb *assembly\\b/gi", "WebAssembly"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "WebAssembly, o WASM, es un API de navegador para ejecución de binarios compilados de una forma ", 
 | 
				
			||||||
 | 
					        "específica con el objetivo de agilizar y profundizar en el entorno cliente Web. Actualmente ", 
 | 
				
			||||||
 | 
					        "se pueden desarrollar WASM desde C, Rust, C++, etc."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://webassembly.org/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/WebAssembly", 
 | 
				
			||||||
 | 
					        "https://developer.mozilla.org/es/docs/WebAssembly"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\b(gui|(?<!\\.)(g\\.u\\.i\\.|(?<! )g\\. +u\\. +i\\. +))(?![a-zÀ-ÖØ-öø-ÿ])\\b/gi", "GUI"], 
 | 
				
			||||||
 | 
					        ["/\\b(ui|(?<!\\.)(u\\.i\\.|(?<! )u\\. +i\\. +))\\b/gi", "UI"], 
 | 
				
			||||||
 | 
					        ["/\\bgraphic(al)? +user +interface\\b/gi", "Graphical User Interface"], 
 | 
				
			||||||
 | 
					        ["/\\buser +interface\\b/gi", "User Interface"], 
 | 
				
			||||||
 | 
					        ["/\\binterfa(z|ce) +gr[aá]fica +del? +usuario\\b/gi", "Interfaz Gráfica de Usuario"], 
 | 
				
			||||||
 | 
					        ["/\\binterfa(z|ce) +del? +usuario\\b/gi", "Interfaz de Usuario"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "El UI, o Interfaz Gráfica por sus siglas en Inglés, es un entorno donde el usuario puede ", 
 | 
				
			||||||
 | 
					        "interactuar o ver una información; y el GUI, o Interfaz Gráfica del Usuario por sus siglas ", 
 | 
				
			||||||
 | 
					        "en inglés, sería un entorno gráfico, no sólo Core en modo texto, donde el usuario puede ", 
 | 
				
			||||||
 | 
					        "ver y/o interactuar con una información."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Interfaz_gr%C3%A1fica_de_usuario"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bweb\\b/gi", "Web"], [
 | 
				
			||||||
 | 
					        "La Web es lo que conocemos como aquella parte de Internet regida por la normativa de la W3 ", 
 | 
				
			||||||
 | 
					        "donde nos podemos encontrar sitios Web, páginas Web y protocolos y versiones Web."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.w3.org/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Web"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bi18n\\b/gi", "I18N"], [
 | 
				
			||||||
 | 
					        "La I18N, o Intenacionalización, viene siendo la gestión de textos en distintos idiomas dentro ", 
 | 
				
			||||||
 | 
					        "de una aplicación. Puede haber numerosos métodos para dicho fin, ya sea dependiendo del lenguaje, ", 
 | 
				
			||||||
 | 
					        "así como la filosofía de desarrollo escogida."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Internacionalizaci%C3%B3n_y_localizaci%C3%B3n", 
 | 
				
			||||||
 | 
					        "https://www.w3.org/International/questions/qa-i18n.en.html#i18n", 
 | 
				
			||||||
 | 
					        "https://developer.mozilla.org/es/docs/Mozilla/Add-ons/WebExtensions/API/i18n"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bsingletons?\\b/gi", "Singleton"], [
 | 
				
			||||||
 | 
					        "Un Singleton es una instancia única de un clase, es decir, la instancia de una clase que sólo ", 
 | 
				
			||||||
 | 
					        "puede ser creada como objeto una única vez. Este término de uso único también es aplicado por ", 
 | 
				
			||||||
 | 
					        "KyMAN para ejecuciones de funciones que sólo pueden ser ejecutadas una única vez por estructura ", 
 | 
				
			||||||
 | 
					        "de código."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Singleton", 
 | 
				
			||||||
 | 
					        "http://design-patterns-with-uml.blogspot.com/2013/02/singleton-pattern.html", 
 | 
				
			||||||
 | 
					        "https://medium.com/dise%C3%B1o-de-software/singleton-el-patr%C3%B3n-del-mal-f3fdab0e16a2"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bcallback(s)?\\b/gi", "Callback$1"], [
 | 
				
			||||||
 | 
					        "Función que se envía para ser llamada por alguna acción, ya sea de forma síncrona (Para definir ", 
 | 
				
			||||||
 | 
					        "cómo hacer algo a algún método, como sucede con los métodos 'sort', 'reduce', etc.) o asíncrona ", 
 | 
				
			||||||
 | 
					        "(como sucede cuando se quiere continuar un proceso de forma asíncrona, como una carga de algo, ", 
 | 
				
			||||||
 | 
					        "etc. Sin hacer uso de elementos de gestión de hilos de proceso de tipo 'wait')."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Retrollamada_(inform%C3%A1tica)", 
 | 
				
			||||||
 | 
					        "https://developer.mozilla.org/es/docs/Glossary/Callback_function", 
 | 
				
			||||||
 | 
					        "https://www.freecodecamp.org/espanol/news/que-es-una-funcion-callback-javascript/", 
 | 
				
			||||||
 | 
					        "https://lenguajejs.com/javascript/asincronia/callbacks/"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bbool(ean(o)?)?\\b/gi", "Boolean$2"], [
 | 
				
			||||||
 | 
					        "Un valor Booleano es aquel cuyo tipado que sólo puede tener dos valores lógicos: verdadero o falso, ", 
 | 
				
			||||||
 | 
					        "equivalentes a 1 y a 0 consecutivamente a nivel de Bit. Ésto parte del álgebra de Bool."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Tipo_de_dato_l%C3%B3gico", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/%C3%81lgebra_booleana", 
 | 
				
			||||||
 | 
					        "https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Boolean", 
 | 
				
			||||||
 | 
					        "https://learn.microsoft.com/es-es/dotnet/csharp/language-reference/builtin-types/bool"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bbit(s)?\\b/gi", "Bit$1"], [
 | 
				
			||||||
 | 
					        "Un Bit es la unidad mínima de memoria e información, y representaría un 0 o un 1, que como valor Booleano ", 
 | 
				
			||||||
 | 
					        "sería 'false' y 'true' consecutivamente."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Bit", 
 | 
				
			||||||
 | 
					        "https://es.wiktionary.org/wiki/bit", 
 | 
				
			||||||
 | 
					        "https://www.rae.es/dpd/bit"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\b(?<!\\.)js *doc\\b/gi", "JSDoc"], [
 | 
				
			||||||
 | 
					        "JSDoc es un sistema estándar para documentar código JavaScript y equivalentes a partir de comentarios ", 
 | 
				
			||||||
 | 
					        "dentro de código. Esto no sólo nos facilita la interpretación del código sino que también ayuda al IDE ", 
 | 
				
			||||||
 | 
					        "a guiarnos por el mismo si éste posee las herramientas adecuadas."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://jsdoc.app/", 
 | 
				
			||||||
 | 
					        "https://github.com/jsdoc/jsdoc", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/JSDoc", 
 | 
				
			||||||
 | 
					        "https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bframe *work(s)?\\b/gi", "Framework$1"], [
 | 
				
			||||||
 | 
					        "Conjunto de herramientas y librerías con un fin o propósito diseñado para ayuda al desarrollo de un tipo ", 
 | 
				
			||||||
 | 
					        "de Software con una filosofía, lenguajes y estructuras concretas."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Framework", 
 | 
				
			||||||
 | 
					        "https://unirfp.unir.net/revista/ingenieria-y-tecnologia/framework/"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\b(?<![\\.a-zÀ-ÖØ-öø-ÿ])as( *[23](\\.0)?)?(?![a-zÀ-ÖØ-öø-ÿ])\\b/gi", "AS$1"], 
 | 
				
			||||||
 | 
					        ["/\\baction *script( *[23](\\.0)?)?\\b/gi", "ActionScript$1"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "ActionScript es un lenguaje de programación el cual fue usado para desarrollar en Flash. Actualmente, ", 
 | 
				
			||||||
 | 
					        "JavaScript en entorno navegador, aparentemente heredó muchos conceptos de éste pues antes de que ", 
 | 
				
			||||||
 | 
					        "JavaScript en entorno navegador haga lo que hace hoy, lo hacía Action Script. La extensión de los archivos ", 
 | 
				
			||||||
 | 
					        "ActionScript es AS."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/index.html", 
 | 
				
			||||||
 | 
					        "https://help.adobe.com/en_US/as3/dev/index.html", 
 | 
				
			||||||
 | 
					        "https://web.archive.org/web/20130131044759/http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=Part2_AS2_LangRef_1.html", 
 | 
				
			||||||
 | 
					        "https://en.wikipedia.org/wiki/ActionScript"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\b(?<!\\.)swf\\b/gi", "SWF"], 
 | 
				
			||||||
 | 
					        ["/\\bmacromedia *flash *player\\b/gi", "Macromedia Flash Player"], 
 | 
				
			||||||
 | 
					        ["/\\bmacromedia *flash\\b/gi", "Macromedia Flash"], 
 | 
				
			||||||
 | 
					        ["/\\badobe *flash *player\\b/gi", "Adobe Flash Player"], 
 | 
				
			||||||
 | 
					        ["/\\badobe *flash\\b/gi", "Adobe Flash"], 
 | 
				
			||||||
 | 
					        ["/\\bflash *player\\b/gi", "Flash Player"], 
 | 
				
			||||||
 | 
					        ["/\\bruf+le\\b/gi", "Ruffle"], 
 | 
				
			||||||
 | 
					        ["/\\bflash\\b/gi", "Flash"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "Flash fue una tecnología para crear animaciones principalmente, aunque en su momento dio tal versatilidad ", 
 | 
				
			||||||
 | 
					        "que muchos lo usaron no sólo como recurso Web sino para crear páginas Web o juegos y/o aplicaciones Web. ", 
 | 
				
			||||||
 | 
					        "El lenguaje de programación sobre el que se sostenía era Action Script. Actualmente, Flash ya no existe de ", 
 | 
				
			||||||
 | 
					        "forma oficial y fue sustituído por Adobe Air entre otras tecnologías de la misma compañía. La extensión de ", 
 | 
				
			||||||
 | 
					        "los compilados de Flash era SWF. Existen emuladores para dichos archivos como lo es el Ruffle."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.adobe.com/es/products/flashplayer/end-of-life-alternative.html", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Adobe_Flash_Player", 
 | 
				
			||||||
 | 
					        "https://ruffle.rs/"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bscript(s)?\\b/gi", "Script$1"], [
 | 
				
			||||||
 | 
					        "Un Script no es más que un conjunto de órdenes para automatización de tareas o para designar acciones o ", 
 | 
				
			||||||
 | 
					        "conjuntos de acciones bajo una orden."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Script"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bx[ \\-]*gravity\\b/gi", "XGravity"], 
 | 
				
			||||||
 | 
					        ["/\\balienado\\b/gi", "Alienado"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "Alienado, antiguamente XGravity, es un juego basado en XQuest desarrollado plenamente por KyMAN tipo Asteroids ", 
 | 
				
			||||||
 | 
					        "de MSDOS pero orientado a navegador. La primera versión fue un SWF desarrollado en ActionScript 2.0, pero el ", 
 | 
				
			||||||
 | 
					        "resto de versiones ya fueron en JavaScript. La idea de cambiarle a Alienado fue en pensar en Aliens y la ", 
 | 
				
			||||||
 | 
					        "película Sharknado."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://xgravity.k3y.pw", 
 | 
				
			||||||
 | 
					        "https://git.k3y.pw/KyMAN/XGravity"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bx[ \\-]*qu?est\\b/gi", "XQuest"], [
 | 
				
			||||||
 | 
					        "XQuest es un juego para MSDOS del tipo Asteroids pero con unos gráficos más avanzados, con Scroll y Parallax."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "http://www.swallowtail.org/xquest/", 
 | 
				
			||||||
 | 
					        "http://www.abandonia.com/es/games/28643/XQuest.html"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bDOS\\b/g", "DOS"], 
 | 
				
			||||||
 | 
					        ["/\\b(microsoft|ms) *dos\\b/gi", "MSDOS"], 
 | 
				
			||||||
 | 
					        ["/\\bcomandos\\b/gi", "COMANDOS"], 
 | 
				
			||||||
 | 
					        ["/\\b((?<!\\.)cmd|c\\.m\\.d\\.|c\\. +m\\. +d\\. +)\\b/gi", "CMD"], 
 | 
				
			||||||
 | 
					        ["/\\bconsola *de *comandos *de *windows\\b/gi", "Consola de Comandos de Windows"], 
 | 
				
			||||||
 | 
					        ["/\\bs[ií]mbolo *de *sistema\\b/gi", "Símbolo de Sistema"], 
 | 
				
			||||||
 | 
					        ["/\\b(?<!\\.)batch\\b/gi", "Batch"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "DOS es el sistema Core base de Microsoft cuyo primer Sistema Operativo fue MSDOS, utilizado como base Core de ", 
 | 
				
			||||||
 | 
					        "Windows hasta Windows XP donde apareció COMANDOS, una evolución de MSDOS. Los archivos de Script nativos de DOS ", 
 | 
				
			||||||
 | 
					        "son los Batch. Actualmente se puede acceder a COMANDOS desde Símbolo de Sistema de Windows."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://github.com/microsoft/MS-DOS", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/DOS", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/MS-DOS", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/S%C3%ADmbolo_del_sistema_de_Windows", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Archivo_batch", 
 | 
				
			||||||
 | 
					        "https://web.archive.org/web/20160309064627/https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/windows_dos_overview.mspx?mfr=true"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bscrolls?\\b/gi", "Scroll"], [
 | 
				
			||||||
 | 
					        "Los Scroll son la capacidad gráfica de poder desplazar internamente un marco en una pantalla sobre un contenido ", 
 | 
				
			||||||
 | 
					        "que ocupa más que el mismo, y éste puede ser horizontal o vertical."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Scroll"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bp[áa]ral+ax\\b/gi", "Parallax"], 
 | 
				
			||||||
 | 
					        ["/\\bparalaje\\b/gi", "Paralaje"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "El Parallax, o Paralaje, es una sincronización de movimientos 2D para distintos elementos a diferentes velocidades, ", 
 | 
				
			||||||
 | 
					        "reconocíblemente usado en los fondos de los videojuegos 2D donde los las distintas profundidades se distinguen por ", 
 | 
				
			||||||
 | 
					        "ese movimiento distintivo."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Paralaje"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bcr[yi]pto *activo(s)?\\b/gi", "Cryptoactivo$1"], 
 | 
				
			||||||
 | 
					        ["/\\bcr[yi]pto *moneda(s)?\\b/gi", "Cryptomoneda$1"], 
 | 
				
			||||||
 | 
					        ["/\\bcr[yi]pto *coin(s)?\\b/gi", "Cryptocoin$1"], 
 | 
				
			||||||
 | 
					        ["/\\bcr[yi]pto *divisa(s)?\\b/gi", "Cryptodivisa$1"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "Un Cryptoactivo o Cryptodivisa o Cryptomoneda no es más que un recurso económico digital el cual puede ser no físico. ", 
 | 
				
			||||||
 | 
					        "El más conocido es el Bitcoin, pero hay muchos más y más tipos como los NFT y otro tipo de recursos."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Criptomoneda", 
 | 
				
			||||||
 | 
					        "https://www.cnmv.es/Cursos/Educacion-Financiera/Criptoactivos/index.html", 
 | 
				
			||||||
 | 
					        "https://www.imf.org/es/Publications/fandd/issues/2022/09/Regulating-crypto-Narain-Moretti"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bbitcoin\\b/gi", "Bitcoin"], 
 | 
				
			||||||
 | 
					        ["/\\b((?<!\\.)btc|b\\.t\\.c\\.|b\\. +t\\. +c\\. +)\\b/gi", "BTC"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "El Bitcoin es la Cryptomoneda más conocida y más usada, siendo de las primeras Cryptodivisas que se hicieron ", 
 | 
				
			||||||
 | 
					        "específicamente para su uso en Internet. Su símbolo es BTC. Su funcionamiento, garantías, etc. Se basa en una base de ", 
 | 
				
			||||||
 | 
					        "datos pública basada en Block Chain. Fue diseñada por un desconocido Satoshi Nakamoto, del cual se sacó el nombre a la ", 
 | 
				
			||||||
 | 
					        "unidad mínima que puede trabajar, el Satoshi, que viene siendo una diezmillonésima parte de un Bitcoin entero."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://bitcoin.org/es/", 
 | 
				
			||||||
 | 
					        "https://bitcoin.org/files/bitcoin-paper/bitcoin_es_latam.pdf", 
 | 
				
			||||||
 | 
					        "https://github.com/bitcoin/bitcoin", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Bitcoin", 
 | 
				
			||||||
 | 
					        "https://www.blockchain.com/explorer/assets/btc"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bsatoshi *nakamoto\\b/gi", "Satoshi Nakamoto"], [
 | 
				
			||||||
 | 
					        "Satoshi Nakamoto es el pseudónimo por el cual se conoce al creador del White Paper del Bitcoin, aunque actualmente no ", 
 | 
				
			||||||
 | 
					        "se sabe a ciencia cierta quién es."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Satoshi_Nakamoto", 
 | 
				
			||||||
 | 
					        "https://www.mail-archive.com/search?l=cryptography@metzdowd.com&q=from:%22Satoshi+Nakamoto%22"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\blitecoin\\b/gi", "Litecoin"], 
 | 
				
			||||||
 | 
					        ["/\\b((?<!\\.)ltc|b\\.l\\.c\\.|b\\. +l\\. +c\\. +)\\b/gi", "LTC"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "Litecoin es una Cryptodivisa inspirada plenamente en Bitcoin con una filosofía de seguridad y agilidad ", 
 | 
				
			||||||
 | 
					        "transaccional, así como menor peso y consumo por parte del Core tanto en RAM como por procesador. Su ", 
 | 
				
			||||||
 | 
					        "símbolo es el LTC."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://litecoin.org/", 
 | 
				
			||||||
 | 
					        "https://litecoin.com/en/", 
 | 
				
			||||||
 | 
					        "https://github.com/litecoin-project/litecoin", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Litecoin", 
 | 
				
			||||||
 | 
					        "https://x.com/litecoin", 
 | 
				
			||||||
 | 
					        "https://www.reddit.com/r/litecoin/"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bsrx06\\b/gi", "Grillo Team"], 
 | 
				
			||||||
 | 
					        ["/\\bgri(ll+|y)o[ \t]*t(e[ae]|i)[mn]\\b/gi", "Grillo Team"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "Grupo profesional de las TIC."
 | 
				
			||||||
 | 
					    ], []
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bkde(['`] *)?n(['`] *)?live\\b/gi", "Kdenlive"], [
 | 
				
			||||||
 | 
					        "Kdenlive es un editor de vídeos no lineales Free OpenSource con mantenimiento de desarrollo de la ", 
 | 
				
			||||||
 | 
					        "comunidad KDE."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://kdenlive.org/", 
 | 
				
			||||||
 | 
					        "https://github.com/KDE/kdenlive", 
 | 
				
			||||||
 | 
					        "https://apps.kde.org/es/kdenlive/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Kdenlive", 
 | 
				
			||||||
 | 
					        "https://bugs.kde.org/buglist.cgi?product=kdenlive"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bM[Aa][Nn][Gg][Aa]\\b/g", "Manga"], [
 | 
				
			||||||
 | 
					        "El Manga es el estilo de dibujo Japonés orientado al Cómic para la representación de historias principalmente."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Manga", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Historieta", 
 | 
				
			||||||
 | 
					        "https://commons.wikimedia.org/wiki/Category:Manga", 
 | 
				
			||||||
 | 
					        "https://es.wikibooks.org/wiki/Manga", 
 | 
				
			||||||
 | 
					        "https://es.wikinews.org/wiki/Categor%C3%ADa:Manga"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\banime\\b/gi", "Anime"], [
 | 
				
			||||||
 | 
					        "El Anime es el estilo de animación japonesa."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Anime", 
 | 
				
			||||||
 | 
					        "https://commons.wikimedia.org/wiki/Category:Anime", 
 | 
				
			||||||
 | 
					        "https://es.wikinews.org/wiki/Categor%C3%ADa:Anime"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\b((?<!\\.)a\\.[n\\&]\\.p\\.r\\.m\\.|a\\. +[n\\&]\\. +p\\. +r\\. +m\\. +|a[n\\&]prm\\b)/gi", "AnPRM"], 
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        "El proyecto AnPRM viene siendo un proyecto desarrollado por Srx00 para desarrollar bases de proyectos ", 
 | 
				
			||||||
 | 
					        "plenamente funcionales sobre el propio proyecto AnP, principalmente desarrollado en HTML, SASS y JavaScript ", 
 | 
				
			||||||
 | 
					        "sobre el cliente; y MariaDB y Python sobre el servidor. El proyecto actualmente está privado pero se espera ", 
 | 
				
			||||||
 | 
					        "ser publicado como servicio de uso general."
 | 
				
			||||||
 | 
					    ], []
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bhard *ware\\b/gi", "Hardware"], 
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        "En informática, sería la parte tangible, es decir, aquellos componentes físicos que componen un equipo ", 
 | 
				
			||||||
 | 
					        "informático."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Hardware", 
 | 
				
			||||||
 | 
					        "https://dle.rae.es/hardware", 
 | 
				
			||||||
 | 
					        "https://concepto.de/hardware/", 
 | 
				
			||||||
 | 
					        "https://apen.es/glosario-de-informatica/hardware/"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bent01\\b/gi", "ENT01"], [
 | 
				
			||||||
 | 
					        "Empresa gallega de desarrollo de Aplicaciones Web."
 | 
				
			||||||
 | 
					    ], []
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bw( +|\\-)?log(s)?\\b/gi", "WLog$2"], [
 | 
				
			||||||
 | 
					        "Un WLog viene siendo un término personalizado para hacer referencia a un Blog hecho sobre una base de ", 
 | 
				
			||||||
 | 
					        "WMarkDown."
 | 
				
			||||||
 | 
					    ], []
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\btag(s)?\\b/gi", "Tag$1"], [
 | 
				
			||||||
 | 
					        "Los Tags, tambié conocidas como etiquetas en Español, son palabras clave orientadas a facilitar las ", 
 | 
				
			||||||
 | 
					        "búsquedas en conjuntos de datos masivos relacionados."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Etiqueta_(metadato)", 
 | 
				
			||||||
 | 
					        "https://www.luisrevuelto.es/blog/tecnicas-seo-como-usar-tags-correctamente/", 
 | 
				
			||||||
 | 
					        "https://www.hostinger.es/tutoriales/que-son-las-tags", 
 | 
				
			||||||
 | 
					        "https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/tags/", 
 | 
				
			||||||
 | 
					        "https://www.webempresa.com/blog/que-son-los-tags-y-para-que-sirven.html"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bguin(x|ch)u\\b/gi", "Guinxu"], [
 | 
				
			||||||
 | 
					        "Guinxu es un desarrollador de videojuegos Indie español, conocido tanto por sus redes sociales como por ", 
 | 
				
			||||||
 | 
					        "su juego Flatworld principalmente."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://guinxu.com/", 
 | 
				
			||||||
 | 
					        "https://www.youtube.com/@Guinxu", 
 | 
				
			||||||
 | 
					        "https://www.facebook.com/Guinxu/", 
 | 
				
			||||||
 | 
					        "https://www.tiktok.com/@guinxudev", 
 | 
				
			||||||
 | 
					        "https://www.twitch.tv/guinxu", 
 | 
				
			||||||
 | 
					        "https://www.youtube.com/@MomentoGuinxu", 
 | 
				
			||||||
 | 
					        "https://www.youtube.com/@hackeandoconguinxu718", 
 | 
				
			||||||
 | 
					        "https://x.com/guinxu", 
 | 
				
			||||||
 | 
					        "https://www.instagram.com/Guinxu/", 
 | 
				
			||||||
 | 
					        "https://store.steampowered.com/developer/Guinxu", 
 | 
				
			||||||
 | 
					        "https://eu.wikipedia.org/wiki/Guinxu", 
 | 
				
			||||||
 | 
					        "https://youtube.fandom.com/es/wiki/Guinxu"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bh?al[bv]a *ma([jhyl]|ll)o\\b/gi", "Alva Majo"], [
 | 
				
			||||||
 | 
					        "Alva Majo es un desarrollador de videojuegos Indie español conocido principalmente por sus redes sociales ", 
 | 
				
			||||||
 | 
					        "y sus juegos Purella, Pineapple On Pizza y Majotori entre otros."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.alvamajo.com/", 
 | 
				
			||||||
 | 
					        "https://youtube.fandom.com/es/wiki/Alva_Majo", 
 | 
				
			||||||
 | 
					        "https://x.com/5ro4", 
 | 
				
			||||||
 | 
					        "https://www.twitch.tv/5ro4", 
 | 
				
			||||||
 | 
					        "https://www.youtube.com/@alvamajoclips", 
 | 
				
			||||||
 | 
					        "https://www.youtube.com/@majorariatto", 
 | 
				
			||||||
 | 
					        "https://youtube.fandom.com/es/wiki/Alva_Majo"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\b((?<!\\.)cs|c\\.s\\.|c\\. +s\\. +)\\b/i", "CS"], 
 | 
				
			||||||
 | 
					        ["/\\bc\\#/i", "C#"], 
 | 
				
			||||||
 | 
					        ["/\\bc *sharp\\b/i", "C Sharp"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "C Sharp, más conocido como C#, es un lenguaje de programación desarrollado por Microsoft contra .NET, ", 
 | 
				
			||||||
 | 
					        "que convivió durante mucho tiempo con Visual Basic para poder coger usuarios de desarrollo Java, de ahí ", 
 | 
				
			||||||
 | 
					        "la sintaxis que se asemeja enormente a dicho lenguaje, y migrarlos al entorno de .NET."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://learn.microsoft.com/es-es/dotnet/csharp/", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/C_Sharp", 
 | 
				
			||||||
 | 
					        "https://www.w3schools.com/cs/index.php"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\b(?!\\.)go\\b/i", "Go"], 
 | 
				
			||||||
 | 
					        ["/\\bgo *lang?\\b/i", "Golang"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "Golang, más conocido como Go, es un lenguaje de programación estructurada desarrollado por Google. Su ", 
 | 
				
			||||||
 | 
					        "filosofía es la eficiencia y seguridad de los datos a partir del recolector de basura. Para la programación ", 
 | 
				
			||||||
 | 
					        "de procesos paralelos se hace uso de las Gorutinas, que vienen siendo como promesas pero gestionadas por el ", 
 | 
				
			||||||
 | 
					        "propio Runtime de Go. Esto hace que para casos como el de WASM se requiera de integrar dentro del compilado ", 
 | 
				
			||||||
 | 
					        "el Runtime de Go, lo que hace aumentar el peso del mismo significativamente."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://go.dev/", 
 | 
				
			||||||
 | 
					        "https://github.com/golang/go", 
 | 
				
			||||||
 | 
					        "https://go.googlesource.com/go", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Go_(lenguaje_de_programaci%C3%B3n)"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\b(rust([ \\-]*lang?)?|(?!\\.)rs)\\b/i", "Rust"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "Rust es un lenguaje de programación estructurada que compite con C. Su filosofía es la seguridad de los datos ", 
 | 
				
			||||||
 | 
					        "y el rendimiento. Su uso se está extendiendo enormente pese a tener una curva de dificultad muy elevada y ", 
 | 
				
			||||||
 | 
					        "requerir de mezclar enormes cantidades de protocolos o metodologías internas para hacerlo funcionar de forma eficaz."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.rust-lang.org/", 
 | 
				
			||||||
 | 
					        "https://doc.rust-lang.org/stable/", 
 | 
				
			||||||
 | 
					        "https://github.com/rust-lang/rust", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Rust_(lenguaje_de_programaci%C3%B3n)", 
 | 
				
			||||||
 | 
					        "https://rustlang-es.org/", 
 | 
				
			||||||
 | 
					        "https://x.com/rustlang"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\b((?<!\\.)php|p\\.h\\.p\\.|p\\. +h\\. +p\\. +)\\b/i", "PHP"], 
 | 
				
			||||||
 | 
					        ["/\\bpersonal *home *page\\b/i", "Personal Home Page"], 
 | 
				
			||||||
 | 
					        ["/\\bh?[yi]pertext *(pre)?proces+or\\b/i", "Hypertext Preprocessor"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "PHP, también conocido como Hypertext Preprocessor, es un lenguaje interpretado usado habitualmente para ", 
 | 
				
			||||||
 | 
					        "el desarrollo de servicios Web. Está muy extendido su uso en entornos de CMS como Wordpress, MediaWiki, etc."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.php.net/", 
 | 
				
			||||||
 | 
					        "https://github.com/php/php-src", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/PHP", 
 | 
				
			||||||
 | 
					        "https://developer.mozilla.org/es/docs/Glossary/PHP"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bdoge[ \\-]*coin\\b/i", "Dogecoin"], 
 | 
				
			||||||
 | 
					        ["/\\bdoge\\b/i", "DOGE"], 
 | 
				
			||||||
 | 
					        ["/\\bÐ\\b/", "Ð"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "El Dogecoin, o DOGE, es una Cryptomoneda del tipo Bitcoin Memecoin, Fork de Litecoin, actualmente conocida ", 
 | 
				
			||||||
 | 
					        "por la exposición mediática de Elon Musk."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://dogecoin.com/", 
 | 
				
			||||||
 | 
					        "https://github.com/dogecoin/dogecoin", 
 | 
				
			||||||
 | 
					        "https://x.com/dogecoin", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Dogecoin"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bdash([ \\-]*coin)?\\b/i", "Dash"], 
 | 
				
			||||||
 | 
					        ["/\\bx[ \\-]*coin\\b/i", "XCoin"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "Dash es un Cryptoactivo que parte de la misma idea de Bitcoin pero implementando nuevos servicios ", 
 | 
				
			||||||
 | 
					        "transaccionales como InstantSend para agilizar las transacciones, así como PrivateSend para mejorar la ", 
 | 
				
			||||||
 | 
					        "privacidad de la misma."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.dash.org/", 
 | 
				
			||||||
 | 
					        "https://github.com/dashpay/dash", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/Dash_(criptomoneda)"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bfair[ \\-]*coin\\b/i", "Faircoin"], 
 | 
				
			||||||
 | 
					        ["/\\bfair\\b/i", "FAIR"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "Faircoin, o FAIR, es un proyecto de FairCoop para realizar la parte colaborativa económica de su proyecto, ", 
 | 
				
			||||||
 | 
					        "haciendo de éste su sistema monetario, base del mismo proyecto FairCoop."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://fair-coin.org/", 
 | 
				
			||||||
 | 
					        "https://x.com/faircoinconf", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/FairCoop"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					        ["/\\bmath[ \\-\\.]*jax\\b/i", "MathJax"], 
 | 
				
			||||||
 | 
					        ["/\\blatex\\b/i", "LaTeX"], 
 | 
				
			||||||
 | 
					        ["/\\bmath[ \\-\\.]*ml\\b/i", "MathML"], 
 | 
				
			||||||
 | 
					        ["/\\bascii[ \\.\\-]*math[ \\-\\.]*ml\\b/i", "ASCIIMathML"]
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "MathJax es una librería JavaScript para implementar funciones matemáticas codificadas en LaTeX, MathML y ", 
 | 
				
			||||||
 | 
					        "ASCIIMathML para entornos Web principalmente, aunque su uso puede extenderse fuera de dicho ámbito.. Fue ", 
 | 
				
			||||||
 | 
					        "desarrollado por la Sociedad Estadounidense de Matemática."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://www.mathjax.org/", 
 | 
				
			||||||
 | 
					        "https://github.com/mathjax/MathJax", 
 | 
				
			||||||
 | 
					        "https://x.com/mathjax", 
 | 
				
			||||||
 | 
					        "https://www.latex-project.org/", 
 | 
				
			||||||
 | 
					        "https://github.com/latex3/latex2e", 
 | 
				
			||||||
 | 
					        "https://es.wikibooks.org/wiki/Manual_de_LaTeX", 
 | 
				
			||||||
 | 
					        "https://asciimath.org/", 
 | 
				
			||||||
 | 
					        "https://github.com/asciimath/asciimathml", 
 | 
				
			||||||
 | 
					        "https://www.w3.org/Math/", 
 | 
				
			||||||
 | 
					        "https://www.data2type.de/en/xml-xslt-xslfo/math-ml/", 
 | 
				
			||||||
 | 
					        "https://xrjunque.nom.es/(S(wc3b1mabt1xd54jsgfv2gbqm))/MathML_To_String", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/MathJax", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/AsciiMath", 
 | 
				
			||||||
 | 
					        "https://es.wikipedia.org/wiki/LaTeX"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					], [
 | 
				
			||||||
 | 
					    ["/\\bmermaid([ \\-\\.]*js)?\\b/i", "MermaidJS"], [
 | 
				
			||||||
 | 
					        "MermaidJS es una librería JavaScript para implementar esquemas, estructuras, gráficos, etc. Desde un sencillo ", 
 | 
				
			||||||
 | 
					        "entorno de texto encapsulado, procesado de forma dinámica en JavaScript para HTML."
 | 
				
			||||||
 | 
					    ], [
 | 
				
			||||||
 | 
					        "https://mermaid.js.org/", 
 | 
				
			||||||
 | 
					        "https://github.com/mermaid-js/mermaid", 
 | 
				
			||||||
 | 
					        "https://mermaid.live/"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					]]
 | 
				
			||||||
@ -25,8 +25,8 @@
 | 
				
			|||||||
      margin: 0em;
 | 
					      margin: 0em;
 | 
				
			||||||
      padding: .1em .4em;
 | 
					      padding: .1em .4em;
 | 
				
			||||||
      height: 1.2em;
 | 
					      height: 1.2em;
 | 
				
			||||||
      border: .1em solid #BBB;
 | 
					      border: 0.1em solid #BBB;
 | 
				
			||||||
      box-shadow: 0em 0em .8em inset #BBB; }
 | 
					      box-shadow: 0em 0em 0.8em inset #BBB; }
 | 
				
			||||||
      .wmd-code-block .data li::before {
 | 
					      .wmd-code-block .data li::before {
 | 
				
			||||||
        font-family: monospace; }
 | 
					        font-family: monospace; }
 | 
				
			||||||
      .wmd-code-block .data li > [data-i18n] {
 | 
					      .wmd-code-block .data li > [data-i18n] {
 | 
				
			||||||
@ -68,6 +68,31 @@
 | 
				
			|||||||
  .wmd-code-block[data-type=mermaid] svg {
 | 
					  .wmd-code-block[data-type=mermaid] svg {
 | 
				
			||||||
    font-size: 1em; }
 | 
					    font-size: 1em; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.wmd-code-sample-block[data-processed=false] {
 | 
				
			||||||
 | 
					  display: none; }
 | 
				
			||||||
 | 
					.wmd-code-sample-block > nav > ul {
 | 
				
			||||||
 | 
					  margin: 0em;
 | 
				
			||||||
 | 
					  padding: 0em;
 | 
				
			||||||
 | 
					  list-style-type: none;
 | 
				
			||||||
 | 
					  text-align: left; }
 | 
				
			||||||
 | 
					  .wmd-code-sample-block > nav > ul > li {
 | 
				
			||||||
 | 
					    display: inline-block;
 | 
				
			||||||
 | 
					    padding: .2em .5em;
 | 
				
			||||||
 | 
					    border: 0.1em solid #BBB;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					    box-shadow: 0em 0em 0.8em inset #BBB;
 | 
				
			||||||
 | 
					    transition-duration: 1s;
 | 
				
			||||||
 | 
					    transition-property: box-shadow; }
 | 
				
			||||||
 | 
					    .wmd-code-sample-block > nav > ul > li[data-selected=true] {
 | 
				
			||||||
 | 
					      box-shadow: 0em 0em 0.2em inset #BBB; }
 | 
				
			||||||
 | 
					    .wmd-code-sample-block > nav > ul > li:hover {
 | 
				
			||||||
 | 
					      box-shadow: 0em 0em 1.2em inset #BBB;
 | 
				
			||||||
 | 
					      transition-duration: 0.25s; }
 | 
				
			||||||
 | 
					  .wmd-code-sample-block > nav > ul > :first-child {
 | 
				
			||||||
 | 
					    border-radius: .3em 0em 0em .3em; }
 | 
				
			||||||
 | 
					  .wmd-code-sample-block > nav > ul > :last-child {
 | 
				
			||||||
 | 
					    border-radius: 0em .3em .3em 0em; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.wmd-quote {
 | 
					.wmd-quote {
 | 
				
			||||||
  display: flex;
 | 
					  display: flex;
 | 
				
			||||||
  margin: 1em 2em;
 | 
					  margin: 1em 2em;
 | 
				
			||||||
@ -250,9 +275,7 @@
 | 
				
			|||||||
  box-sizing: border-box; }
 | 
					  box-sizing: border-box; }
 | 
				
			||||||
  .wmd-media:not([data-type=icon]) img {
 | 
					  .wmd-media:not([data-type=icon]) img {
 | 
				
			||||||
    width: 100%;
 | 
					    width: 100%;
 | 
				
			||||||
    height: auto;
 | 
					    height: auto; }
 | 
				
			||||||
    max-width: 30em;
 | 
					 | 
				
			||||||
    max-height: 30em; }
 | 
					 | 
				
			||||||
    .wmd-media:not([data-type=icon]) img + span {
 | 
					    .wmd-media:not([data-type=icon]) img + span {
 | 
				
			||||||
      background-position: center center;
 | 
					      background-position: center center;
 | 
				
			||||||
      background-size: cover; }
 | 
					      background-size: cover; }
 | 
				
			||||||
 | 
				
			|||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@ -1,4 +1,5 @@
 | 
				
			|||||||
// Settings
 | 
					// Settings
 | 
				
			||||||
 | 
					$color-fore : #BBB;
 | 
				
			||||||
$transition-in : .25s;
 | 
					$transition-in : .25s;
 | 
				
			||||||
$transition-out : 1s;
 | 
					$transition-out : 1s;
 | 
				
			||||||
// Settings
 | 
					// Settings
 | 
				
			||||||
@ -29,8 +30,8 @@ $transition-out : 1s;
 | 
				
			|||||||
            margin : 0em;
 | 
					            margin : 0em;
 | 
				
			||||||
            padding : .1em .4em;
 | 
					            padding : .1em .4em;
 | 
				
			||||||
            height : 1.2em;
 | 
					            height : 1.2em;
 | 
				
			||||||
            border : .1em solid #BBB;
 | 
					            border : .1em solid $color-fore;
 | 
				
			||||||
            box-shadow : 0em 0em .8em inset #BBB;
 | 
					            box-shadow : 0em 0em .8em inset $color-fore;
 | 
				
			||||||
            &::before{font-family : monospace;}
 | 
					            &::before{font-family : monospace;}
 | 
				
			||||||
            &>[data-i18n]{display : none;}
 | 
					            &>[data-i18n]{display : none;}
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -69,6 +70,31 @@ $transition-out : 1s;
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    &[data-type=mermaid] svg{font-size : 1em;}
 | 
					    &[data-type=mermaid] svg{font-size : 1em;}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					.wmd-code-sample-block{
 | 
				
			||||||
 | 
					    &[data-processed=false]{display : none;}
 | 
				
			||||||
 | 
					    &>nav>ul{
 | 
				
			||||||
 | 
					        margin : 0em;
 | 
				
			||||||
 | 
					        padding : 0em;
 | 
				
			||||||
 | 
					        list-style-type : none;
 | 
				
			||||||
 | 
					        text-align : left;
 | 
				
			||||||
 | 
					        &>li{
 | 
				
			||||||
 | 
					            display : inline-block;
 | 
				
			||||||
 | 
					            padding : .2em .5em;
 | 
				
			||||||
 | 
					            border : .1em solid $color-fore;
 | 
				
			||||||
 | 
					            cursor : pointer;
 | 
				
			||||||
 | 
					            box-shadow : 0em 0em .8em inset $color-fore;
 | 
				
			||||||
 | 
					            transition-duration : $transition-out;
 | 
				
			||||||
 | 
					            transition-property : box-shadow;
 | 
				
			||||||
 | 
					            &[data-selected=true]{box-shadow : 0em 0em .2em inset $color-fore;}
 | 
				
			||||||
 | 
					            &:hover{
 | 
				
			||||||
 | 
					                box-shadow : 0em 0em 1.2em inset $color-fore;
 | 
				
			||||||
 | 
					                transition-duration : $transition-in;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        &>:first-child{border-radius : .3em 0em 0em .3em;}
 | 
				
			||||||
 | 
					        &>:last-child{border-radius : 0em .3em .3em 0em;}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
.wmd-quote{
 | 
					.wmd-quote{
 | 
				
			||||||
    display : flex;
 | 
					    display : flex;
 | 
				
			||||||
    margin : 1em 2em;
 | 
					    margin : 1em 2em;
 | 
				
			||||||
@ -277,8 +303,8 @@ $transition-out : 1s;
 | 
				
			|||||||
        img{
 | 
					        img{
 | 
				
			||||||
            width : 100%;
 | 
					            width : 100%;
 | 
				
			||||||
            height : auto;
 | 
					            height : auto;
 | 
				
			||||||
            max-width : 30em;
 | 
					            // max-width : 30em;
 | 
				
			||||||
            max-height : 30em;
 | 
					            // max-height : 30em;
 | 
				
			||||||
            &+span{
 | 
					            &+span{
 | 
				
			||||||
                // display : none;
 | 
					                // display : none;
 | 
				
			||||||
                background-position : center center;
 | 
					                background-position : center center;
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,7 @@ from re import Pattern as REPattern
 | 
				
			|||||||
from re import Match as REMatch
 | 
					from re import Match as REMatch
 | 
				
			||||||
from re import MULTILINE as RE_MULTILINE
 | 
					from re import MULTILINE as RE_MULTILINE
 | 
				
			||||||
from re import IGNORECASE as RE_IGNORE_CASE
 | 
					from re import IGNORECASE as RE_IGNORE_CASE
 | 
				
			||||||
from typing import Callable, Optional
 | 
					from typing import Callable, Optional, Self
 | 
				
			||||||
from os.path import exists as path_exists
 | 
					from os.path import exists as path_exists
 | 
				
			||||||
from os.path import dirname as directory_name
 | 
					from os.path import dirname as directory_name
 | 
				
			||||||
from base64 import b64encode as base64_encode
 | 
					from base64 import b64encode as base64_encode
 | 
				
			||||||
@ -52,7 +52,7 @@ class WMarkDown:
 | 
				
			|||||||
    re_characters_no_id:REPattern = RECompile(r'[^a-z0-9]+', RE_IGNORE_CASE)
 | 
					    re_characters_no_id:REPattern = RECompile(r'[^a-z0-9]+', RE_IGNORE_CASE)
 | 
				
			||||||
    re_phone_number:REPattern = RECompile(r'^\+?[0-9 ]{5,22}$')
 | 
					    re_phone_number:REPattern = RECompile(r'^\+?[0-9 ]{5,22}$')
 | 
				
			||||||
    re_email_address:REPattern = RECompile(r'^[a-z\.0-9_\-]+@[a-z\.0-9_\-]+\.[a-z0-9]+$')
 | 
					    re_email_address:REPattern = RECompile(r'^[a-z\.0-9_\-]+@[a-z\.0-9_\-]+\.[a-z0-9]+$')
 | 
				
			||||||
    re_class_attribute:REPattern = RECompile(r'(?<![a-z0-9_\-])(class=")([^"]+)(")')
 | 
					    re_class_attribute:REPattern = RECompile(r'(?<![a-z0-9_\-])(class=")([^"]+)(")', RE_IGNORE_CASE)
 | 
				
			||||||
    re_white_spaces:REPattern = RECompile(r'[ \t]+')
 | 
					    re_white_spaces:REPattern = RECompile(r'[ \t]+')
 | 
				
			||||||
    re_line_marks:REPattern = RECompile(r'[\*#~\-_]+|\[[ \-x]\]|\([ \-x]\)', RE_IGNORE_CASE)
 | 
					    re_line_marks:REPattern = RECompile(r'[\*#~\-_]+|\[[ \-x]\]|\([ \-x]\)', RE_IGNORE_CASE)
 | 
				
			||||||
    re_integer:REPattern = RECompile(r'^[0-9]+$')
 | 
					    re_integer:REPattern = RECompile(r'^[0-9]+$')
 | 
				
			||||||
@ -63,7 +63,7 @@ class WMarkDown:
 | 
				
			|||||||
    re_domain:REPattern = RECompile(r'^[^\:]+\:\/{2}[^\/]+')
 | 
					    re_domain:REPattern = RECompile(r'^[^\:]+\:\/{2}[^\/]+')
 | 
				
			||||||
    re_protocol:REPattern = RECompile(r'^([a-z0-9_\-]+)\:', RE_IGNORE_CASE)
 | 
					    re_protocol:REPattern = RECompile(r'^([a-z0-9_\-]+)\:', RE_IGNORE_CASE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__(self) -> None:
 | 
					    def __init__(self:Self) -> None:
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        self.modules:dict[str, tuple[int, REPattern]] = {
 | 
					        self.modules:dict[str, tuple[int, REPattern]] = {
 | 
				
			||||||
            "special_characters" : (WMarkDown.SUBITEM, RECompile(r'\\([\(\{\[\*\\])')), 
 | 
					            "special_characters" : (WMarkDown.SUBITEM, RECompile(r'\\([\(\{\[\*\\])')), 
 | 
				
			||||||
@ -76,12 +76,9 @@ class WMarkDown:
 | 
				
			|||||||
            "media" : (WMarkDown.SUBITEM | WMarkDown.LINKED, RECompile(r'\({2}\!(image|icon|video|audio|sound|picture)[ \t]+("(([^"]+|[\r\n]+))"|\'(([^\']+|[\r\n]+))\'|([^ \t\)]+))([ \t]*|[ \t]+("(([^\\\\"]+|\\\\.|[\r\n]+)*)"|\'(([^\\\\\']+|\\\\.|[\r\n]+)*)\'|([^\)]+)))\){2}', RE_IGNORE_CASE)), 
 | 
					            "media" : (WMarkDown.SUBITEM | WMarkDown.LINKED, RECompile(r'\({2}\!(image|icon|video|audio|sound|picture)[ \t]+("(([^"]+|[\r\n]+))"|\'(([^\']+|[\r\n]+))\'|([^ \t\)]+))([ \t]*|[ \t]+("(([^\\\\"]+|\\\\.|[\r\n]+)*)"|\'(([^\\\\\']+|\\\\.|[\r\n]+)*)\'|([^\)]+)))\){2}', RE_IGNORE_CASE)), 
 | 
				
			||||||
            "code_doc" : (WMarkDown.RAW, RECompile(r'^\[{2}@(([^\]]+|\][^\]])+)\]{2}', RE_MULTILINE)), 
 | 
					            "code_doc" : (WMarkDown.RAW, RECompile(r'^\[{2}@(([^\]]+|\][^\]])+)\]{2}', RE_MULTILINE)), 
 | 
				
			||||||
            "presentation_links" : (WMarkDown.RAW, RECompile(r'^\[{2}"{3}(([^"]+|[\r\n]+|"{1,2}[^"])*)"{3}\]{2}', RE_MULTILINE)), 
 | 
					            "presentation_links" : (WMarkDown.RAW, RECompile(r'^\[{2}"{3}(([^"]+|[\r\n]+|"{1,2}[^"])*)"{3}\]{2}', RE_MULTILINE)), 
 | 
				
			||||||
 | 
					            "code_sample_block" : (WMarkDown.RAW, RECompile(r'<code\-sample\-block([^>]*)>(((?!<\/code\-sample\-block>)(.|[\r\n]+))+)<\/code\-sample\-block>', RE_IGNORE_CASE)), 
 | 
				
			||||||
            "paragraph" : (WMarkDown.RAW, RECompile(r'^(([^\r\n]+(\n|\r\n|\r)?)+)', RE_MULTILINE)), 
 | 
					            "paragraph" : (WMarkDown.RAW, RECompile(r'^(([^\r\n]+(\n|\r\n|\r)?)+)', RE_MULTILINE)), 
 | 
				
			||||||
            # "bold_italic" : (WMarkDown.SUBITEM | WMarkDown.LINKED, RECompile(r'\*{3}(([^\*]+|\*{1,2}[^\*]|[\r\n]+|\\\*)*)\*{3}')), 
 | 
					 | 
				
			||||||
            # "bold_italic" : (WMarkDown.SUBITEM | WMarkDown.LINKED, RECompile(r'(?<!\\)\*{3}((?:\\\*|\*{1,2}[^\*]|[^*\r\n]|[\r\n])*)\*{3}')), 
 | 
					 | 
				
			||||||
            # "bold" : (WMarkDown.SUBITEM | WMarkDown.LINKED, RECompile(r'\*{2}(([^\*]+|\*[^\*]|[\r\n]+|\\\*)*)\*{2}')), 
 | 
					 | 
				
			||||||
            "bold" : (WMarkDown.SUBITEM | WMarkDown.LINKED, RECompile(r'(?<!\\)\*{2}((?:\\\*|\*[^\*]|[^*\r\n]|[\r\n]|(?!\*{2}[^\*])\*)*)\*{2}')), 
 | 
					            "bold" : (WMarkDown.SUBITEM | WMarkDown.LINKED, RECompile(r'(?<!\\)\*{2}((?:\\\*|\*[^\*]|[^*\r\n]|[\r\n]|(?!\*{2}[^\*])\*)*)\*{2}')), 
 | 
				
			||||||
            # "italic" : (WMarkDown.SUBITEM | WMarkDown.LINKED, RECompile(r'(?<!\\)\*(([^\*]+|[\r\n]+|\\\*)*)\*')), 
 | 
					 | 
				
			||||||
            "italic" : (WMarkDown.SUBITEM | WMarkDown.LINKED, RECompile(r'(?<!\\)\*((?:\\\*|[^*\r\n]|[\r\n]|\*{2})*)\*')), 
 | 
					            "italic" : (WMarkDown.SUBITEM | WMarkDown.LINKED, RECompile(r'(?<!\\)\*((?:\\\*|[^*\r\n]|[\r\n]|\*{2})*)\*')), 
 | 
				
			||||||
            "underline" : (WMarkDown.SUBITEM | WMarkDown.LINKED, RECompile(r'__(((?!__).)+)__')), 
 | 
					            "underline" : (WMarkDown.SUBITEM | WMarkDown.LINKED, RECompile(r'__(((?!__).)+)__')), 
 | 
				
			||||||
            "strike" : (WMarkDown.SUBITEM | WMarkDown.LINKED, RECompile(r'~~(((?!~~).)+)~~')), 
 | 
					            "strike" : (WMarkDown.SUBITEM | WMarkDown.LINKED, RECompile(r'~~(((?!~~).)+)~~')), 
 | 
				
			||||||
@ -95,7 +92,7 @@ class WMarkDown:
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        self.__ids_cache:tuple[str] = tuple()
 | 
					        self.__ids_cache:tuple[str] = tuple()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __id(self, string:str) -> str:
 | 
					    def __id(self:Self, string:str) -> str:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        id:str = WMarkDown.re_characters_no_id.sub(r'-', string).lower()
 | 
					        id:str = WMarkDown.re_characters_no_id.sub(r'-', string).lower()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -120,7 +117,7 @@ class WMarkDown:
 | 
				
			|||||||
    def reset_ids(self):
 | 
					    def reset_ids(self):
 | 
				
			||||||
        self.__ids_cache = tuple()
 | 
					        self.__ids_cache = tuple()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def module_title(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_title(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            level:str = str(len(matches.group(2) or matches.group(4)))
 | 
					            level:str = str(len(matches.group(2) or matches.group(4)))
 | 
				
			||||||
@ -135,37 +132,37 @@ class WMarkDown:
 | 
				
			|||||||
            '</h' + level + '>')
 | 
					            '</h' + level + '>')
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def module_paragraph(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_paragraph(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
            return '<p>' + self.analyse(matches.group(0).strip(), language, WMarkDown.SUBITEM, path) + '</p>'
 | 
					            return '<p>' + self.analyse(matches.group(0).strip(), language, WMarkDown.SUBITEM, path) + '</p>'
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def module_bold_italic(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_bold_italic(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
            return '<b><i>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</i></b>'
 | 
					            return '<b><i>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</i></b>'
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def module_bold(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_bold(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
            return '<b>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</b>'
 | 
					            return '<b>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</b>'
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def module_italic(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_italic(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
            return '<i>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</i>'
 | 
					            return '<i>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</i>'
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def module_strike(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_strike(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
            return '<del>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</del>'
 | 
					            return '<del>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</del>'
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def module_underline(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_underline(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
            return '<u>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</u>'
 | 
					            return '<u>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</u>'
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def module_code_item(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_code_item(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
            return '<code>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</code>'
 | 
					            return '<code>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</code>'
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
@ -184,21 +181,21 @@ class WMarkDown:
 | 
				
			|||||||
        '</label>')
 | 
					        '</label>')
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def module_checkbox(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_checkbox(cls:type[Self], matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & cls.HTML:
 | 
				
			||||||
            return WMarkDown.__check_html_module("checkbox", matches)
 | 
					            return cls.__check_html_module("checkbox", matches)
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def module_radio(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_radio(cls:type[Self], matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & cls.HTML:
 | 
				
			||||||
            return WMarkDown.__check_html_module("radio", matches)
 | 
					            return cls.__check_html_module("radio", matches)
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def module_tick(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_tick(cls:type[Self], matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & cls.HTML:
 | 
				
			||||||
            return WMarkDown.__check_html_module("tick", matches)
 | 
					            return cls.__check_html_module("tick", matches)
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @staticmethod
 | 
					    @staticmethod
 | 
				
			||||||
@ -214,14 +211,14 @@ class WMarkDown:
 | 
				
			|||||||
        return ' data-deployed="' + deployed + '"' + (' data-list-unprocessed="true"' if deployable else '')
 | 
					        return ' data-deployed="' + deployed + '"' + (' data-list-unprocessed="true"' if deployable else '')
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def __list_start(self, unordered:bool, _type:str) -> str:
 | 
					    def __list_start(cls:type[Self], unordered:bool, _type:str) -> str:
 | 
				
			||||||
        if not unordered:
 | 
					        if not unordered:
 | 
				
			||||||
            _type = _type[:-1]
 | 
					            _type = _type[:-1]
 | 
				
			||||||
            if WMarkDown.re_integer.search(_type):
 | 
					            if cls.re_integer.search(_type):
 | 
				
			||||||
                return ' start="' + _type + '"'
 | 
					                return ' start="' + _type + '"'
 | 
				
			||||||
        return ''
 | 
					        return ''
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def module_list(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_list(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            html:str = ''
 | 
					            html:str = ''
 | 
				
			||||||
@ -280,7 +277,7 @@ class WMarkDown:
 | 
				
			|||||||
        return None
 | 
					        return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def set_class(self, html:str, _class:str|list|tuple) -> str:
 | 
					    def set_class(cls:type[Self], html:str, _class:str|list|tuple) -> str:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if not isinstance(_class, (list, tuple)):
 | 
					        if not isinstance(_class, (list, tuple)):
 | 
				
			||||||
            _class = (_class,)
 | 
					            _class = (_class,)
 | 
				
			||||||
@ -297,15 +294,15 @@ class WMarkDown:
 | 
				
			|||||||
            class_key:str
 | 
					            class_key:str
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            attribute, classes_str, closer = matches.groups()
 | 
					            attribute, classes_str, closer = matches.groups()
 | 
				
			||||||
            classes = WMarkDown.re_white_spaces.split(classes_str)
 | 
					            classes = cls.re_white_spaces.split(classes_str)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return attribute + classes_str + (' ' if classes_str else '') + " ".join([
 | 
					            return attribute + classes_str + (' ' if classes_str else '') + " ".join([
 | 
				
			||||||
                class_key for class_key in _class if class_key not in classes
 | 
					                class_key for class_key in _class if class_key not in classes
 | 
				
			||||||
            ]) + closer
 | 
					            ]) + closer
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        return WMarkDown.re_class_attribute.sub(callback, html)
 | 
					        return cls.re_class_attribute.sub(callback, html)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def module_table(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_table(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            html:dict[str, str] = {
 | 
					            html:dict[str, str] = {
 | 
				
			||||||
@ -374,12 +371,12 @@ class WMarkDown:
 | 
				
			|||||||
        return None
 | 
					        return None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def module_exclude(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_exclude(cls:type[Self], matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & cls.HTML:
 | 
				
			||||||
            return '<span class="wmd-excluded">' + (matches.group(1) or "") + '</span>'
 | 
					            return '<span class="wmd-excluded">' + (matches.group(1) or "") + '</span>'
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def module_link(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_link(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            raw_url:str = (matches.group(4) or matches.group(11) or matches.group(14) or "").strip()
 | 
					            raw_url:str = (matches.group(4) or matches.group(11) or matches.group(14) or "").strip()
 | 
				
			||||||
@ -397,7 +394,7 @@ class WMarkDown:
 | 
				
			|||||||
            ) + '">' + self.analyse(text.strip(), language, WMarkDown.SUBITEM | self.LINKED, path) + '</a>'
 | 
					            ) + '">' + self.analyse(text.strip(), language, WMarkDown.SUBITEM | self.LINKED, path) + '</a>'
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def module_quote(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_quote(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            _type:str|None = matches.group(2)
 | 
					            _type:str|None = matches.group(2)
 | 
				
			||||||
@ -419,8 +416,8 @@ class WMarkDown:
 | 
				
			|||||||
        return None
 | 
					        return None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def code_block_data(self, key:str, value:str|int, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def code_block_data(cls:type[Self], key:str, value:str|int, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & cls.HTML:
 | 
				
			||||||
            return ('<li data-i18n="' + key + '" data-i18n-without="true" title="' + key + '">' + 
 | 
					            return ('<li data-i18n="' + key + '" data-i18n-without="true" title="' + key + '">' + 
 | 
				
			||||||
                '<span data-icon="' + key + '"></span>' + 
 | 
					                '<span data-icon="' + key + '"></span>' + 
 | 
				
			||||||
                '<span data-i18n="' + key + '">' + key + '</span>' + 
 | 
					                '<span data-i18n="' + key + '">' + key + '</span>' + 
 | 
				
			||||||
@ -429,13 +426,13 @@ class WMarkDown:
 | 
				
			|||||||
        return None
 | 
					        return None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def filter_html_special_characters(self, string:str) -> str:
 | 
					    def filter_html_special_characters(cls:type[Self], string:str) -> str:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        l:int = len(WMarkDown.html_special_characters)
 | 
					        l:int = len(cls.html_special_characters)
 | 
				
			||||||
        _:int
 | 
					        _:int
 | 
				
			||||||
        index:list[int] = [-1 for _ in range(l)]
 | 
					        index:list[int] = [-1 for _ in range(l)]
 | 
				
			||||||
        response:str = ''
 | 
					        response:str = ''
 | 
				
			||||||
        characters:tuple[str] = tuple(WMarkDown.html_special_characters.keys())
 | 
					        characters:tuple[str] = tuple(cls.html_special_characters.keys())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        while True:
 | 
					        while True:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -463,7 +460,7 @@ class WMarkDown:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            length:int = index[i]
 | 
					            length:int = index[i]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            response += string[:length] + '&' + WMarkDown.html_special_characters[characters[i]] + ';'
 | 
					            response += string[:length] + '&' + cls.html_special_characters[characters[i]] + ';'
 | 
				
			||||||
            string = string[length + 1:]
 | 
					            string = string[length + 1:]
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            for j in range(l):
 | 
					            for j in range(l):
 | 
				
			||||||
@ -471,47 +468,69 @@ class WMarkDown:
 | 
				
			|||||||
                    index[j] -= length + 1
 | 
					                    index[j] -= length + 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return response
 | 
					        return response
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @staticmethod
 | 
				
			||||||
 | 
					    def get_code_block_data(matches:REMatch) -> str:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _type:str
 | 
				
			||||||
 | 
					        i:int
 | 
				
			||||||
 | 
					        content:str
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for i in range(6):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            j:int = 2 + i * 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            _type = matches.group(j)
 | 
				
			||||||
 | 
					            content = matches.group(j + 1)
 | 
				
			||||||
 | 
					            if _type or content:
 | 
				
			||||||
 | 
					                _type = (_type or "unamed").strip().lower()
 | 
				
			||||||
 | 
					                content = (content or "")
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return (_type, content)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def module_code_block(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_code_block(cls:type[Self], matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & cls.HTML:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            _type:str
 | 
					            _type:str
 | 
				
			||||||
            content:str
 | 
					            content:str
 | 
				
			||||||
            i:int
 | 
					            # i:int
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for i in range(6):
 | 
					            (_type, content) = cls.get_code_block_data(matches)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                j:int = 2 + i * 4
 | 
					            # for i in range(6):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                _type = matches.group(j)
 | 
					            #     j:int = 2 + i * 4
 | 
				
			||||||
                content = matches.group(j + 1)
 | 
					
 | 
				
			||||||
                if _type or content:
 | 
					            #     _type = matches.group(j)
 | 
				
			||||||
                    _type = (_type or "unamed").strip().lower()
 | 
					            #     content = matches.group(j + 1)
 | 
				
			||||||
                    content = (content or "")
 | 
					            #     if _type or content:
 | 
				
			||||||
                    break
 | 
					            #         _type = (_type or "unamed").strip().lower()
 | 
				
			||||||
 | 
					            #         content = (content or "")
 | 
				
			||||||
 | 
					            #         break
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if _type:
 | 
					            if _type:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                lines:list[str] = WMarkDown.re_new_line.split(content)[2:]
 | 
					                lines:list[str] = cls.re_new_line.split(content)[2:]
 | 
				
			||||||
                _:str
 | 
					                _:str
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                return ('<div class="wmd-code-block" data-type="' + _type + '" data-processed="false">'
 | 
					                return ('<div class="wmd-code-block" data-type="' + _type + '" data-processed="false">'
 | 
				
			||||||
                    '<ul class="data">' + 
 | 
					                    '<ul class="data">' + 
 | 
				
			||||||
                        '<li><span data-icon="' + _type + '"></span></li>' + 
 | 
					                        '<li><span data-icon="' + _type + '"></span></li>' + 
 | 
				
			||||||
                        WMarkDown.code_block_data("type", _type, language) + 
 | 
					                        cls.code_block_data("type", _type, language) + 
 | 
				
			||||||
                        WMarkDown.code_block_data("characters", len(content), language) + 
 | 
					                        cls.code_block_data("characters", len(content), language) + 
 | 
				
			||||||
                        WMarkDown.code_block_data("lines", len(lines), language) + 
 | 
					                        cls.code_block_data("lines", len(lines), language) + 
 | 
				
			||||||
                    '</ul>' + 
 | 
					                    '</ul>' + 
 | 
				
			||||||
                    '<div class="code">' + 
 | 
					                    '<div class="code">' + 
 | 
				
			||||||
                        '<ol class="lines">' + ''.join(['<li></li>' for _ in lines]) + '</ol>' + 
 | 
					                        '<ol class="lines">' + ''.join(['<li></li>' for _ in lines]) + '</ol>' + 
 | 
				
			||||||
                        '<pre class="content">' + WMarkDown.filter_html_special_characters(content) + '</pre>' + 
 | 
					                        '<pre class="content">' + cls.filter_html_special_characters(content) + '</pre>' + 
 | 
				
			||||||
                    '</div>' + 
 | 
					                    '</div>' + 
 | 
				
			||||||
                '</div>')
 | 
					                '</div>')
 | 
				
			||||||
            return 'UNKNOWN_BLOCK'
 | 
					            return 'UNKNOWN_BLOCK'
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def module_special_characters(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_special_characters(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
            return matches.group(1)
 | 
					            return matches.group(1)
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
@ -526,7 +545,7 @@ class WMarkDown:
 | 
				
			|||||||
                pass
 | 
					                pass
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def module_include(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_include(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            relative_path:str = matches.group(1)
 | 
					            relative_path:str = matches.group(1)
 | 
				
			||||||
@ -560,7 +579,7 @@ class WMarkDown:
 | 
				
			|||||||
            ('<span class="text">' + title + '</span>' if title else '') + 
 | 
					            ('<span class="text">' + title + '</span>' if title else '') + 
 | 
				
			||||||
        '</span>')
 | 
					        '</span>')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def module_media(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_media(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            _type:str = matches.group(1).lower()
 | 
					            _type:str = matches.group(1).lower()
 | 
				
			||||||
@ -601,7 +620,7 @@ class WMarkDown:
 | 
				
			|||||||
        return None
 | 
					        return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def mark_replace(self, string:str, matches:REMatch, fragments:list[str]) -> str:
 | 
					    def mark_replace(cls:type[Self], string:str, matches:REMatch, fragments:list[str]) -> str:
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        if matches:
 | 
					        if matches:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -611,17 +630,17 @@ class WMarkDown:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            start, end = matches.span()
 | 
					            start, end = matches.span()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            string = string[:start] + WMarkDown.item_mark[0] + str(len(fragments)) + WMarkDown.item_mark[1] + string[end:]
 | 
					            string = string[:start] + cls.item_mark[0] + str(len(fragments)) + cls.item_mark[1] + string[end:]
 | 
				
			||||||
            fragments += [matches.group(0)]
 | 
					            fragments += [matches.group(0)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return string
 | 
					        return string
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def restore_marks(self, string:str, fragments:list[str]) -> str:
 | 
					    def restore_marks(cls:type[Self], string:str, fragments:list[str]) -> str:
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        while True:
 | 
					        while True:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            matches:REMatch = WMarkDown.item_mark[2].search(string)
 | 
					            matches:REMatch = cls.item_mark[2].search(string)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if not matches:
 | 
					            if not matches:
 | 
				
			||||||
                break
 | 
					                break
 | 
				
			||||||
@ -637,8 +656,8 @@ class WMarkDown:
 | 
				
			|||||||
        return string
 | 
					        return string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def __doc_typed_format(self, typed:str) -> str:
 | 
					    def __doc_typed_format(cls:type[Self], typed:str) -> str:
 | 
				
			||||||
        return WMarkDown.filter_html_special_characters(typed.replace(' ', "").replace(',', ", "))
 | 
					        return cls.filter_html_special_characters(typed.replace(' ', "").replace(',', ", "))
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    @staticmethod
 | 
					    @staticmethod
 | 
				
			||||||
    def is_reference(scope:str) -> str|None:
 | 
					    def is_reference(scope:str) -> str|None:
 | 
				
			||||||
@ -647,11 +666,9 @@ class WMarkDown:
 | 
				
			|||||||
            "pointer" if '*' in scope else 
 | 
					            "pointer" if '*' in scope else 
 | 
				
			||||||
        None)
 | 
					        None)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def module_code_doc(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_code_doc(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # print(matches.groups())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            data:str = matches.group(1).strip()
 | 
					            data:str = matches.group(1).strip()
 | 
				
			||||||
            base:REMatch = WMarkDown.re_code_doc.search(data)
 | 
					            base:REMatch = WMarkDown.re_code_doc.search(data)
 | 
				
			||||||
            return_type:str = WMarkDown.__doc_typed_format(base.group(2) or "void")
 | 
					            return_type:str = WMarkDown.__doc_typed_format(base.group(2) or "void")
 | 
				
			||||||
@ -753,7 +770,7 @@ class WMarkDown:
 | 
				
			|||||||
            '</fieldset>')
 | 
					            '</fieldset>')
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def module_color_sample(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_color_sample(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            color:str = matches.group(2) or matches.group(3)
 | 
					            color:str = matches.group(2) or matches.group(3)
 | 
				
			||||||
@ -764,7 +781,7 @@ class WMarkDown:
 | 
				
			|||||||
            '</span>')
 | 
					            '</span>')
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def module_presentation_links(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
					    def module_presentation_links(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
        if language & WMarkDown.HTML:
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            items:list = []
 | 
					            items:list = []
 | 
				
			||||||
@ -823,11 +840,47 @@ class WMarkDown:
 | 
				
			|||||||
            '</div>')
 | 
					            '</div>')
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    def module_code_sample_block(self:Self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
 | 
				
			||||||
 | 
					        if language & WMarkDown.HTML:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            attributes:str = matches.group(1) or ''
 | 
				
			||||||
 | 
					            submatches:REMatch = WMarkDown.re_class_attribute.search(attributes)
 | 
				
			||||||
 | 
					            classes:list[str] = WMarkDown.re_white_spaces.split((submatches.group(1) if submatches else '').strip())
 | 
				
			||||||
 | 
					            content:str = matches.group(2)
 | 
				
			||||||
 | 
					            languages:str = ''
 | 
				
			||||||
 | 
					            html = ''
 | 
				
			||||||
 | 
					            i:int = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            while True:
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                submatches = self.modules["code_block"][1].search(content)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if not submatches:
 | 
				
			||||||
 | 
					                    break
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                _type:str = WMarkDown.get_code_block_data(submatches)[0]
 | 
				
			||||||
 | 
					                span:tuple[int, int] = submatches.span()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                languages += '<li data-language="' + _type + '" data-i18n="' + _type + '" title="' + _type + '" data-selected="' + ("false" if i else "true") + '">' + _type + '</li>'
 | 
				
			||||||
 | 
					                html += self.module_code_block(submatches, language, path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                print(span + (len(content),))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                content = content[span[1]:]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            "wmd-code-sample-block" in classes or classes.insert(0, "wmd-code-sample-block")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return ('<div class="' + ' '.join(classes) + '"' + (matches.group(1) or '') + ' data-processed="false">' + 
 | 
				
			||||||
 | 
					                '<nav class="languages"><ul>' + languages + '</ul></nav>' + 
 | 
				
			||||||
 | 
					                '<div class="content">' + html + '</div>' + 
 | 
				
			||||||
 | 
					            '</div>')
 | 
				
			||||||
 | 
					        return None
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def remove_default_tabulations(self, data:str) -> str:
 | 
					    def remove_default_tabulations(cls:type[Self], data:str) -> str:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        line:str
 | 
					        line:str
 | 
				
			||||||
        lines:list[str] = WMarkDown.re_new_lines.split(data)
 | 
					        lines:list[str] = cls.re_new_lines.split(data)
 | 
				
			||||||
        spaces:int = len(data)
 | 
					        spaces:int = len(data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        def callback(matches:REMatch):
 | 
					        def callback(matches:REMatch):
 | 
				
			||||||
@ -837,20 +890,20 @@ class WMarkDown:
 | 
				
			|||||||
            if not line:
 | 
					            if not line:
 | 
				
			||||||
                continue
 | 
					                continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            white_spaces:int = len(WMarkDown.re_started_white_spaces.search(line).group(0))
 | 
					            white_spaces:int = len(cls.re_started_white_spaces.search(line).group(0))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if white_spaces < spaces:
 | 
					            if white_spaces < spaces:
 | 
				
			||||||
                spaces = white_spaces
 | 
					                spaces = white_spaces
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return WMarkDown.re_lines.sub(callback, data)
 | 
					        return cls.re_lines.sub(callback, data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __build(self, data:str, language:int, path:str|None) -> str:
 | 
					    def __build(self:Self, data:str, language:int, path:str|None) -> str:
 | 
				
			||||||
        return ('<div class="wmd wmarkdown" data-dictionary-processed="false" data-menu-processed="false">' + 
 | 
					        return ('<div class="wmd wmarkdown" data-dictionary-processed="false" data-menu-processed="false">' + 
 | 
				
			||||||
            self.analyse(WMarkDown.remove_default_tabulations(data), language, WMarkDown.RAW, path) + 
 | 
					            self.analyse(WMarkDown.remove_default_tabulations(data), language, WMarkDown.RAW, path) + 
 | 
				
			||||||
            '<div class="wmd-process-and-loaded"></div>' + 
 | 
					            '<div class="wmd-process-and-loaded"></div>' + 
 | 
				
			||||||
        '</div>')
 | 
					        '</div>')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def process(self, data:str, language:Optional[int] = HTML, path:Optional[str] = None) -> str:
 | 
					    def process(self:Self, data:str, language:Optional[int] = HTML, path:Optional[str] = None) -> str:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        results:str = ""
 | 
					        results:str = ""
 | 
				
			||||||
        variables:dict[str, str] = {}
 | 
					        variables:dict[str, str] = {}
 | 
				
			||||||
@ -871,7 +924,7 @@ class WMarkDown:
 | 
				
			|||||||
                if not option:
 | 
					                if not option:
 | 
				
			||||||
                    break
 | 
					                    break
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                variables[option.group(1).strip()] = option.group(2).strip()
 | 
					                variables[str(option.group(1)).strip()] = str(option.group(2)).strip()
 | 
				
			||||||
                options_data = options_data[option.span()[1]:]
 | 
					                options_data = options_data[option.span()[1]:]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            data = data[:_from] + data[_to:]
 | 
					            data = data[:_from] + data[_to:]
 | 
				
			||||||
@ -911,7 +964,7 @@ class WMarkDown:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        return results, variables
 | 
					        return results, variables
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def analyse(self, data:str, language:Optional[int] = HTML, mode:Optional[int] = RAW, path:Optional[str] = None) -> str:
 | 
					    def analyse(self:Self, data:str, language:Optional[int] = HTML, mode:Optional[int] = RAW, path:Optional[str] = None) -> str:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        response:str = ""
 | 
					        response:str = ""
 | 
				
			||||||
        item_mode:int
 | 
					        item_mode:int
 | 
				
			||||||
@ -967,5 +1020,5 @@ class WMarkDown:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        return response
 | 
					        return response
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def to_html(self, data:str, path:Optional[str] = None) -> str:
 | 
					    def to_html(self:Self, data:str, path:Optional[str] = None) -> str:
 | 
				
			||||||
        return self.analyse(data, WMarkDown.HTML, WMarkDown.RAW, path)
 | 
					        return self.analyse(data, WMarkDown.HTML, WMarkDown.RAW, path)
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user