Completed document tools in spanish

This commit is contained in:
Mauricio Baeza 2022-08-16 22:45:11 -05:00
parent 5966869ebc
commit 0392d8acb5
71 changed files with 21420 additions and 1090 deletions

View File

@ -1,6 +1,6 @@
+++
title = "Calc"
weight = 5
weight = 6
+++
#### Trabajar con Calc

View File

@ -1,6 +1,6 @@
+++
title = "Cuadros de diálogo"
weight = 6
weight = 20
+++
#### Trabajar con cuadros de diálogo

View File

@ -0,0 +1,12 @@
+++
title = "Documentos"
weight = 5
+++
#### Trabajar con Documentos
### active
```python
```

View File

@ -0,0 +1,65 @@
+++
title = "Ejecutar macros"
weight = 6
+++
Ejecutar cualquier macro, de forma predeterminada se llaman a las macros en Python localizadas en el perfil de usuario.
```python
import easymacro as app
def mostrar_info():
app.msgbox(app.INFO_DEBUG)
return
def main(args=None):
macro = {
'library': 'test',
'name': 'mostrar_info',
}
app.macro.call(macro)
return
```
Ejecutar una macro compartida en LibreOffice Macros.
```python
macro = {
'library': 'HelloWorld',
'name': 'HelloWorldPython',
'location': 'share',
}
app.macro.call(macro)
```
Ejecutar una macro Basic.
```vb
Sub mostrar_info()
MsgBox "Mejor usa Python :)"
End Sub
```
```python
macro = {
'language': 'Basic',
'library': 'Standard',
'module': 'Module1',
'name': 'mostrar_info',
}
app.macro.call(macro)
```
Cualquier macro se puede ejecutar en otro hilo.
```python
app.macro.call(macro, True)
```
Más información en: [Scripting Framework URI Specification][1]
[1]: https://wiki.documentfoundation.org/Documentation/DevGuide/Scripting_Framework#Scripting_Framework_URI_Specification

View File

@ -0,0 +1,50 @@
+++
title = "Hilos"
weight = 5
+++
#### Ejecutar macros en otros hilos.
Las macros se ejecutan en un hilo que bloquea cualquier otro proceso dentro de la aplicación.
Si ejecutas la siguiente macro `main`, nota que no puedes hacer algo más dentro de LibreOffice durante los 5 segundos que dura el proceso.
```python
import easymacro as app
def hacer_pausa(segundos):
app.sleep(segundos)
app.debug('He terminado')
return
def main():
hacer_pausa(5)
app.msgbox('Fin...')
return
```
Hasta que aparece el cuadro de mensaje con la palabra `Fin` y lo cierras, el usuario puede seguir usando la aplicación.
### run_in_thread
Ahora ejecutamos la macro en otro hilo, "decorando" cualquier macro con `run_in_thread`
```python
@app.run_in_thread
def hacer_pausa(segundos):
app.sleep(segundos)
app.debug('He terminado')
return
def main():
hacer_pausa(5)
app.msgbox('Fin...')
return
```
Nota que ahora el mensaje aparece inmediatamente y no tras los 5 segundos.
{{% notice warning %}}
Ponga mucha atención en **no ejecutar macros en otros hilo** que dependen de algo suceptible de ser cambiado o interceptado por el usuario, por ejemplo, la celda activa.
{{% /notice %}}

View File

@ -0,0 +1,116 @@
+++
title = "Timer"
weight = 7
+++
El `timer` siempre se ejecuta en otro hilo.
### once
Ejecutar macro una sola vez en X segundos.
```python
import easymacro as app
NOMBRE = 'reloj'
def mostrar_hora():
app.debug(app.dates.now_time)
return
def iniciar_conteo():
segundos = 5
macro = {
'library': 'test',
'name': 'mostrar_hora',
}
app.timer.once(NOMBRE, segundos, macro)
return
def main(args=None):
iniciar_conteo()
return
```
### cancel
Cancelar ejecución, antes del tiempo establecido.
```python
def main(args=None):
iniciar_conteo()
app.sleep(3)
detener_conteo()
return
def detener_conteo():
app.timer.cancel(NOMBRE)
return
```
```
16/08/2022 21:18:50 - INFO - Event: "reloj", started... execute in 60 seconds
16/08/2022 21:18:55 - INFO - Cancel event: "reloj", ok...
```
### start
Ejecutar macro cada X segundos.
```python
NOMBRE = 'reloj'
def mostrar_hora():
app.debug(app.dates.now_time)
return
def iniciar_reloj():
segundos = 1
macro = {
'library': 'test',
'name': 'mostrar_hora',
}
app.timer.start(NOMBRE, segundos, macro)
return
def main(args=None):
iniciar_reloj()
return
```
### stop
Detener timer.
```python
def detener_reloj():
app.timer.stop(NOMBRE)
return
```
```
16/08/2022 21:25:37 - INFO - Timer 'reloj' started, execute macro: 'mostrar_hora'
16/08/2022 21:25:38 - DEBUG - 21:25:38
16/08/2022 21:25:39 - DEBUG - 21:25:39
...
16/08/2022 21:25:47 - DEBUG - 21:25:47
16/08/2022 21:25:48 - DEBUG - 21:25:48
16/08/2022 21:25:48 - INFO - Timer stopped...
```
{{% notice tip %}}
Asegurese siempre de establecer un nombre único para cada timer.
{{% /notice %}}
{{% notice warning %}}
Asegurese siempre de ejecutar macros que NO bloqueen la interfaz del usuario.
{{% /notice %}}

View File

@ -0,0 +1,42 @@
+++
title = "URL"
weight = 8
+++
### get
Método `get`.
```python
def prueba_get():
url = 'https://api.ipify.org'
respuesta = app.url.get(url)
if respuesta.status_code == 200:
mi_ip = respuesta.body.decode()
app.debug(f'IP: {mi_ip}')
else:
app.debug(respuesta.status_code)
return
```
```
16/08/2022 22:14:13 - DEBUG - IP: 199.203.174.159
```
Respuestas en formato json.
```python
def prueba_get():
url = 'https://api.ipify.org/?format=json'
respuesta = app.url.get(url)
if respuesta.status_code == 200:
datos = respuesta.json()
app.debug(f'IP: {datos["ip"]}')
else:
app.debug(respuesta.status_code)
return
```

View File

@ -0,0 +1,198 @@
+++
title = "Utilidades"
weight = 9
+++
### dict_to_property
Convertir diccionarios en PropertyValue
```python
datos = {
'Hidden': True,
'Password': 'letmein',
}
propiedades = app.dict_to_property(datos)
app.msgbox(propiedades)
```
### data_to_dict
Convertir `PropertyValue` en diccionarios
```python
datos = app.data_to_dict(propiedades)
app.msgbox(datos)
```
Convertir `tuplas` a diccionario.
```python
tupla_de_tuplas = (
('Hidden', True),
('Password', 'letmein'),
)
datos = app.data_to_dict(tupla_de_tuplas)
app.msgbox(datos)
```
Convertir `listas` a diccionario.
```python
lista_de_listas = [
['Hidden', True],
['Password', 'letmein'],
]
datos = app.data_to_dict(lista_de_listas)
app.msgbox(datos)
```
### sleep
Hacer una pausa de X segundos.
```python
app.sleep(5)
```
### render
Reemplazar variables en cadenas de texto.
```python
plantilla = """Hola $nombre
Te envío este archivo: $archivo
Saludos cordiales
"""
datos = {
'nombre': 'Ingrid Bergman',
'archivo': 'carta_de_amor.odt'
}
resultado = app.render(plantilla, datos)
app.msgbox(resultado)
```
### run
Ejecutar un programa.
```python
nombre_aplicacion = 'gnome-calculator'
app.shell.run(nombre_aplicacion)
```
Ejecutar comandos shell y capturar la salida.
```python
comandos = 'ls -lh ~'
resultado = app.shell.run(comandos, True)
app.debug(resultado)
```
```
drwxr-xr-x 4 mau mau 4.0K Aug 15 23:36 Desktop
drwxr-xr-x 6 mau mau 4.0K Jun 9 23:32 Documents
drwxr-xr-x 5 mau mau 4.0K Aug 16 13:09 Downloads
drwxr-xr-x 3 mau mau 4.0K Aug 14 15:19 Pictures
drwxr-xr-x 10 mau mau 4.0K Jun 19 19:36 Projects
drwxr-xr-x 2 mau mau 4.0K May 11 22:36 Templates
drwxr-xr-x 2 mau mau 4.0K Jul 19 13:37 Videos
```
Ejectuar comandos y capturar la salida línea a línea.
```python
comandos = 'ls -lh /home/mau'
for line in app.shell.popen(comandos):
app.debug(line)
```
### digest
Obtener hash. Por default se regresa en hexadecimal.
```python
datos = 'LibreOffice con Python'
digest = app.hash.digest('md5', datos)
app.debug('MD5 = ', digest)
digest = app.hash.digest('sha1', datos)
app.debug('SHA1 = ', digest)
digest = app.hash.digest('sha256', datos)
app.debug('SHA256 = ', digest)
digest = app.hash.digest('sha512', datos)
app.debug('SHA512 = ', digest)
```
```
16/08/2022 18:48:07 - DEBUG - MD5 = 3801759ead20abc3ce0d0095289bdcfd
16/08/2022 18:48:07 - DEBUG - SHA1 = 1df74aaae9658c21074aa5a2d4c2055dcf79f0db
16/08/2022 18:48:07 - DEBUG - SHA256 = 228e90b15b6259307e580677939b1f2f45e9317461e98f603af8fcac0f9a598f
16/08/2022 18:48:07 - DEBUG - SHA512 = 3ef45f79f3bfd2b251d250489c91b631306456405510397fb1a7ee37005d196376b7d6ca86a9895f4eb97eb74813965c24d6564a383f4bdb1360665c8fbb192a
```
Para obtener bytes.
```
digest = app.hash.digest('md5', datos, False)
app.debug('MD5 = ', digest)
```
```
16/08/2022 18:48:07 - DEBUG - MD5 = b'8\x01u\x9e\xad \xab\xc3\xce\r\x00\x95(\x9b\xdc\xfd'
```
### config
Puede guardar datos de configuración de su macro o extensión dentro del perfil de usuario.
```python
nombre = 'mi_extension'
datos = {
'ruta': '/home/mau/pruebas',
'guardar': True,
}
if app.config.set(nombre, datos):
app.debug('Configuración guardada...')
```
Y recuperarlos en cualquier momento.
```
datos = app.config.get(nombre)
app.debug(datos)
```
### color
Puede ver los colores que puede usar en Wikipedia [Colores Web][1]
```python
color_nombre = 'darkblue'
color = app.color(color_nombre)
app.debug(color)
color_rgb = (125, 200, 10)
color = app.color(color_rgb)
app.debug(color)
color_html = '#008080'
color = app.color(color_html)
app.debug(color)
```
[1]: https://es.wikipedia.org/wiki/Colores_web

