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.
|
||||
|
||||
### 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
|
||||
|
||||
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.
|
||||
* [ ] 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]] -->
|
@ -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.
|
||||
|
||||
[|
|
||||
|= Activo | Cantidad | Motivo | Usuario | Cantidad total actual
|
||||
| **BTC** | 0 BTC | Inicio del contador de unidades de BTC. | | 0 BTC
|
||||
| **LTC** | 0 LTC | Inicio del contador de unidades de LTC. | | 0 LTC
|
||||
| **DOGE** | 0 DOGE | Inicio del contador de unidades de DOGE. | | 0 DOGE
|
||||
| **DASH** | 0 DASH | Inicio del contador de unidades de DASH. | | 0 DASH
|
||||
| **FAIR** | 0 FAIR | Inicio del contador de unidades de FAIR. | | 0 FAIR
|
||||
|= Activo | Cantidad | Fecha | Motivo | Usuario | Cantidad total actual
|
||||
| **BTC** | 0 BTC | | Inicio del contador de unidades de BTC. | | 0 BTC
|
||||
| **LTC** | 0 LTC | | Inicio del contador de unidades de LTC. | | 0 LTC
|
||||
| **DOGE** | 0 DOGE | | Inicio del contador de unidades de DOGE. | | 0 DOGE
|
||||
| **DASH** | 0 DASH | | Inicio del contador de unidades de DASH. | | 0 DASH
|
||||
| **FAIR** | 0 FAIR | | Inicio del contador de unidades de FAIR. | | 0 FAIR
|
||||
|]
|
||||
|
||||
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.
|
||||
+ [ ] 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.
|
||||
+ [ ] Implementar compatibilidad HTML.
|
||||
+ [ ] Gestor de etiquetas HTML limitadas.
|
||||
+ [X] Implementar SyntaxHightlighter para el módulo de bloque de código.
|
||||
+ [X] Implementar MathJax.
|
||||
+ [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
|
||||
| Base HTML | | | | | [X] | [X] | [X]
|
||||
| Checkboxes | [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] |
|
||||
| Formatos de texto | [X] | [X] | [ ] | [ ] | | [X] |
|
||||
| Exclusor de marcas | [X] | [X] | [ ] | [ ] | [X] | |
|
||||
| Include | [X] | [X] | [ ] | [ ] | | |
|
||||
| Negrilla | [X] | [X] | [ ] | [ ] | | [X] |
|
||||
| Cursiva | [X] | [X] | [ ] | [ ] | | [X] |
|
||||
| Tachado | [X] | [X] | [ ] | [ ] | | [X] |
|
||||
| Subrayado | [X] | [X] | [ ] | [ ] | | [X] |
|
||||
| Links | [X] | [X] | [ ] | [ ] | | [X] |
|
||||
| Listas | [X] | [X] | [ ] | [ ] | [X] | [X] |
|
||||
| Muestras de color | [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] |
|
||||
| Sample de color | [X] | [X] | [ ] | [ ] | | [X] |
|
||||
| Presentación de Links | [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.
|
||||
|
@ -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
|
||||
|]
|
||||
|
||||
## 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]] -->
|
@ -327,6 +327,22 @@ export const WMarkDown = (function(){
|
||||
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 = () => {
|
||||
|
||||
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 = () => {
|
||||
|
@ -872,4 +872,39 @@
|
||||
"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/"
|
||||
]
|
||||
]]
|
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;
|
||||
padding: .1em .4em;
|
||||
height: 1.2em;
|
||||
border: .1em solid #BBB;
|
||||
box-shadow: 0em 0em .8em inset #BBB; }
|
||||
border: 0.1em solid #BBB;
|
||||
box-shadow: 0em 0em 0.8em inset #BBB; }
|
||||
.wmd-code-block .data li::before {
|
||||
font-family: monospace; }
|
||||
.wmd-code-block .data li > [data-i18n] {
|
||||
@ -68,6 +68,31 @@
|
||||
.wmd-code-block[data-type=mermaid] svg {
|
||||
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 {
|
||||
display: flex;
|
||||
margin: 1em 2em;
|
||||
@ -250,9 +275,7 @@
|
||||
box-sizing: border-box; }
|
||||
.wmd-media:not([data-type=icon]) img {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
max-width: 30em;
|
||||
max-height: 30em; }
|
||||
height: auto; }
|
||||
.wmd-media:not([data-type=icon]) img + span {
|
||||
background-position: center center;
|
||||
background-size: cover; }
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,4 +1,5 @@
|
||||
// Settings
|
||||
$color-fore : #BBB;
|
||||
$transition-in : .25s;
|
||||
$transition-out : 1s;
|
||||
// Settings
|
||||
@ -29,8 +30,8 @@ $transition-out : 1s;
|
||||
margin : 0em;
|
||||
padding : .1em .4em;
|
||||
height : 1.2em;
|
||||
border : .1em solid #BBB;
|
||||
box-shadow : 0em 0em .8em inset #BBB;
|
||||
border : .1em solid $color-fore;
|
||||
box-shadow : 0em 0em .8em inset $color-fore;
|
||||
&::before{font-family : monospace;}
|
||||
&>[data-i18n]{display : none;}
|
||||
}
|
||||
@ -69,6 +70,31 @@ $transition-out : 1s;
|
||||
}
|
||||
&[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{
|
||||
display : flex;
|
||||
margin : 1em 2em;
|
||||
@ -277,8 +303,8 @@ $transition-out : 1s;
|
||||
img{
|
||||
width : 100%;
|
||||
height : auto;
|
||||
max-width : 30em;
|
||||
max-height : 30em;
|
||||
// max-width : 30em;
|
||||
// max-height : 30em;
|
||||
&+span{
|
||||
// display : none;
|
||||
background-position : center center;
|
||||
|
@ -6,7 +6,7 @@ from re import Pattern as REPattern
|
||||
from re import Match as REMatch
|
||||
from re import MULTILINE as RE_MULTILINE
|
||||
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 dirname as directory_name
|
||||
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_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_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_line_marks:REPattern = RECompile(r'[\*#~\-_]+|\[[ \-x]\]|\([ \-x]\)', RE_IGNORE_CASE)
|
||||
re_integer:REPattern = RECompile(r'^[0-9]+$')
|
||||
@ -63,7 +63,7 @@ class WMarkDown:
|
||||
re_domain:REPattern = RECompile(r'^[^\:]+\:\/{2}[^\/]+')
|
||||
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]] = {
|
||||
"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)),
|
||||
"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)),
|
||||
"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)),
|
||||
# "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}')),
|
||||
# "italic" : (WMarkDown.SUBITEM | WMarkDown.LINKED, RECompile(r'(?<!\\)\*(([^\*]+|[\r\n]+|\\\*)*)\*')),
|
||||
"italic" : (WMarkDown.SUBITEM | WMarkDown.LINKED, RECompile(r'(?<!\\)\*((?:\\\*|[^*\r\n]|[\r\n]|\*{2})*)\*')),
|
||||
"underline" : (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()
|
||||
|
||||
def __id(self, string:str) -> str:
|
||||
def __id(self:Self, string:str) -> str:
|
||||
|
||||
id:str = WMarkDown.re_characters_no_id.sub(r'-', string).lower()
|
||||
|
||||
@ -120,7 +117,7 @@ class WMarkDown:
|
||||
def reset_ids(self):
|
||||
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:
|
||||
|
||||
level:str = str(len(matches.group(2) or matches.group(4)))
|
||||
@ -135,37 +132,37 @@ class WMarkDown:
|
||||
'</h' + level + '>')
|
||||
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:
|
||||
return '<p>' + self.analyse(matches.group(0).strip(), language, WMarkDown.SUBITEM, path) + '</p>'
|
||||
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:
|
||||
return '<b><i>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</i></b>'
|
||||
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:
|
||||
return '<b>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</b>'
|
||||
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:
|
||||
return '<i>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</i>'
|
||||
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:
|
||||
return '<del>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</del>'
|
||||
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:
|
||||
return '<u>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</u>'
|
||||
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:
|
||||
return '<code>' + self.analyse(matches.group(1), language, WMarkDown.SUBITEM, path) + '</code>'
|
||||
return None
|
||||
@ -184,21 +181,21 @@ class WMarkDown:
|
||||
'</label>')
|
||||
|
||||
@classmethod
|
||||
def module_checkbox(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
|
||||
if language & WMarkDown.HTML:
|
||||
return WMarkDown.__check_html_module("checkbox", matches)
|
||||
def module_checkbox(cls:type[Self], matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
|
||||
if language & cls.HTML:
|
||||
return cls.__check_html_module("checkbox", matches)
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def module_radio(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
|
||||
if language & WMarkDown.HTML:
|
||||
return WMarkDown.__check_html_module("radio", matches)
|
||||
def module_radio(cls:type[Self], matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
|
||||
if language & cls.HTML:
|
||||
return cls.__check_html_module("radio", matches)
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def module_tick(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
|
||||
if language & WMarkDown.HTML:
|
||||
return WMarkDown.__check_html_module("tick", matches)
|
||||
def module_tick(cls:type[Self], matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
|
||||
if language & cls.HTML:
|
||||
return cls.__check_html_module("tick", matches)
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
@ -214,14 +211,14 @@ class WMarkDown:
|
||||
return ' data-deployed="' + deployed + '"' + (' data-list-unprocessed="true"' if deployable else '')
|
||||
|
||||
@classmethod
|
||||
def __list_start(self, unordered:bool, _type:str) -> str:
|
||||
def __list_start(cls:type[Self], unordered:bool, _type:str) -> str:
|
||||
if not unordered:
|
||||
_type = _type[:-1]
|
||||
if WMarkDown.re_integer.search(_type):
|
||||
if cls.re_integer.search(_type):
|
||||
return ' start="' + _type + '"'
|
||||
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:
|
||||
|
||||
html:str = ''
|
||||
@ -280,7 +277,7 @@ class WMarkDown:
|
||||
return None
|
||||
|
||||
@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)):
|
||||
_class = (_class,)
|
||||
@ -297,15 +294,15 @@ class WMarkDown:
|
||||
class_key:str
|
||||
|
||||
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([
|
||||
class_key for class_key in _class if class_key not in classes
|
||||
]) + 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:
|
||||
|
||||
html:dict[str, str] = {
|
||||
@ -374,12 +371,12 @@ class WMarkDown:
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def module_exclude(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
|
||||
if language & WMarkDown.HTML:
|
||||
def module_exclude(cls:type[Self], matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
|
||||
if language & cls.HTML:
|
||||
return '<span class="wmd-excluded">' + (matches.group(1) or "") + '</span>'
|
||||
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:
|
||||
|
||||
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>'
|
||||
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:
|
||||
|
||||
_type:str|None = matches.group(2)
|
||||
@ -419,8 +416,8 @@ class WMarkDown:
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def code_block_data(self, key:str, value:str|int, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
|
||||
if language & WMarkDown.HTML:
|
||||
def code_block_data(cls:type[Self], key:str, value:str|int, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
|
||||
if language & cls.HTML:
|
||||
return ('<li data-i18n="' + key + '" data-i18n-without="true" title="' + key + '">' +
|
||||
'<span data-icon="' + key + '"></span>' +
|
||||
'<span data-i18n="' + key + '">' + key + '</span>' +
|
||||
@ -429,13 +426,13 @@ class WMarkDown:
|
||||
return None
|
||||
|
||||
@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
|
||||
index:list[int] = [-1 for _ in range(l)]
|
||||
response:str = ''
|
||||
characters:tuple[str] = tuple(WMarkDown.html_special_characters.keys())
|
||||
characters:tuple[str] = tuple(cls.html_special_characters.keys())
|
||||
|
||||
while True:
|
||||
|
||||
@ -463,7 +460,7 @@ class WMarkDown:
|
||||
|
||||
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:]
|
||||
|
||||
for j in range(l):
|
||||
@ -472,46 +469,68 @@ class WMarkDown:
|
||||
|
||||
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
|
||||
def module_code_block(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
|
||||
if language & WMarkDown.HTML:
|
||||
def module_code_block(cls:type[Self], matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
|
||||
if language & cls.HTML:
|
||||
|
||||
_type: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)
|
||||
content = matches.group(j + 1)
|
||||
if _type or content:
|
||||
_type = (_type or "unamed").strip().lower()
|
||||
content = (content or "")
|
||||
break
|
||||
# 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
|
||||
|
||||
if _type:
|
||||
|
||||
lines:list[str] = WMarkDown.re_new_line.split(content)[2:]
|
||||
lines:list[str] = cls.re_new_line.split(content)[2:]
|
||||
_:str
|
||||
|
||||
return ('<div class="wmd-code-block" data-type="' + _type + '" data-processed="false">'
|
||||
'<ul class="data">' +
|
||||
'<li><span data-icon="' + _type + '"></span></li>' +
|
||||
WMarkDown.code_block_data("type", _type, language) +
|
||||
WMarkDown.code_block_data("characters", len(content), language) +
|
||||
WMarkDown.code_block_data("lines", len(lines), language) +
|
||||
cls.code_block_data("type", _type, language) +
|
||||
cls.code_block_data("characters", len(content), language) +
|
||||
cls.code_block_data("lines", len(lines), language) +
|
||||
'</ul>' +
|
||||
'<div class="code">' +
|
||||
'<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>')
|
||||
return 'UNKNOWN_BLOCK'
|
||||
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:
|
||||
return matches.group(1)
|
||||
return None
|
||||
@ -526,7 +545,7 @@ class WMarkDown:
|
||||
pass
|
||||
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:
|
||||
|
||||
relative_path:str = matches.group(1)
|
||||
@ -560,7 +579,7 @@ class WMarkDown:
|
||||
('<span class="text">' + title + '</span>' if title else '') +
|
||||
'</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:
|
||||
|
||||
_type:str = matches.group(1).lower()
|
||||
@ -601,7 +620,7 @@ class WMarkDown:
|
||||
return None
|
||||
|
||||
@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:
|
||||
|
||||
@ -611,17 +630,17 @@ class WMarkDown:
|
||||
|
||||
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)]
|
||||
|
||||
return string
|
||||
|
||||
@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:
|
||||
|
||||
matches:REMatch = WMarkDown.item_mark[2].search(string)
|
||||
matches:REMatch = cls.item_mark[2].search(string)
|
||||
|
||||
if not matches:
|
||||
break
|
||||
@ -637,8 +656,8 @@ class WMarkDown:
|
||||
return string
|
||||
|
||||
@classmethod
|
||||
def __doc_typed_format(self, typed:str) -> str:
|
||||
return WMarkDown.filter_html_special_characters(typed.replace(' ', "").replace(',', ", "))
|
||||
def __doc_typed_format(cls:type[Self], typed:str) -> str:
|
||||
return cls.filter_html_special_characters(typed.replace(' ', "").replace(',', ", "))
|
||||
|
||||
@staticmethod
|
||||
def is_reference(scope:str) -> str|None:
|
||||
@ -647,11 +666,9 @@ class WMarkDown:
|
||||
"pointer" if '*' in scope else
|
||||
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:
|
||||
|
||||
# print(matches.groups())
|
||||
|
||||
data:str = matches.group(1).strip()
|
||||
base:REMatch = WMarkDown.re_code_doc.search(data)
|
||||
return_type:str = WMarkDown.__doc_typed_format(base.group(2) or "void")
|
||||
@ -753,7 +770,7 @@ class WMarkDown:
|
||||
'</fieldset>')
|
||||
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:
|
||||
|
||||
color:str = matches.group(2) or matches.group(3)
|
||||
@ -764,7 +781,7 @@ class WMarkDown:
|
||||
'</span>')
|
||||
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:
|
||||
|
||||
items:list = []
|
||||
@ -823,11 +840,47 @@ class WMarkDown:
|
||||
'</div>')
|
||||
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
|
||||
def remove_default_tabulations(self, data:str) -> str:
|
||||
def remove_default_tabulations(cls:type[Self], data:str) -> 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)
|
||||
|
||||
def callback(matches:REMatch):
|
||||
@ -837,20 +890,20 @@ class WMarkDown:
|
||||
if not line:
|
||||
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:
|
||||
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">' +
|
||||
self.analyse(WMarkDown.remove_default_tabulations(data), language, WMarkDown.RAW, path) +
|
||||
'<div class="wmd-process-and-loaded"></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 = ""
|
||||
variables:dict[str, str] = {}
|
||||
@ -871,7 +924,7 @@ class WMarkDown:
|
||||
if not option:
|
||||
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]:]
|
||||
|
||||
data = data[:_from] + data[_to:]
|
||||
@ -911,7 +964,7 @@ class WMarkDown:
|
||||
|
||||
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 = ""
|
||||
item_mode:int
|
||||
@ -967,5 +1020,5 @@ class WMarkDown:
|
||||
|
||||
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)
|
Loading…
Reference in New Issue
Block a user