View File

@ -9,15 +9,15 @@
<title>404 Page not found</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<style>
:root #header + #content > #left > #rlblock_left {

View File

@ -12,22 +12,22 @@
<title>Categories :: EasyMacro&#39;s documentation</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
<style>
:root #header + #content > #left > #rlblock_left{
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
<script type="text/javascript">
var baseurl = "https:\/\/doc.cuates.net\/easymacro";
</script>
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
</div>
@ -458,19 +458,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
<script src="/easymacro/js/learn.js?1660257767"></script>
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
<script src="/easymacro/js/learn.js?1660707822"></script>
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
<script>
mermaid.initialize({ startOnLoad: true });

View File

@ -20,6 +20,16 @@
/>
</url><url>
<loc>https://doc.cuates.net/easymacro/tools_debug/</loc>
<xhtml:link
rel="alternate"
hreflang="es"
href="https://doc.cuates.net/easymacro/es/tools_debug/"
/>
<xhtml:link
rel="alternate"
hreflang="en"
href="https://doc.cuates.net/easymacro/tools_debug/"
/>
</url><url>
<loc>https://doc.cuates.net/easymacro/</loc>
<priority>0</priority>

View File

@ -9,15 +9,15 @@
<title>404 Page not found</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<style>
:root #header + #content > #left > #rlblock_left {

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>LibreOffice on Documentación para EasyMacro</title>
<link>https://doc.cuates.net/easymacro/es/application/</link>
<description>Recent content in LibreOffice on Documentación para EasyMacro</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/application/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Calc on Documentación para EasyMacro</title>
<link>https://doc.cuates.net/easymacro/es/calc/</link>
<description>Recent content in Calc on Documentación para EasyMacro</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/calc/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

View File

@ -12,22 +12,22 @@
<title>Categories :: Documentación para EasyMacro</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
<style>
:root #header + #content > #left > #rlblock_left{
@ -44,7 +44,7 @@
<div id="header-wrapper">
<div id="header">
<a id="logo" href='/es'>
<a id="logo" href='/easymacro/es'>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="100.000000pt" height="75.000000pt" viewBox="0 0 200.000000 150.000000"
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
<script type="text/javascript">
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/es";
</script>
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
</div>
@ -121,7 +121,7 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<section id="homelinks">
<ul>
<li>
<a class="padding" href='/es'><i class='fas fa-home'></i> Inicio</a>
<a class="padding" href='/easymacro/es'><i class='fas fa-home'></i> Inicio</a>
</li>
</ul>
</section>
@ -156,6 +156,396 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<li data-nav-id="/easymacro/es/tools_debug/" title="Herramientas para depurar" class="dd-item
">
<a href="/easymacro/es/tools_debug/">
Herramientas para depurar
</a>
</li>
<li data-nav-id="/easymacro/es/tools/" title="Herramientas" class="dd-item
">
<a href="/easymacro/es/tools/">
Herramientas
</a>
<ul>
<li data-nav-id="/easymacro/es/tools/messages/" title="Mensajes" class="dd-item
">
<a href="/easymacro/es/tools/messages/">
Mensajes
</a>
</li>
<li data-nav-id="/easymacro/es/tools/dates_and_time/" title="Fechas y tiempo" class="dd-item
">
<a href="/easymacro/es/tools/dates_and_time/">
Fechas y tiempo
</a>
</li>
<li data-nav-id="/easymacro/es/tools/paths/" title="Rutas y archivos" class="dd-item
">
<a href="/easymacro/es/tools/paths/">
Rutas y archivos
</a>
</li>
<li data-nav-id="/easymacro/es/tools/email/" title="Correo electrónico" class="dd-item
">
<a href="/easymacro/es/tools/email/">
Correo electrónico
</a>
</li>
<li data-nav-id="/easymacro/es/tools/threads/" title="Hilos" class="dd-item
">
<a href="/easymacro/es/tools/threads/">
Hilos
</a>
</li>
<li data-nav-id="/easymacro/es/tools/macros/" title="Ejecutar macros" class="dd-item
">
<a href="/easymacro/es/tools/macros/">
Ejecutar macros
</a>
</li>
<li data-nav-id="/easymacro/es/tools/timer/" title="Timer" class="dd-item
">
<a href="/easymacro/es/tools/timer/">
Timer
</a>
</li>
<li data-nav-id="/easymacro/es/tools/url/" title="URL" class="dd-item
">
<a href="/easymacro/es/tools/url/">
URL
</a>
</li>
<li data-nav-id="/easymacro/es/tools/utils/" title="Utilidades" class="dd-item
">
<a href="/easymacro/es/tools/utils/">
Utilidades
</a>
</li>
</ul>
</li>
<li data-nav-id="/easymacro/es/application/" title="LibreOffice" class="dd-item
">
<a href="/easymacro/es/application/">
LibreOffice
</a>
</li>
<li data-nav-id="/easymacro/es/documents/" title="Documentos" class="dd-item
">
<a href="/easymacro/es/documents/">
Documentos
</a>
</li>
<li data-nav-id="/easymacro/es/calc/" title="Calc" class="dd-item
">
<a href="/easymacro/es/calc/">
Calc
</a>
</li>
<li data-nav-id="/easymacro/es/dialog/" title="Cuadros de diálogo" class="dd-item
">
<a href="/easymacro/es/dialog/">
Cuadros de diálogo
</a>
</li>
</ul>
@ -387,6 +777,248 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
@ -418,19 +1050,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
<script src="/easymacro/js/learn.js?1660257767"></script>
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
<script src="/easymacro/js/learn.js?1660707822"></script>
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
<script>
mermaid.initialize({ startOnLoad: true });

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Cuadros de diálogo on Documentación para EasyMacro</title>
<link>https://doc.cuates.net/easymacro/es/dialog/</link>
<description>Recent content in Cuadros de diálogo on Documentación para EasyMacro</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/dialog/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Documentos on Documentación para EasyMacro</title>
<link>https://doc.cuates.net/easymacro/es/documents/</link>
<description>Recent content in Documentos on Documentación para EasyMacro</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/documents/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

View File

@ -12,22 +12,22 @@
<title> :: Documentación para EasyMacro</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
<style>
:root #header + #content > #left > #rlblock_left{
@ -44,7 +44,7 @@
<div id="header-wrapper">
<div id="header">
<a id="logo" href='/es'>
<a id="logo" href='/easymacro/es'>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="100.000000pt" height="75.000000pt" viewBox="0 0 200.000000 150.000000"
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
<script type="text/javascript">
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/es";
</script>
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
</div>
@ -121,7 +121,7 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<section id="homelinks">
<ul>
<li>
<a class="padding" href='/es'><i class='fas fa-home'></i> Inicio</a>
<a class="padding" href='/easymacro/es'><i class='fas fa-home'></i> Inicio</a>
</li>
</ul>
</section>
@ -156,6 +156,396 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<li data-nav-id="/easymacro/es/tools_debug/" title="Herramientas para depurar" class="dd-item
">
<a href="/easymacro/es/tools_debug/">
Herramientas para depurar
</a>
</li>
<li data-nav-id="/easymacro/es/tools/" title="Herramientas" class="dd-item
">
<a href="/easymacro/es/tools/">
Herramientas
</a>
<ul>
<li data-nav-id="/easymacro/es/tools/messages/" title="Mensajes" class="dd-item
">
<a href="/easymacro/es/tools/messages/">
Mensajes
</a>
</li>
<li data-nav-id="/easymacro/es/tools/dates_and_time/" title="Fechas y tiempo" class="dd-item
">
<a href="/easymacro/es/tools/dates_and_time/">
Fechas y tiempo
</a>
</li>
<li data-nav-id="/easymacro/es/tools/paths/" title="Rutas y archivos" class="dd-item
">
<a href="/easymacro/es/tools/paths/">
Rutas y archivos
</a>
</li>
<li data-nav-id="/easymacro/es/tools/email/" title="Correo electrónico" class="dd-item
">
<a href="/easymacro/es/tools/email/">
Correo electrónico
</a>
</li>
<li data-nav-id="/easymacro/es/tools/threads/" title="Hilos" class="dd-item
">
<a href="/easymacro/es/tools/threads/">
Hilos
</a>
</li>
<li data-nav-id="/easymacro/es/tools/macros/" title="Ejecutar macros" class="dd-item
">
<a href="/easymacro/es/tools/macros/">
Ejecutar macros
</a>
</li>
<li data-nav-id="/easymacro/es/tools/timer/" title="Timer" class="dd-item
">
<a href="/easymacro/es/tools/timer/">
Timer
</a>
</li>
<li data-nav-id="/easymacro/es/tools/url/" title="URL" class="dd-item
">
<a href="/easymacro/es/tools/url/">
URL
</a>
</li>
<li data-nav-id="/easymacro/es/tools/utils/" title="Utilidades" class="dd-item
">
<a href="/easymacro/es/tools/utils/">
Utilidades
</a>
</li>
</ul>
</li>
<li data-nav-id="/easymacro/es/application/" title="LibreOffice" class="dd-item
">
<a href="/easymacro/es/application/">
LibreOffice
</a>
</li>
<li data-nav-id="/easymacro/es/documents/" title="Documentos" class="dd-item
">
<a href="/easymacro/es/documents/">
Documentos
</a>
</li>
<li data-nav-id="/easymacro/es/calc/" title="Calc" class="dd-item
">
<a href="/easymacro/es/calc/">
Calc
</a>
</li>
<li data-nav-id="/easymacro/es/dialog/" title="Cuadros de diálogo" class="dd-item
">
<a href="/easymacro/es/dialog/">
Cuadros de diálogo
</a>
</li>
</ul>
@ -341,6 +731,248 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
@ -372,19 +1004,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
<script src="/easymacro/js/learn.js?1660257767"></script>
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
<script src="/easymacro/js/learn.js?1660707822"></script>
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
<script>
mermaid.initialize({ startOnLoad: true });

File diff suppressed because one or more lines are too long

View File

@ -12,22 +12,22 @@
<title>Instalación :: Documentación para EasyMacro</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
<style>
:root #header + #content > #left > #rlblock_left{
@ -44,7 +44,7 @@
<div id="header-wrapper">
<div id="header">
<a id="logo" href='/es'>
<a id="logo" href='/easymacro/es'>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="100.000000pt" height="75.000000pt" viewBox="0 0 200.000000 150.000000"
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
<script type="text/javascript">
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/es";
</script>
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
</div>
@ -121,7 +121,7 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<section id="homelinks">
<ul>
<li>
<a class="padding" href='/es'><i class='fas fa-home'></i> Inicio</a>
<a class="padding" href='/easymacro/es'><i class='fas fa-home'></i> Inicio</a>
</li>
</ul>
</section>
@ -156,6 +156,396 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<li data-nav-id="/easymacro/es/tools_debug/" title="Herramientas para depurar" class="dd-item
">
<a href="/easymacro/es/tools_debug/">
Herramientas para depurar
</a>
</li>
<li data-nav-id="/easymacro/es/tools/" title="Herramientas" class="dd-item
">
<a href="/easymacro/es/tools/">
Herramientas
</a>
<ul>
<li data-nav-id="/easymacro/es/tools/messages/" title="Mensajes" class="dd-item
">
<a href="/easymacro/es/tools/messages/">
Mensajes
</a>
</li>
<li data-nav-id="/easymacro/es/tools/dates_and_time/" title="Fechas y tiempo" class="dd-item
">
<a href="/easymacro/es/tools/dates_and_time/">
Fechas y tiempo
</a>
</li>
<li data-nav-id="/easymacro/es/tools/paths/" title="Rutas y archivos" class="dd-item
">
<a href="/easymacro/es/tools/paths/">
Rutas y archivos
</a>
</li>
<li data-nav-id="/easymacro/es/tools/email/" title="Correo electrónico" class="dd-item
">
<a href="/easymacro/es/tools/email/">
Correo electrónico
</a>
</li>
<li data-nav-id="/easymacro/es/tools/threads/" title="Hilos" class="dd-item
">
<a href="/easymacro/es/tools/threads/">
Hilos
</a>
</li>
<li data-nav-id="/easymacro/es/tools/macros/" title="Ejecutar macros" class="dd-item
">
<a href="/easymacro/es/tools/macros/">
Ejecutar macros
</a>
</li>
<li data-nav-id="/easymacro/es/tools/timer/" title="Timer" class="dd-item
">
<a href="/easymacro/es/tools/timer/">
Timer
</a>
</li>
<li data-nav-id="/easymacro/es/tools/url/" title="URL" class="dd-item
">
<a href="/easymacro/es/tools/url/">
URL
</a>
</li>
<li data-nav-id="/easymacro/es/tools/utils/" title="Utilidades" class="dd-item
">
<a href="/easymacro/es/tools/utils/">
Utilidades
</a>
</li>
</ul>
</li>
<li data-nav-id="/easymacro/es/application/" title="LibreOffice" class="dd-item
">
<a href="/easymacro/es/application/">
LibreOffice
</a>
</li>
<li data-nav-id="/easymacro/es/documents/" title="Documentos" class="dd-item
">
<a href="/easymacro/es/documents/">
Documentos
</a>
</li>
<li data-nav-id="/easymacro/es/calc/" title="Calc" class="dd-item
">
<a href="/easymacro/es/calc/">
Calc
</a>
</li>
<li data-nav-id="/easymacro/es/dialog/" title="Cuadros de diálogo" class="dd-item
">
<a href="/easymacro/es/dialog/">
Cuadros de diálogo
</a>
</li>
</ul>
@ -391,6 +781,251 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
@ -415,6 +1050,8 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<a class="nav nav-prev" href="/easymacro/es/" title=""> <i class="fa fa-chevron-left"></i></a>
<a class="nav nav-next" href="/easymacro/es/tools_debug/" title="Herramientas para depurar" style="margin-right: 0px;"><i class="fa fa-chevron-right"></i></a>
</div>
@ -423,19 +1060,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
<script src="/easymacro/js/learn.js?1660257767"></script>
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
<script src="/easymacro/js/learn.js?1660707822"></script>
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
<script>
mermaid.initialize({ startOnLoad: true });

View File

@ -18,6 +18,46 @@
hreflang="es"
href="https://doc.cuates.net/easymacro/es/installation/"
/>
</url><url>
<loc>https://doc.cuates.net/easymacro/es/tools/messages/</loc>
</url><url>
<loc>https://doc.cuates.net/easymacro/es/tools/dates_and_time/</loc>
</url><url>
<loc>https://doc.cuates.net/easymacro/es/tools_debug/</loc>
<xhtml:link
rel="alternate"
hreflang="en"
href="https://doc.cuates.net/easymacro/tools_debug/"
/>
<xhtml:link
rel="alternate"
hreflang="es"
href="https://doc.cuates.net/easymacro/es/tools_debug/"
/>
</url><url>
<loc>https://doc.cuates.net/easymacro/es/tools/paths/</loc>
</url><url>
<loc>https://doc.cuates.net/easymacro/es/tools/email/</loc>
</url><url>
<loc>https://doc.cuates.net/easymacro/es/tools/</loc>
</url><url>
<loc>https://doc.cuates.net/easymacro/es/application/</loc>
</url><url>
<loc>https://doc.cuates.net/easymacro/es/documents/</loc>
</url><url>
<loc>https://doc.cuates.net/easymacro/es/tools/threads/</loc>
</url><url>
<loc>https://doc.cuates.net/easymacro/es/calc/</loc>
</url><url>
<loc>https://doc.cuates.net/easymacro/es/tools/macros/</loc>
</url><url>
<loc>https://doc.cuates.net/easymacro/es/tools/timer/</loc>
</url><url>
<loc>https://doc.cuates.net/easymacro/es/tools/url/</loc>
</url><url>
<loc>https://doc.cuates.net/easymacro/es/tools/utils/</loc>
</url><url>
<loc>https://doc.cuates.net/easymacro/es/dialog/</loc>
</url><url>
<loc>https://doc.cuates.net/easymacro/es/</loc>
<priority>0</priority>

View File

@ -12,22 +12,22 @@
<title>Tags :: Documentación para EasyMacro</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
<style>
:root #header + #content > #left > #rlblock_left{
@ -44,7 +44,7 @@
<div id="header-wrapper">
<div id="header">
<a id="logo" href='/es'>
<a id="logo" href='/easymacro/es'>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="100.000000pt" height="75.000000pt" viewBox="0 0 200.000000 150.000000"
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
<script type="text/javascript">
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/es";
</script>
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
</div>
@ -121,7 +121,7 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<section id="homelinks">
<ul>
<li>
<a class="padding" href='/es'><i class='fas fa-home'></i> Inicio</a>
<a class="padding" href='/easymacro/es'><i class='fas fa-home'></i> Inicio</a>
</li>
</ul>
</section>
@ -156,6 +156,396 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<li data-nav-id="/easymacro/es/tools_debug/" title="Herramientas para depurar" class="dd-item
">
<a href="/easymacro/es/tools_debug/">
Herramientas para depurar
</a>
</li>
<li data-nav-id="/easymacro/es/tools/" title="Herramientas" class="dd-item
">
<a href="/easymacro/es/tools/">
Herramientas
</a>
<ul>
<li data-nav-id="/easymacro/es/tools/messages/" title="Mensajes" class="dd-item
">
<a href="/easymacro/es/tools/messages/">
Mensajes
</a>
</li>
<li data-nav-id="/easymacro/es/tools/dates_and_time/" title="Fechas y tiempo" class="dd-item
">
<a href="/easymacro/es/tools/dates_and_time/">
Fechas y tiempo
</a>
</li>
<li data-nav-id="/easymacro/es/tools/paths/" title="Rutas y archivos" class="dd-item
">
<a href="/easymacro/es/tools/paths/">
Rutas y archivos
</a>
</li>
<li data-nav-id="/easymacro/es/tools/email/" title="Correo electrónico" class="dd-item
">
<a href="/easymacro/es/tools/email/">
Correo electrónico
</a>
</li>
<li data-nav-id="/easymacro/es/tools/threads/" title="Hilos" class="dd-item
">
<a href="/easymacro/es/tools/threads/">
Hilos
</a>
</li>
<li data-nav-id="/easymacro/es/tools/macros/" title="Ejecutar macros" class="dd-item
">
<a href="/easymacro/es/tools/macros/">
Ejecutar macros
</a>
</li>
<li data-nav-id="/easymacro/es/tools/timer/" title="Timer" class="dd-item
">
<a href="/easymacro/es/tools/timer/">
Timer
</a>
</li>
<li data-nav-id="/easymacro/es/tools/url/" title="URL" class="dd-item
">
<a href="/easymacro/es/tools/url/">
URL
</a>
</li>
<li data-nav-id="/easymacro/es/tools/utils/" title="Utilidades" class="dd-item
">
<a href="/easymacro/es/tools/utils/">
Utilidades
</a>
</li>
</ul>
</li>
<li data-nav-id="/easymacro/es/application/" title="LibreOffice" class="dd-item
">
<a href="/easymacro/es/application/">
LibreOffice
</a>
</li>
<li data-nav-id="/easymacro/es/documents/" title="Documentos" class="dd-item
">
<a href="/easymacro/es/documents/">
Documentos
</a>
</li>
<li data-nav-id="/easymacro/es/calc/" title="Calc" class="dd-item
">
<a href="/easymacro/es/calc/">
Calc
</a>
</li>
<li data-nav-id="/easymacro/es/dialog/" title="Cuadros de diálogo" class="dd-item
">
<a href="/easymacro/es/dialog/">
Cuadros de diálogo
</a>
</li>
</ul>
@ -387,6 +777,248 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
@ -418,19 +1050,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
<script src="/easymacro/js/learn.js?1660257767"></script>
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
<script src="/easymacro/js/learn.js?1660707822"></script>
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
<script>
mermaid.initialize({ startOnLoad: true });

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Fechas y tiempo on Documentación para EasyMacro</title>
<link>https://doc.cuates.net/easymacro/es/tools/dates_and_time/</link>
<description>Recent content in Fechas y tiempo on Documentación para EasyMacro</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/dates_and_time/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Correo electrónico on Documentación para EasyMacro</title>
<link>https://doc.cuates.net/easymacro/es/tools/email/</link>
<description>Recent content in Correo electrónico on Documentación para EasyMacro</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/email/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Herramientas on Documentación para EasyMacro</title>
<link>https://doc.cuates.net/easymacro/es/tools/</link>
<description>Recent content in Herramientas on Documentación para EasyMacro</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Ejecutar macros on Documentación para EasyMacro</title>
<link>https://doc.cuates.net/easymacro/es/tools/macros/</link>
<description>Recent content in Ejecutar macros on Documentación para EasyMacro</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/macros/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Mensajes on Documentación para EasyMacro</title>
<link>https://doc.cuates.net/easymacro/es/tools/messages/</link>
<description>Recent content in Mensajes on Documentación para EasyMacro</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/messages/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Rutas y archivos on Documentación para EasyMacro</title>
<link>https://doc.cuates.net/easymacro/es/tools/paths/</link>
<description>Recent content in Rutas y archivos on Documentación para EasyMacro</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/paths/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Hilos on Documentación para EasyMacro</title>
<link>https://doc.cuates.net/easymacro/es/tools/threads/</link>
<description>Recent content in Hilos on Documentación para EasyMacro</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/threads/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Timer on Documentación para EasyMacro</title>
<link>https://doc.cuates.net/easymacro/es/tools/timer/</link>
<description>Recent content in Timer on Documentación para EasyMacro</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/timer/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>URL on Documentación para EasyMacro</title>
<link>https://doc.cuates.net/easymacro/es/tools/url/</link>
<description>Recent content in URL on Documentación para EasyMacro</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/url/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Utilidades on Documentación para EasyMacro</title>
<link>https://doc.cuates.net/easymacro/es/tools/utils/</link>
<description>Recent content in Utilidades on Documentación para EasyMacro</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/utils/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Herramientas para depurar on Documentación para EasyMacro</title>
<link>https://doc.cuates.net/easymacro/es/tools_debug/</link>
<description>Recent content in Herramientas para depurar on Documentación para EasyMacro</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools_debug/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View File

@ -9,15 +9,15 @@
<title>404 Page not found</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<style>
:root #header + #content > #left > #rlblock_left {

View File

@ -12,22 +12,22 @@
<title>Categories :: Documentation du EasyMacro</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
<style>
:root #header + #content > #left > #rlblock_left{
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
<script type="text/javascript">
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/fr";
</script>
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
</div>
@ -373,19 +373,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
<script src="/easymacro/js/learn.js?1660257767"></script>
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
<script src="/easymacro/js/learn.js?1660707822"></script>
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
<script>
mermaid.initialize({ startOnLoad: true });

View File

@ -12,22 +12,22 @@
<title> :: Documentation du EasyMacro</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
<style>
:root #header + #content > #left > #rlblock_left{
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
<script type="text/javascript">
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/fr";
</script>
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
</div>
@ -322,19 +322,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
<script src="/easymacro/js/learn.js?1660257767"></script>
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
<script src="/easymacro/js/learn.js?1660707822"></script>
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
<script>
mermaid.initialize({ startOnLoad: true });

View File

@ -12,22 +12,22 @@
<title>Tags :: Documentation du EasyMacro</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
<style>
:root #header + #content > #left > #rlblock_left{
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
<script type="text/javascript">
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/fr";
</script>
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
</div>
@ -373,19 +373,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
<script src="/easymacro/js/learn.js?1660257767"></script>
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
<script src="/easymacro/js/learn.js?1660707822"></script>
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
<script>
mermaid.initialize({ startOnLoad: true });

View File

@ -12,22 +12,22 @@
<title> :: EasyMacro&#39;s documentation</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
<style>
:root #header + #content > #left > #rlblock_left{
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
<script type="text/javascript">
var baseurl = "https:\/\/doc.cuates.net\/easymacro";
</script>
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
</div>
@ -412,19 +412,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
<script src="/easymacro/js/learn.js?1660257767"></script>
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
<script src="/easymacro/js/learn.js?1660707822"></script>
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
<script>
mermaid.initialize({ startOnLoad: true });

View File

@ -12,22 +12,22 @@
<title>Installation :: EasyMacro&#39;s documentation</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
<style>
:root #header + #content > #left > #rlblock_left{
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
<script type="text/javascript">
var baseurl = "https:\/\/doc.cuates.net\/easymacro";
</script>
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
</div>
@ -466,19 +466,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
<script src="/easymacro/js/learn.js?1660257767"></script>
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
<script src="/easymacro/js/learn.js?1660707822"></script>
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
<script>
mermaid.initialize({ startOnLoad: true });

View File

@ -9,15 +9,15 @@
<title>404 Page not found</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<style>
:root #header + #content > #left > #rlblock_left {

View File

@ -12,22 +12,22 @@
<title>Categories :: Documentação para EasyMacro</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
<style>
:root #header + #content > #left > #rlblock_left{
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
<script type="text/javascript">
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/pt";
</script>
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
</div>
@ -418,19 +418,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
<script src="/easymacro/js/learn.js?1660257767"></script>
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
<script src="/easymacro/js/learn.js?1660707822"></script>
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
<script>
mermaid.initialize({ startOnLoad: true });

View File

@ -12,22 +12,22 @@
<title> :: Documentação para EasyMacro</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
<style>
:root #header + #content > #left > #rlblock_left{
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
<script type="text/javascript">
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/pt";
</script>
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
</div>
@ -367,19 +367,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
<script src="/easymacro/js/learn.js?1660257767"></script>
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
<script src="/easymacro/js/learn.js?1660707822"></script>
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
<script>
mermaid.initialize({ startOnLoad: true });

View File

@ -12,22 +12,22 @@
<title>Instalação :: Documentação para EasyMacro</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
<style>
:root #header + #content > #left > #rlblock_left{
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
<script type="text/javascript">
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/pt";
</script>
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
</div>
@ -421,19 +421,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
<script src="/easymacro/js/learn.js?1660257767"></script>
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
<script src="/easymacro/js/learn.js?1660707822"></script>
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
<script>
mermaid.initialize({ startOnLoad: true });

View File

@ -12,22 +12,22 @@
<title>Tags :: Documentação para EasyMacro</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
<style>
:root #header + #content > #left > #rlblock_left{
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
<script type="text/javascript">
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/pt";
</script>
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
</div>
@ -418,19 +418,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
<script src="/easymacro/js/learn.js?1660257767"></script>
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
<script src="/easymacro/js/learn.js?1660707822"></script>
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
<script>
mermaid.initialize({ startOnLoad: true });

View File

@ -12,22 +12,22 @@
<title>Tags :: EasyMacro&#39;s documentation</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
<style>
:root #header + #content > #left > #rlblock_left{
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
<script type="text/javascript">
var baseurl = "https:\/\/doc.cuates.net\/easymacro";
</script>
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
</div>
@ -458,19 +458,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
<script src="/easymacro/js/learn.js?1660257767"></script>
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
<script src="/easymacro/js/learn.js?1660707822"></script>
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
<script>
mermaid.initialize({ startOnLoad: true });

View File

@ -12,22 +12,22 @@
<title>Tools for debug :: EasyMacro&#39;s documentation</title>
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
<style>
:root #header + #content > #left > #rlblock_left{
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
<script type="text/javascript">
var baseurl = "https:\/\/doc.cuates.net\/easymacro";
</script>
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
</div>
@ -226,6 +226,22 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<option id="es" value="https://doc.cuates.net/easymacro/es/tools_debug/">Español</option>
</select>
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
@ -414,19 +430,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
<script src="/easymacro/js/learn.js?1660257767"></script>
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
<script src="/easymacro/js/learn.js?1660707822"></script>
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
<script>
mermaid.initialize({ startOnLoad: true });

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View File

@ -18,23 +18,14 @@
# ~ along with easymacro. If not, see <https://www.gnu.org/licenses/>.
import getpass
import hashlib
import io
import logging
import os
import platform
import re
import shlex
import socket
import ssl
from string import Template
from socket import timeout
from urllib import parse
from urllib.request import Request, urlopen
@ -45,623 +36,14 @@ from com.sun.star.awt import Key, KeyEvent, KeyModifier
from com.sun.star.datatransfer import XTransferable, DataFlavor
from com.sun.star.io import IOException, XOutputStream
from com.sun.star.sheet import XRangeSelectionListener
from com.sun.star.container import NoSuchElementException
SALT = b'00a1bfb05353bb3fd8e7aa7fe5efdccc'
_EVENTS = {}
FILES = {
'CONFIG': 'zaz-{}.json',
}
DIRS = {}
def run_in_thread(fn):
"""Run any function in thread
:param fn: Any Python function (macro)
:type fn: Function instance
"""
def run(*k, **kw):
t = threading.Thread(target=fn, args=k, kwargs=kw)
t.start()
return t
return run
def _property_to_dict(values):
d = {v.Name: v.Value for v in values}
return d
def data_to_dict(data) -> dict:
"""Convert tuples, list, PropertyValue, NamedValue to dictionary
:param data: Dictionary of values
:type data: array of tuples, list, PropertyValue or NamedValue
:return: Dictionary
:rtype: dict
"""
d = {}
if not isinstance(data, (tuple, list)):
return d
if isinstance(data[0], (tuple, list)):
d = {r[0]: r[1] for r in data}
elif isinstance(data[0], (PropertyValue, NamedValue)):
d = _property_to_dict(data)
return d
def render(template, data):
s = Template(template)
return s.safe_substitute(**data)
# Classes
class Json(object):
"""Class for json data
"""
@classmethod
def dumps(cls, data: Any) -> str:
"""Dumps
:param data: Any data
:type data: Any
:return: Return string json
:rtype: str
"""
return json.dumps(data, indent=4, sort_keys=True)
@classmethod
def loads(cls, data: str) -> Any:
"""Loads
:param data: String data
:type data: str
:return: Return any object
:rtype: Any
"""
return json.loads(data)
class Macro(object):
"""Class for call macro
`See Scripting Framework <https://wiki.openoffice.org/wiki/Documentation/DevGuide/Scripting/Scripting_Framework_URI_Specification>`_
"""
@classmethod
def call(cls, args: dict, in_thread: bool=False):
"""Call any macro
:param args: Dictionary with macro location
:type args: dict
:param in_thread: If execute in thread
:type in_thread: bool
:return: Return None or result of call macro
:rtype: Any
"""
result = None
if in_thread:
t = threading.Thread(target=cls._call, args=(args,))
t.start()
else:
result = cls._call(args)
return result
@classmethod
def get_url_script(cls, args: dict):
library = args['library']
name = args['name']
language = args.get('language', 'Python')
location = args.get('location', 'user')
module = args.get('module', '.')
if language == 'Python':
module = '.py$'
elif language == 'Basic':
module = f".{module}."
if location == 'user':
location = 'application'
url = 'vnd.sun.star.script'
url = f'{url}:{library}{module}{name}?language={language}&location={location}'
return url
@classmethod
def _call(cls, args: dict):
url = cls.get_url_script(args)
args = args.get('args', ())
service = 'com.sun.star.script.provider.MasterScriptProviderFactory'
factory = create_instance(service)
script = factory.createScriptProvider('').getScript(url)
result = script.invoke(args, None, None)[0]
return result
class Shell(object):
"""Class for subprocess
`See Subprocess <https://docs.python.org/3.7/library/subprocess.html>`_
"""
@classmethod
def run(cls, command, capture=False, split=False):
"""Execute commands
:param command: Command to run
:type command: str
:param capture: If capture result of command
:type capture: bool
:param split: Some commands need split.
:type split: bool
:return: Result of command
:rtype: Any
"""
if split:
cmd = shlex.split(command)
result = subprocess.run(cmd, capture_output=capture, text=True, shell=IS_WIN)
if capture:
result = result.stdout
else:
result = result.returncode
else:
if capture:
result = subprocess.check_output(command, shell=True).decode()
else:
result = subprocess.Popen(command)
return result
@classmethod
def popen(cls, command):
"""Execute commands and return line by line
:param command: Command to run
:type command: str
:return: Result of command
:rtype: Any
"""
try:
proc = subprocess.Popen(shlex.split(command), shell=IS_WIN,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in proc.stdout:
yield line.decode().rstrip()
except Exception as e:
error(e)
yield (e.errno, e.strerror)
class Timer(object):
"""Class for timer thread"""
class TimerThread(threading.Thread):
def __init__(self, event, seconds, macro):
threading.Thread.__init__(self)
self._event = event
self._seconds = seconds
self._macro = macro
def run(self):
while not self._event.wait(self._seconds):
Macro.call(self._macro)
info('\tTimer stopped... ')
return
@classmethod
def exists(cls, name):
"""Validate in timer **name** exists
:param name: Timer name, it must be unique
:type name: str
:return: True if exists timer name
:rtype: bool
"""
global _EVENTS
return name in _EVENTS
@classmethod
def start(cls, name: str, seconds: float, macro: dict):
"""Start timer **name** every **seconds** and execute **macro**
:param name: Timer name, it must be unique
:type name: str
:param seconds: Seconds for wait
:type seconds: float
:param macro: Macro for execute
:type macro: dict
"""
global _EVENTS
_EVENTS[name] = threading.Event()
info(f"Timer '{name}' started, execute macro: '{macro['name']}'")
thread = cls.TimerThread(_EVENTS[name], seconds, macro)
thread.start()
return
@classmethod
def stop(cls, name: str):
"""Stop timer **name**
:param name: Timer name
:type name: str
"""
global _EVENTS
_EVENTS[name].set()
del _EVENTS[name]
return
@classmethod
def once(cls, name: str, seconds: float, macro: dict):
"""Start timer **name** only once in **seconds** and execute **macro**
:param name: Timer name, it must be unique
:type name: str
:param seconds: Seconds for wait before execute macro
:type seconds: float
:param macro: Macro for execute
:type macro: dict
"""
global _EVENTS
_EVENTS[name] = threading.Timer(seconds, Macro.call, (macro,))
_EVENTS[name].start()
info(f'Event: "{name}", started... execute in {seconds} seconds')
return
@classmethod
def cancel(cls, name: str):
"""Cancel timer **name** only once events.
:param name: Timer name, it must be unique
:type name: str
"""
global _EVENTS
if name in _EVENTS:
try:
_EVENTS[name].cancel()
del _EVENTS[name]
info(f'Cancel event: "{name}", ok...')
except Exception as e:
error(e)
else:
debug(f'Cancel event: "{name}", not exists...')
return
class Hash(object):
"""Class for hash
"""
@classmethod
def digest(cls, method: str, data: str, in_hex: bool=True):
"""Get digest from data with method
:param method: Digest method: md5, sha1, sha256, sha512, etc...
:type method: str
:param data: Data for get digest
:type data: str
:param in_hex: If True, get digest in hexadecimal, if False, get bytes
:type in_hex: bool
:return: bytes or hex digest
:rtype: bytes or str
"""
result = ''
obj = getattr(hashlib, method)(data.encode())
if in_hex:
result = obj.hexdigest()
else:
result = obj.digest()
return result
class Config(object):
"""Class for set and get configurations
"""
@classmethod
def set(cls, prefix: str, value: Any, key: str='') -> bool:
"""Save data config in user config like json
:param prefix: Unique prefix for this data
:type prefix: str
:param value: Value for save
:type value: Any
:param key: Key for value
:type key: str
:return: True if save correctly
:rtype: bool
"""
name_file = FILES['CONFIG'].format(prefix)
path = Paths.join(Paths.user_config, name_file)
data = value
if key:
data = cls.get(prefix)
data[key] = value
result = Paths.to_json(path, data)
return result
@classmethod
def get(cls, prefix: str, key: str='', default: Any={}) -> Any:
"""Get data config from user config like json
:param prefix: Unique prefix for this data
:type prefix: str
:param key: Key for value
:type key: str
:param default: Get if not exists key
:type default: Any
:return: data
:rtype: Any
"""
data = {}
name_file = FILES['CONFIG'].format(prefix)
path = Paths.join(Paths.user_config, name_file)
if not Paths.exists(path):
return data
data = Paths.from_json(path)
if key:
data = data.get(key, default)
return data
class Url(object):
"""Class for simple url open
"""
@classmethod
def _open(cls, url: str, data: Any=None, headers: dict={}, verify: bool=True, \
json: bool=False, timeout: int=TIMEOUT, method: str='GET') -> tuple:
"""URL Open"""
debug(url)
result = None
context = None
rheaders = {}
err = ''
if verify:
if not data is None:
if isinstance(data, str):
data = data.encode()
elif isinstance(data, dict):
data = parse.urlencode(data).encode('ascii')
else:
context = ssl._create_unverified_context()
try:
req = Request(url, data=data, headers=headers, method=method)
response = urlopen(req, timeout=timeout, context=context)
except HTTPError as e:
error(e)
err = str(e)
except URLError as e:
error(e.reason)
err = str(e.reason)
# ToDo
# ~ except timeout:
# ~ err = 'timeout'
# ~ error(err)
else:
rheaders = dict(response.info())
result = response.read().decode()
if json:
result = Json.loads(result)
return result, rheaders, err
@classmethod
def get(cls, url: str, data: Any=None, headers: dict={}, verify: bool=True, \
json: bool=False, timeout: int=TIMEOUT) -> tuple:
"""Method GET
:param url: Url to open
:type url: str
:return: result, headers and error
:rtype: tuple
"""
return cls._open(url, data, headers, verify, json, timeout)
# ToDo
@classmethod
def post(cls, url: str, data: Any=None, headers: dict={}, verify: bool=True, \
json: bool=False, timeout: int=TIMEOUT) -> tuple:
"""Method POST
"""
data = parse.urlencode(data).encode('ascii')
return cls._open(url, data, headers, verify, json, timeout, 'POST')
class Color(object):
"""Class for colors
`See Web Colors <https://en.wikipedia.org/wiki/Web_colors>`_
"""
COLORS = {
'aliceblue': 15792383,
'antiquewhite': 16444375,
'aqua': 65535,
'aquamarine': 8388564,
'azure': 15794175,
'beige': 16119260,
'bisque': 16770244,
'black': 0,
'blanchedalmond': 16772045,
'blue': 255,
'blueviolet': 9055202,
'brown': 10824234,
'burlywood': 14596231,
'cadetblue': 6266528,
'chartreuse': 8388352,
'chocolate': 13789470,
'coral': 16744272,
'cornflowerblue': 6591981,
'cornsilk': 16775388,
'crimson': 14423100,
'cyan': 65535,
'darkblue': 139,
'darkcyan': 35723,
'darkgoldenrod': 12092939,
'darkgray': 11119017,
'darkgreen': 25600,
'darkgrey': 11119017,
'darkkhaki': 12433259,
'darkmagenta': 9109643,
'darkolivegreen': 5597999,
'darkorange': 16747520,
'darkorchid': 10040012,
'darkred': 9109504,
'darksalmon': 15308410,
'darkseagreen': 9419919,
'darkslateblue': 4734347,
'darkslategray': 3100495,
'darkslategrey': 3100495,
'darkturquoise': 52945,
'darkviolet': 9699539,
'deeppink': 16716947,
'deepskyblue': 49151,
'dimgray': 6908265,
'dimgrey': 6908265,
'dodgerblue': 2003199,
'firebrick': 11674146,
'floralwhite': 16775920,
'forestgreen': 2263842,
'fuchsia': 16711935,
'gainsboro': 14474460,
'ghostwhite': 16316671,
'gold': 16766720,
'goldenrod': 14329120,
'gray': 8421504,
'grey': 8421504,
'green': 32768,
'greenyellow': 11403055,
'honeydew': 15794160,
'hotpink': 16738740,
'indianred': 13458524,
'indigo': 4915330,
'ivory': 16777200,
'khaki': 15787660,
'lavender': 15132410,
'lavenderblush': 16773365,
'lawngreen': 8190976,
'lemonchiffon': 16775885,
'lightblue': 11393254,
'lightcoral': 15761536,
'lightcyan': 14745599,
'lightgoldenrodyellow': 16448210,
'lightgray': 13882323,
'lightgreen': 9498256,
'lightgrey': 13882323,
'lightpink': 16758465,
'lightsalmon': 16752762,
'lightseagreen': 2142890,
'lightskyblue': 8900346,
'lightslategray': 7833753,
'lightslategrey': 7833753,
'lightsteelblue': 11584734,
'lightyellow': 16777184,
'lime': 65280,
'limegreen': 3329330,
'linen': 16445670,
'magenta': 16711935,
'maroon': 8388608,
'mediumaquamarine': 6737322,
'mediumblue': 205,
'mediumorchid': 12211667,
'mediumpurple': 9662683,
'mediumseagreen': 3978097,
'mediumslateblue': 8087790,
'mediumspringgreen': 64154,
'mediumturquoise': 4772300,
'mediumvioletred': 13047173,
'midnightblue': 1644912,
'mintcream': 16121850,
'mistyrose': 16770273,
'moccasin': 16770229,
'navajowhite': 16768685,
'navy': 128,
'oldlace': 16643558,
'olive': 8421376,
'olivedrab': 7048739,
'orange': 16753920,
'orangered': 16729344,
'orchid': 14315734,
'palegoldenrod': 15657130,
'palegreen': 10025880,
'paleturquoise': 11529966,
'palevioletred': 14381203,
'papayawhip': 16773077,
'peachpuff': 16767673,
'peru': 13468991,
'pink': 16761035,
'plum': 14524637,
'powderblue': 11591910,
'purple': 8388736,
'red': 16711680,
'rosybrown': 12357519,
'royalblue': 4286945,
'saddlebrown': 9127187,
'salmon': 16416882,
'sandybrown': 16032864,
'seagreen': 3050327,
'seashell': 16774638,
'sienna': 10506797,
'silver': 12632256,
'skyblue': 8900331,
'slateblue': 6970061,
'slategray': 7372944,
'slategrey': 7372944,
'snow': 16775930,
'springgreen': 65407,
'steelblue': 4620980,
'tan': 13808780,
'teal': 32896,
'thistle': 14204888,
'tomato': 16737095,
'turquoise': 4251856,
'violet': 15631086,
'wheat': 16113331,
'white': 16777215,
'whitesmoke': 16119285,
'yellow': 16776960,
'yellowgreen': 10145074,
}
def _get_color(self, index):
if isinstance(index, tuple):
color = (index[0] << 16) + (index[1] << 8) + index[2]
else:
if index[0] == '#':
r, g, b = bytes.fromhex(index[1:])
color = (r << 16) + (g << 8) + b
else:
color = self.COLORS.get(index.lower(), -1)
return color
def __call__(self, index):
return self._get_color(index)
def __getitem__(self, index):
return self._get_color(index)
COLOR_ON_FOCUS = Color()('LightYellow')
class ClipBoard(object):
SERVICE = 'com.sun.star.datatransfer.clipboard.SystemClipboard'
CLIPBOARD_FORMAT_TEXT = 'text/plain;charset=utf-16'
@ -2372,14 +1754,6 @@ class LODocIDE(LODocument):
def __getattr__(name):
classes = {
'json': Json,
'macro': Macro,
'shell': Shell,
'timer': Timer,
'hash': Hash,
'config': Config,
'url': Url,
'color': Color(),
'io': IOStream,
'clipboard': ClipBoard,
'shortcuts': LOShortCuts(),

View File

@ -9,11 +9,18 @@ from .easydocs import LODocuments
def __getattr__(name):
classes = {
'active': LODocuments().active,
'color': Color(),
'config': Config,
'dates': Dates,
'dialog': LODialog,
'email': Email,
'hash': Hash,
'inspect': LOInspect,
'macro': Macro,
'paths': Paths,
'url': URL,
'shell': Shell,
'timer': Timer,
}
if name in classes:

View File

@ -7,7 +7,7 @@ from com.sun.star.view.SelectionType import SINGLE, MULTI, RANGE
from .easyevents import *
from .easydocs import LODocuments
from .easymain import log, TITLE, create_instance, BaseObject
from .easytools import Paths, Services, LOInspect
from .easytools import Color, LOInspect, Paths, Services
from .easytools import _, set_properties
@ -17,6 +17,7 @@ __all__ = [
]
COLOR_ON_FOCUS = Color()('LightYellow')
SEPARATION = 5
MODELS = {
'button': 'com.sun.star.awt.UnoControlButtonModel',

View File

@ -7,10 +7,10 @@ import os
import platform
import sys
from typing import Any
from typing import Any, Union
import uno
from com.sun.star.beans import PropertyValue
from com.sun.star.beans import PropertyValue, NamedValue
__all__ = [
@ -26,6 +26,8 @@ __all__ = [
'USER',
'VERSION',
'create_instance',
'data_to_dict',
'dict_to_property',
'get_app_config',
]
@ -143,6 +145,24 @@ def dict_to_property(values: dict, uno_any: bool=False):
return ps
def data_to_dict(data: Union[tuple, list]) -> dict:
"""Convert tuples, list, PropertyValue, NamedValue to dictionary
:param data: Iterator of values
:type data: array of tuples, list, PropertyValue or NamedValue
:return: Dictionary
:rtype: dict
"""
d = {}
if isinstance(data[0], (tuple, list)):
d = {r[0]: r[1] for r in data}
elif isinstance(data[0], (PropertyValue, NamedValue)):
d = {r.Name: r.Value for r in data}
return d
class BaseObject():
def __init__(self, obj):

View File

@ -2,9 +2,11 @@
import csv
import datetime
import hashlib
import json
import os
import re
import shlex
import shutil
import subprocess
import sys
@ -15,6 +17,7 @@ import time
from functools import wraps
from pathlib import Path
from pprint import pprint
from string import Template
from typing import Any, Union
import mailbox
@ -40,29 +43,46 @@ from .easymain import (
from .easyuno import MessageBoxType
from .easydocs import LODocuments
from .messages import MESSAGES
from .zazplus import mureq
__all__ = [
'Color',
'Config',
'Dates',
'Email',
'Hash',
'LOInspect',
'Macro',
'Paths',
'URL',
'Shell',
'Timer',
'catch_exception',
'debug',
'error',
'info',
'mri',
'msgbox',
'render',
'run_in_thread',
'save_log',
'sleep',
]
TIMEOUT = 10
PYTHON = 'python'
if IS_WIN:
PYTHON = 'python.exe'
FILES = {
'CONFIG': 'zaz-{}.json',
}
_EVENTS = {}
def _(msg):
if LANG == 'en':
@ -276,6 +296,24 @@ def sleep(seconds: int):
return
def render(template, data):
s = Template(template)
return s.safe_substitute(**data)
def run_in_thread(fn: Any) -> Any:
"""Run any function in thread
:param fn: Any Python function (macro)
:type fn: Function instance
"""
def run(*k, **kw):
t = threading.Thread(target=fn, args=k, kwargs=kw)
t.start()
return t
return run
def set_properties(model, properties):
if 'X' in properties:
properties['PositionX'] = properties.pop('X')
@ -481,6 +519,15 @@ class Dates(object):
"""
return datetime.datetime.now().replace(microsecond=0)
@classproperty
def now_time(cls):
"""Current local time
:return: Return the current local time
:rtype: time
"""
return cls.now.time()
@classproperty
def today(cls):
"""Current local date
@ -1318,13 +1365,13 @@ class Email():
return False
return False
def _body(self, msg):
def _body_validate(self, msg):
body = msg.replace('\n', '<BR>')
return body
def send(self, message):
# ~ file_name = 'attachment; filename={}'
email = MIMEMultipart()
email = MIMEMultipart('alternative')
email['From'] = self._sender
email['To'] = message['to']
email['Cc'] = message.get('cc', '')
@ -1332,7 +1379,11 @@ class Email():
email['Date'] = formatdate(localtime=True)
if message.get('confirm', False):
email['Disposition-Notification-To'] = email['From']
email.attach(MIMEText(self._body(message['body']), 'html'))
if 'body_text' in message:
email.attach(MIMEText(message['body_text'], 'plain', 'utf-8'))
if 'body' in message:
body = self._body_validate(message['body'])
email.attach(MIMEText(body, 'html', 'utf-8'))
paths = message.get('files', ())
if isinstance(paths, str):
@ -1407,3 +1458,471 @@ class Email():
t = threading.Thread(target=cls._send_email, args=(server, messages))
t.start()
return
class Macro(object):
"""Class for call macro
`See Scripting Framework <https://wiki.documentfoundation.org/Documentation/DevGuide/Scripting_Framework#Scripting_Framework_URI_Specification>`_
"""
@classmethod
def call(cls, args: dict, in_thread: bool=False):
"""Call any macro
:param args: Dictionary with macro location
:type args: dict
:param in_thread: If execute in thread
:type in_thread: bool
:return: Return None or result of call macro
:rtype: Any
"""
result = None
if in_thread:
t = threading.Thread(target=cls._call, args=(args,))
t.start()
else:
result = cls._call(args)
return result
@classmethod
def get_url_script(cls, args: dict):
library = args['library']
name = args['name']
language = args.get('language', 'Python')
location = args.get('location', 'user')
module = args.get('module', '.')
if language == 'Python':
module = '.py$'
elif language == 'Basic':
module = f".{module}."
if location == 'user':
location = 'application'
url = 'vnd.sun.star.script'
url = f'{url}:{library}{module}{name}?language={language}&location={location}'
return url
@classmethod
def _call(cls, args: dict):
url = cls.get_url_script(args)
args = args.get('args', ())
service = 'com.sun.star.script.provider.MasterScriptProviderFactory'
factory = create_instance(service)
script = factory.createScriptProvider('').getScript(url)
result = script.invoke(args, None, None)[0]
return result
class Shell(object):
"""Class for subprocess
`See Subprocess <https://docs.python.org/3.7/library/subprocess.html>`_
"""
@classmethod
def run(cls, command: str, capture: bool=False, split: bool=False):
"""Execute commands
:param command: Command to run
:type command: str
:param capture: If capture result of command
:type capture: bool
:param split: Some commands need split.
:type split: bool
:return: Result of command
:rtype: Any
"""
if split:
cmd = shlex.split(command)
result = subprocess.run(cmd, capture_output=capture, text=True, shell=IS_WIN)
if capture:
result = result.stdout
else:
result = result.returncode
else:
if capture:
result = subprocess.check_output(command, shell=True).decode()
else:
result = subprocess.Popen(command)
return result
@classmethod
def popen(cls, command: str):
"""Execute commands and return line by line
:param command: Command to run
:type command: str
:return: Result of command
:rtype: Any
"""
try:
proc = subprocess.Popen(shlex.split(command), shell=IS_WIN,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in proc.stdout:
yield line.decode().rstrip()
except Exception as e:
error(e)
yield str(e)
class Hash(object):
"""Class for hash
"""
@classmethod
def digest(cls, method: str, data: str, in_hex: bool=True):
"""Get digest from data with method
:param method: Digest method: md5, sha1, sha256, sha512, etc...
:type method: str
:param data: Data for get digest
:type data: str
:param in_hex: If True, get digest in hexadecimal, if False, get bytes
:type in_hex: bool
:return: bytes or hex digest
:rtype: bytes or str
"""
result = ''
obj = getattr(hashlib, method)(data.encode())
if in_hex:
result = obj.hexdigest()
else:
result = obj.digest()
return result
class Config(object):
"""Class for set and get configurations
"""
@classmethod
def set(cls, prefix: str, values: Any, key: str='') -> bool:
"""Save data config in user config like json
:param prefix: Unique prefix for this data
:type prefix: str
:param values: Values for save
:type values: Any
:param key: Key for value
:type key: str
:return: True if save correctly
:rtype: bool
"""
name_file = FILES['CONFIG'].format(prefix)
path = Paths.join(Paths.user_config, name_file)
data = values
if key:
data = cls.get(prefix)
data[key] = values
result = Paths.save_json(path, data)
return result
@classmethod
def get(cls, prefix: str, key: str='') -> Any:
"""Get data config from user config like json
:param prefix: Unique prefix for this data
:type prefix: str
:param key: Key for value
:type key: str
:return: data
:rtype: Any
"""
data = {}
name_file = FILES['CONFIG'].format(prefix)
path = Paths.join(Paths.user_config, name_file)
if not Paths.exists(path):
return data
data = Paths.read_json(path)
if key and key in data:
data = data[key]
return data
class Color():
"""Class for colors
`See Web Colors <https://en.wikipedia.org/wiki/Web_colors>`_
"""
COLORS = {
'aliceblue': 15792383,
'antiquewhite': 16444375,
'aqua': 65535,
'aquamarine': 8388564,
'azure': 15794175,
'beige': 16119260,
'bisque': 16770244,
'black': 0,
'blanchedalmond': 16772045,
'blue': 255,
'blueviolet': 9055202,
'brown': 10824234,
'burlywood': 14596231,
'cadetblue': 6266528,
'chartreuse': 8388352,
'chocolate': 13789470,
'coral': 16744272,
'cornflowerblue': 6591981,
'cornsilk': 16775388,
'crimson': 14423100,
'cyan': 65535,
'darkblue': 139,
'darkcyan': 35723,
'darkgoldenrod': 12092939,
'darkgray': 11119017,
'darkgreen': 25600,
'darkgrey': 11119017,
'darkkhaki': 12433259,
'darkmagenta': 9109643,
'darkolivegreen': 5597999,
'darkorange': 16747520,
'darkorchid': 10040012,
'darkred': 9109504,
'darksalmon': 15308410,
'darkseagreen': 9419919,
'darkslateblue': 4734347,
'darkslategray': 3100495,
'darkslategrey': 3100495,
'darkturquoise': 52945,
'darkviolet': 9699539,
'deeppink': 16716947,
'deepskyblue': 49151,
'dimgray': 6908265,
'dimgrey': 6908265,
'dodgerblue': 2003199,
'firebrick': 11674146,
'floralwhite': 16775920,
'forestgreen': 2263842,
'fuchsia': 16711935,
'gainsboro': 14474460,
'ghostwhite': 16316671,
'gold': 16766720,
'goldenrod': 14329120,
'gray': 8421504,
'grey': 8421504,
'green': 32768,
'greenyellow': 11403055,
'honeydew': 15794160,
'hotpink': 16738740,
'indianred': 13458524,
'indigo': 4915330,
'ivory': 16777200,
'khaki': 15787660,
'lavender': 15132410,
'lavenderblush': 16773365,
'lawngreen': 8190976,
'lemonchiffon': 16775885,
'lightblue': 11393254,
'lightcoral': 15761536,
'lightcyan': 14745599,
'lightgoldenrodyellow': 16448210,
'lightgray': 13882323,
'lightgreen': 9498256,
'lightgrey': 13882323,
'lightpink': 16758465,
'lightsalmon': 16752762,
'lightseagreen': 2142890,
'lightskyblue': 8900346,
'lightslategray': 7833753,
'lightslategrey': 7833753,
'lightsteelblue': 11584734,
'lightyellow': 16777184,
'lime': 65280,
'limegreen': 3329330,
'linen': 16445670,
'magenta': 16711935,
'maroon': 8388608,
'mediumaquamarine': 6737322,
'mediumblue': 205,
'mediumorchid': 12211667,
'mediumpurple': 9662683,
'mediumseagreen': 3978097,
'mediumslateblue': 8087790,
'mediumspringgreen': 64154,
'mediumturquoise': 4772300,
'mediumvioletred': 13047173,
'midnightblue': 1644912,
'mintcream': 16121850,
'mistyrose': 16770273,
'moccasin': 16770229,
'navajowhite': 16768685,
'navy': 128,
'oldlace': 16643558,
'olive': 8421376,
'olivedrab': 7048739,
'orange': 16753920,
'orangered': 16729344,
'orchid': 14315734,
'palegoldenrod': 15657130,
'palegreen': 10025880,
'paleturquoise': 11529966,
'palevioletred': 14381203,
'papayawhip': 16773077,
'peachpuff': 16767673,
'peru': 13468991,
'pink': 16761035,
'plum': 14524637,
'powderblue': 11591910,
'purple': 8388736,
'red': 16711680,
'rosybrown': 12357519,
'royalblue': 4286945,
'saddlebrown': 9127187,
'salmon': 16416882,
'sandybrown': 16032864,
'seagreen': 3050327,
'seashell': 16774638,
'sienna': 10506797,
'silver': 12632256,
'skyblue': 8900331,
'slateblue': 6970061,
'slategray': 7372944,
'slategrey': 7372944,
'snow': 16775930,
'springgreen': 65407,
'steelblue': 4620980,
'tan': 13808780,
'teal': 32896,
'thistle': 14204888,
'tomato': 16737095,
'turquoise': 4251856,
'violet': 15631086,
'wheat': 16113331,
'white': 16777215,
'whitesmoke': 16119285,
'yellow': 16776960,
'yellowgreen': 10145074,
}
def _get_color(self, index):
if isinstance(index, tuple):
color = (index[0] << 16) + (index[1] << 8) + index[2]
else:
if index[0] == '#':
r, g, b = bytes.fromhex(index[1:])
color = (r << 16) + (g << 8) + b
else:
color = self.COLORS.get(index.lower(), -1)
return color
def __call__(self, index):
return self._get_color(index)
def __getitem__(self, index):
return self._get_color(index)
class Timer(object):
"""Class for timer thread"""
class TimerThread(threading.Thread):
def __init__(self, event, seconds, macro):
threading.Thread.__init__(self)
self._event = event
self._seconds = seconds
self._macro = macro
def run(self):
while not self._event.wait(self._seconds):
Macro.call(self._macro)
info('\tTimer stopped... ')
return
@classmethod
def exists(cls, name):
"""Validate in timer **name** exists
:param name: Timer name, it must be unique
:type name: str
:return: True if exists timer name
:rtype: bool
"""
global _EVENTS
return name in _EVENTS
@classmethod
def start(cls, name: str, seconds: float, macro: dict):
"""Start timer **name** every **seconds** and execute **macro**
:param name: Timer name, it must be unique
:type name: str
:param seconds: Seconds for wait
:type seconds: float
:param macro: Macro for execute
:type macro: dict
"""
global _EVENTS
_EVENTS[name] = threading.Event()
info(f"Timer '{name}' started, execute macro: '{macro['name']}'")
thread = cls.TimerThread(_EVENTS[name], seconds, macro)
thread.start()
return
@classmethod
def stop(cls, name: str):
"""Stop timer **name**
:param name: Timer name
:type name: str
"""
global _EVENTS
_EVENTS[name].set()
del _EVENTS[name]
return
@classmethod
def once(cls, name: str, seconds: float, macro: dict):
"""Start timer **name** only once in **seconds** and execute **macro**
:param name: Timer name, it must be unique
:type name: str
:param seconds: Seconds for wait before execute macro
:type seconds: float
:param macro: Macro for execute
:type macro: dict
"""
global _EVENTS
_EVENTS[name] = threading.Timer(seconds, Macro.call, (macro,))
_EVENTS[name].start()
info(f'Event: "{name}", started... execute in {seconds} seconds')
return
@classmethod
def cancel(cls, name: str):
"""Cancel timer **name** only once events.
:param name: Timer name, it must be unique
:type name: str
"""
global _EVENTS
if name in _EVENTS:
try:
_EVENTS[name].cancel()
del _EVENTS[name]
info(f'Cancel event: "{name}", ok...')
except Exception as e:
error(e)
else:
debug(f'Cancel event: "{name}", not exists...')
return
class URL(object):
"""Class for simple url open
"""
@classmethod
def get(cls, url: str, **kwargs):
return mureq.get(url, **kwargs)
@classmethod
def post(cls, url: str, body=None, **kwargs):
return mureq.post(url, body, **kwargs)

View File

@ -0,0 +1,2 @@
#!/usr/bin/env python3

View File

@ -0,0 +1,393 @@
"""
mureq is a replacement for python-requests, intended to be vendored
in-tree by Linux systems software and other lightweight applications.
mureq is copyright 2021 by its contributors and is released under the
0BSD ("zero-clause BSD") license.
"""
import contextlib
import io
import os.path
import socket
import ssl
import sys
import urllib.parse
from http.client import HTTPConnection, HTTPSConnection, HTTPMessage, HTTPException
__version__ = '0.2.0'
__all__ = ['HTTPException', 'TooManyRedirects', 'Response',
'yield_response', 'request', 'get', 'post', 'head', 'put', 'patch', 'delete']
DEFAULT_TIMEOUT = 15.0
# e.g. "Python 3.8.10"
DEFAULT_UA = "Python " + sys.version.split()[0]
def request(method, url, *, read_limit=None, **kwargs):
"""request performs an HTTP request and reads the entire response body.
:param str method: HTTP method to request (e.g. 'GET', 'POST')
:param str url: URL to request
:param read_limit: maximum number of bytes to read from the body, or None for no limit
:type read_limit: int or None
:param kwargs: optional arguments defined by yield_response
:return: Response object
:rtype: Response
:raises: HTTPException
"""
with yield_response(method, url, **kwargs) as response:
try:
body = response.read(read_limit)
except HTTPException:
raise
except IOError as e:
raise HTTPException(str(e)) from e
return Response(response.url, response.status, _prepare_incoming_headers(response.headers), body)
def get(url, **kwargs):
"""get performs an HTTP GET request."""
return request('GET', url=url, **kwargs)
def post(url, body=None, **kwargs):
"""post performs an HTTP POST request."""
return request('POST', url=url, body=body, **kwargs)
def head(url, **kwargs):
"""head performs an HTTP HEAD request."""
return request('HEAD', url=url, **kwargs)
def put(url, body=None, **kwargs):
"""put performs an HTTP PUT request."""
return request('PUT', url=url, body=body, **kwargs)
def patch(url, body=None, **kwargs):
"""patch performs an HTTP PATCH request."""
return request('PATCH', url=url, body=body, **kwargs)
def delete(url, **kwargs):
"""delete performs an HTTP DELETE request."""
return request('DELETE', url=url, **kwargs)
@contextlib.contextmanager
def yield_response(method, url, *, unix_socket=None, timeout=DEFAULT_TIMEOUT, headers=None,
params=None, body=None, form=None, json=None, verify=True, source_address=None,
max_redirects=None, ssl_context=None):
"""yield_response is a low-level API that exposes the actual
http.client.HTTPResponse via a contextmanager.
Note that unlike mureq.Response, http.client.HTTPResponse does not
automatically canonicalize multiple appearances of the same header by
joining them together with a comma delimiter. To retrieve canonicalized
headers from the response, use response.getheader():
https://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.getheader
:param str method: HTTP method to request (e.g. 'GET', 'POST')
:param str url: URL to request
:param unix_socket: path to Unix domain socket to query, or None for a normal TCP request
:type unix_socket: str or None
:param timeout: timeout in seconds, or None for no timeout (default: 15 seconds)
:type timeout: float or None
:param headers: HTTP headers as a mapping or list of key-value pairs
:param params: parameters to be URL-encoded and added to the query string, as a mapping or list of key-value pairs
:param body: payload body of the request
:type body: bytes or None
:param form: parameters to be form-encoded and sent as the payload body, as a mapping or list of key-value pairs
:param json: object to be serialized as JSON and sent as the payload body
:param bool verify: whether to verify TLS certificates (default: True)
:param source_address: source address to bind to for TCP
:type source_address: str or tuple(str, int) or None
:param max_redirects: maximum number of redirects to follow, or None (the default) for no redirection
:type max_redirects: int or None
:param ssl_context: TLS config to control certificate validation, or None for default behavior
:type ssl_context: ssl.SSLContext or None
:return: http.client.HTTPResponse, yielded as context manager
:rtype: http.client.HTTPResponse
:raises: HTTPException
"""
method = method.upper()
headers = _prepare_outgoing_headers(headers)
enc_params = _prepare_params(params)
body = _prepare_body(body, form, json, headers)
visited_urls = []
while max_redirects is None or len(visited_urls) <= max_redirects:
url, conn, path = _prepare_request(method, url, enc_params=enc_params, timeout=timeout, unix_socket=unix_socket, verify=verify, source_address=source_address, ssl_context=ssl_context)
enc_params = '' # don't reappend enc_params if we get redirected
visited_urls.append(url)
try:
try:
conn.request(method, path, headers=headers, body=body)
response = conn.getresponse()
except HTTPException:
raise
except IOError as e:
# wrap any IOError that is not already an HTTPException
# in HTTPException, exposing a uniform API for remote errors
raise HTTPException(str(e)) from e
redirect_url = _check_redirect(url, response.status, response.headers)
if max_redirects is None or redirect_url is None:
response.url = url # https://bugs.python.org/issue42062
yield response
return
else:
url = redirect_url
if response.status == 303:
# 303 See Other: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/303
method = 'GET'
finally:
conn.close()
raise TooManyRedirects(visited_urls)
class Response:
"""Response contains a completely consumed HTTP response.
:ivar str url: the retrieved URL, indicating whether a redirection occurred
:ivar int status_code: the HTTP status code
:ivar http.client.HTTPMessage headers: the HTTP headers
:ivar bytes body: the payload body of the response
"""
__slots__ = ('url', 'status_code', 'headers', 'body')
def __init__(self, url, status_code, headers, body):
self.url, self.status_code, self.headers, self.body = url, status_code, headers, body
def __repr__(self):
return f"Response(status_code={self.status_code:d})"
@property
def ok(self):
"""ok returns whether the response had a successful status code
(anything other than a 40x or 50x)."""
return not (400 <= self.status_code < 600)
@property
def content(self):
"""content returns the response body (the `body` member). This is an
alias for compatibility with requests.Response."""
return self.body
def raise_for_status(self):
"""raise_for_status checks the response's success code, raising an
exception for error codes."""
if not self.ok:
raise HTTPErrorStatus(self.status_code)
def json(self):
"""Attempts to deserialize the response body as UTF-8 encoded JSON."""
import json as jsonlib
return jsonlib.loads(self.body)
def _debugstr(self):
buf = io.StringIO()
print("HTTP", self.status_code, file=buf)
for k, v in self.headers.items():
print(f"{k}: {v}", file=buf)
print(file=buf)
try:
print(self.body.decode('utf-8'), file=buf)
except UnicodeDecodeError:
print(f"<{len(self.body)} bytes binary data>", file=buf)
return buf.getvalue()
class TooManyRedirects(HTTPException):
"""TooManyRedirects is raised when automatic following of redirects was
enabled, but the server redirected too many times without completing."""
pass
class HTTPErrorStatus(HTTPException):
"""HTTPErrorStatus is raised by Response.raise_for_status() to indicate an
HTTP error code (a 40x or a 50x). Note that a well-formed response with an
error code does not result in an exception unless raise_for_status() is
called explicitly.
"""
def __init__(self, status_code):
self.status_code = status_code
def __str__(self):
return f"HTTP response returned error code {self.status_code:d}"
# end public API, begin internal implementation details
_JSON_CONTENTTYPE = 'application/json'
_FORM_CONTENTTYPE = 'application/x-www-form-urlencoded'
class UnixHTTPConnection(HTTPConnection):
"""UnixHTTPConnection is a subclass of HTTPConnection that connects to a
Unix domain stream socket instead of a TCP address.
"""
def __init__(self, path, timeout=DEFAULT_TIMEOUT):
super(UnixHTTPConnection, self).__init__('localhost', timeout=timeout)
self._unix_path = path
def connect(self):
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
try:
sock.settimeout(self.timeout)
sock.connect(self._unix_path)
except Exception:
sock.close()
raise
self.sock = sock
def _check_redirect(url, status, response_headers):
"""Return the URL to redirect to, or None for no redirection."""
if status not in (301, 302, 303, 307, 308):
return None
location = response_headers.get('Location')
if not location:
return None
parsed_location = urllib.parse.urlparse(location)
if parsed_location.scheme:
# absolute URL
return location
old_url = urllib.parse.urlparse(url)
if location.startswith('/'):
# absolute path on old hostname
return urllib.parse.urlunparse((old_url.scheme, old_url.netloc,
parsed_location.path, parsed_location.params,
parsed_location.query, parsed_location.fragment))
# relative path on old hostname
old_dir, _old_file = os.path.split(old_url.path)
new_path = os.path.join(old_dir, location)
return urllib.parse.urlunparse((old_url.scheme, old_url.netloc,
new_path, parsed_location.params,
parsed_location.query, parsed_location.fragment))
def _prepare_outgoing_headers(headers):
if headers is None:
headers = HTTPMessage()
elif not isinstance(headers, HTTPMessage):
new_headers = HTTPMessage()
if hasattr(headers, 'items'):
iterator = headers.items()
else:
iterator = iter(headers)
for k, v in iterator:
new_headers[k] = v
headers = new_headers
_setdefault_header(headers, 'User-Agent', DEFAULT_UA)
return headers
# XXX join multi-headers together so that get(), __getitem__(),
# etc. behave intuitively, then stuff them back in an HTTPMessage.
def _prepare_incoming_headers(headers):
headers_dict = {}
for k, v in headers.items():
headers_dict.setdefault(k, []).append(v)
result = HTTPMessage()
# note that iterating over headers_dict preserves the original
# insertion order in all versions since Python 3.6:
for k, vlist in headers_dict.items():
result[k] = ','.join(vlist)
return result
def _setdefault_header(headers, name, value):
if name not in headers:
headers[name] = value
def _prepare_body(body, form, json, headers):
if body is not None:
if not isinstance(body, bytes):
raise TypeError('body must be bytes or None', type(body))
return body
if json is not None:
_setdefault_header(headers, 'Content-Type', _JSON_CONTENTTYPE)
import json as jsonlib
return jsonlib.dumps(json).encode('utf-8')
if form is not None:
_setdefault_header(headers, 'Content-Type', _FORM_CONTENTTYPE)
return urllib.parse.urlencode(form, doseq=True)
return None
def _prepare_params(params):
if params is None:
return ''
return urllib.parse.urlencode(params, doseq=True)
def _prepare_request(method, url, *, enc_params='', timeout=DEFAULT_TIMEOUT, source_address=None, unix_socket=None, verify=True, ssl_context=None):
"""Parses the URL, returns the path and the right HTTPConnection subclass."""
parsed_url = urllib.parse.urlparse(url)
is_unix = (unix_socket is not None)
scheme = parsed_url.scheme.lower()
if scheme.endswith('+unix'):
scheme = scheme[:-5]
is_unix = True
if scheme == 'https':
raise ValueError("https+unix is not implemented")
if scheme not in ('http', 'https'):
raise ValueError("unrecognized scheme", scheme)
is_https = (scheme == 'https')
host = parsed_url.hostname
port = 443 if is_https else 80
if parsed_url.port:
port = parsed_url.port
if is_unix and unix_socket is None:
unix_socket = urllib.parse.unquote(parsed_url.netloc)
path = parsed_url.path
if parsed_url.query:
if enc_params:
path = f'{path}?{parsed_url.query}&{enc_params}'
else:
path = f'{path}?{parsed_url.query}'
else:
if enc_params:
path = f'{path}?{enc_params}'
else:
pass # just parsed_url.path in this case
if isinstance(source_address, str):
source_address = (source_address, 0)
if is_unix:
conn = UnixHTTPConnection(unix_socket, timeout=timeout)
elif is_https:
if ssl_context is None:
ssl_context = ssl.create_default_context()
if not verify:
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE
conn = HTTPSConnection(host, port, source_address=source_address, timeout=timeout,
context=ssl_context)
else:
conn = HTTPConnection(host, port, source_address=source_address, timeout=timeout)
munged_url = urllib.parse.urlunparse((parsed_url.scheme, parsed_url.netloc,
path, parsed_url.params,
'', parsed_url.fragment))
return munged_url, conn, path