Wikisource
eswikisource
https://es.wikisource.org/wiki/Portada
MediaWiki 1.47.0-wmf.2
first-letter
Medio
Especial
Discusión
Usuario
Usuario discusión
Wikisource
Wikisource discusión
Archivo
Archivo discusión
MediaWiki
MediaWiki discusión
Plantilla
Plantilla discusión
Ayuda
Ayuda discusión
Categoría
Categoría discusión
Portal
Portal discusión
Página
Página Discusión
Índice
Índice Discusión
Autor
Autor discusión
TimedText
TimedText talk
Módulo
Módulo discusión
Evento
Evento discusión
MediaWiki:Recentchangestext
8
913
1653857
1610200
2026-05-14T22:02:40Z
Aleator
587
wikinews (RIP)
1653857
wikitext
text/x-wiki
<div class="plainlinks" style="text-align: left; font-size:90%;">
<u>''Páginas de ayuda:'' </u>
[[Wikisource:¿Qué es Wikisource?|¿Qué es Wikisource?]] '''•''' [[Wikisource:Sobre Wikisource|Acerca del proyecto]] '''•'''
[[Wikisource:Ayuda|Ayuda]] '''•'''
[[Wikisource:Consultas|Consultas]]
<u>''Enlaces útiles:''</u>
[[Wikisource:Café|Café]] '''•'''
[[Wikisource:Portal de la comunidad|Portal de la comunidad]] '''•'''
[[Wikisource:Plantillas|Plantillas]] '''•'''
[[Wikisource:Estadísticas|Estadísticas]] '''•'''
[[:Plantilla:Galería|Agregar un texto nuevo a la portada]] '''•'''
[[Ayuda:Páginas de transcripción|Páginas de transcripción]]
<u>''Páginas:''</u>
[[Especial:Newpages|Nuevas]] '''•'''
Para [[:Categoría:Wikisource:Páginas para borrar|borrar]] '''•'''
[[:Categoría:Varios|arreglar/mejorar]] '''•'''
[[Wikisource:Páginas sospechosas de violar copyright|Con copyright dudoso]] '''•'''
[[Wikisource:Categoría de las páginas|Cómo categorizar]] '''•'''
[[:Categoría:Índices alfabéticos|Índices para búsqueda]] '''•'''
[[Wikisource:Políticas de bloqueo de páginas|Páginas protegidas]]
<u>''Otros proyectos:''</u>
[//wikisource.org/wiki/Special:Recentchanges Wikisource multilingüe] '''•'''
[[meta:Special:Recentchanges|Meta]] '''•'''
[[w:Special:Recentchanges|Wikipedia]] '''•'''
[[wikt:Special:Recentchanges|Wikcionario]] '''•'''
[[q:Special:Recentchanges|Wikiquote]] '''•'''
[[b:Special:Recentchanges|Wikilibros]] '''•'''
[[commons:Special:Recentchanges|Commons]] '''•'''
[[wikispecies:Special:Recentchanges|Wikiespecies]] '''•'''
[[v:Special:Recentchanges|Wikiversidad]] '''•'''
[[voy:Special:Recentchanges|Wikiviajes]] '''•'''
[[d:Special:Recentchanges|Wikidata]]
'''-''' Actualmente hay {{NUMBEROFARTICLES}} páginas.
</div>
<!-- interwikis aquí -->
[[ar:Special:Recentchanges]]
[[as:Special:Recentchanges]]
[[az:Special:Recentchanges]]
[[ban:Special:Recentchanges]]
[[be:Special:Recentchanges]]
[[bg:Special:Recentchanges]]
[[bn:Special:Recentchanges]]
[[br:Special:Recentchanges]]
[[bs:Special:Recentchanges]]
[[ca:Special:Recentchanges]]
[[cs:Special:Recentchanges]]
[[cy:Special:Recentchanges]]
[[da:Special:Recentchanges]]
[[de:Special:Recentchanges]]
[[el:Special:Recentchanges]]
[[en:Special:Recentchanges]]
[[eo:Special:Recentchanges]]
[[et:Special:Recentchanges]]
[[eu:Special:Recentchanges]]
[[fa:Special:Recentchanges]]
[[fi:Special:Recentchanges]]
[[fo:Special:Recentchanges]]
[[fr:Special:Recentchanges]]
[[gl:Special:Recentchanges]]
[[gu:Special:Recentchanges]]
[[he:Special:Recentchanges]]
[[hi:Special:Recentchanges]]
[[hr:Special:Recentchanges]]
[[ht:Special:Recentchanges]]
[[hu:Special:Recentchanges]]
[[hy:Special:Recentchanges]]
[[id:Special:Recentchanges]]
[[is:Special:Recentchanges]]
[[it:Special:Recentchanges]]
[[ja:Special:Recentchanges]]
[[jv:Special:Recentchanges]]
[[kn:Special:Recentchanges]]
[[ko:Special:Recentchanges]]
[[la:Special:Recentchanges]]
[[li:Special:Recentchanges]]
[[lij:Special:Recentchanges]]
[[lt:Special:Recentchanges]]
[[mk:Special:Recentchanges]]
[[ml:Special:Recentchanges]]
[[mr:Special:Recentchanges]]
[[nap:Special:Recentchanges]]
[[nl:Special:Recentchanges]]
[[no:Special:Recentchanges]]
[[or:Special:Recentchanges]]
[[pa:Special:Recentchanges]]
[[pl:Special:Recentchanges]]
[[pms:Special:Recentchanges]]
[[pt:Special:Recentchanges]]
[[ro:Special:Recentchanges]]
[[ru:Special:Recentchanges]]
[[sa:Special:Recentchanges]]
[[sah:Special:Recentchanges]]
[[sk:Special:Recentchanges]]
[[sl:Special:Recentchanges]]
[[sr:Special:Recentchanges]]
[[sv:Special:Recentchanges]]
[[ta:Special:Recentchanges]]
[[te:Special:Recentchanges]]
[[th:Special:Recentchanges]]
[[tl:Special:Recentchanges]]
[[tr:Special:Recentchanges]]
[[uk:Special:Recentchanges]]
[[vec:Special:Recentchanges]]
[[vi:Special:Recentchanges]]
[[wa:Special:Recentchanges]]
[[yi:Special:Recentchanges]]
[[zh:Special:Recentchanges]]
[[zh-min-nan:Special:Recentchanges]]
5lrl4gydkjy5l3pwz8lys7s6ejacc4k
MediaWiki:Edittools
8
9127
1653856
860379
2026-05-14T22:01:45Z
Aleator
587
wikinews (RIP) => wikidata
1653856
wikitext
text/x-wiki
<!-- Este texto aparecerá bajo los formularios de edición y subida. -->
<div class="plainlinks" style="margin-top:1px; border-width:1px; border-style:solid; border-color:#aaaaaa; padding:2px;">
Caracteres especiales:
<charinsert>á é í ó ú Á É Í Ó Ú ü Ü ñ Ñ</charinsert> ·
<charinsert>« » «+» ¡ ¿ - † º ª ~ ‡ ©</charinsert> ·
<charinsert>Â â Ê ê </charinsert> ·
<charinsert>Ä ä Ë ë Ö ö Ü ü </charinsert> ·
<charinsert>Ç ç </charinsert> ·
<charinsert>Ā ā Ē ē Ī ī Ō ō Ū ū </charinsert> ·
<charinsert>ß </charinsert> ·
<charinsert>Ð ð Þ þ </charinsert> ·
<charinsert>Æ æ Œ œ </charinsert> ·
<charinsert>– — </charinsert> ·
<charinsert>[+] [[+]] {{+}} </charinsert> ·
<charinsert>~ | °</charinsert><br>
<charinsert> ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁰ ½ </charinsert>
Wiki:
<charinsert>
[[Categoría:+]] · [[Image:+]] · #REDIRECT · <ref>+</ref> · <references/> · </charinsert>
<charinsert>{{brecha}}</charinsert> ·
<charinsert><section begin= /></charinsert> ·
<charinsert><section end= /></charinsert> ·
<charinsert>{{np}}</charinsert> ·
<charinsert>{{derecha|+}}</charinsert> ·
<charinsert>{{c|}}</charinsert> ·
<charinsert>{{May|}}</charinsert> ·
<charinsert>{{Gota|}}</charinsert> ·
<charinsert>{{GrandeInicial|}}</charinsert> ·
<charinsert>{{ORDENAR:+}}</charinsert> ·
<charinsert> <nowiki><u>+</u></nowiki> · <nowiki>{{</nowiki>Centrar<nowiki>|+}}</nowiki> · <nowiki><poem>+</poem></nowiki> ·
<nowiki>{{Pt|+|}}</nowiki> ·
<nowiki><nowiki>+</nowiki></nowiki> · <nowiki>{{</nowiki>Grande<nowiki>|+}}</nowiki> · <nowiki><noinclude>+</noinclude></nowiki> · <nowiki><includeonly>+</includeonly></nowiki>
</charinsert> ·
<charinsert> ~~~~~ </charinsert> ·
<charinsert> <nowiki>{{</nowiki>DP-100}} <nowiki>{{</nowiki>DP-70}} <nowiki>{{</nowiki>DH}} <nowiki>{{</nowiki>PAGENAME}}</charinsert>
Estilos:
<charinsert>
class="verse" class="prose" class="Parrafo"
</charinsert>
Enlaces: <div style="font-size: 83%;">Commons<charinsert> [[Commons:+]]</charinsert> Wikipedia<charinsert>[[w:es:+]]</charinsert> Wikidata<charinsert> [[d:+]] </charinsert> Wikiquote<charinsert>[[q:+]]</charinsert> Wikilibros<charinsert> [[b:+]]</charinsert> Wikcionario<charinsert>[[wikt:+]]</charinsert> Wikiversidad<charinsert>[[v:+]]</charinsert>
</div>
</div>
ruwmuw0119n27qq5jac3eppyisr9cow
Himno de Guayaquil
0
32314
1653850
1646092
2026-05-14T21:35:24Z
~2026-29019-90
96215
Estaba mal escrito
1653850
wikitext
text/x-wiki
{{VT|Himno guayaquileño de 1820}}
{{Himno
|Título=Himno de Guayaquil
|Letra=[[José Joaquín de Olmedo]]
|Música=Ana Villamil Ycaza
|Año=1918
|Imágen=Bandera de Guayaquil.svg
|Descripción= Bandera de Guayaquil.
|Texto=}}
{| style="background-color:#FCF0CD; border:solid #98750C; border-width: 1px 2px 2px 1px; text-align:left; width:100%;"
|-valign=top
|Versión según [http://www.efemerides.ec/1/julio/cancion_1.htm “América Libre”, 1920]
|Versión según [https://www.cervantesvirtual.com/obra-visor/jose-joaquin-olmedo-poesiaprosa--0/html/fffd7da6-82b1-11df-acc7-002185ce6064_19.html José Joaquín Olmedo : ''poesía-prosa'', Quito, 1960]
|-valign=top
|<poem>
'''Canción al 9 de octubre'''
Veís esa luz amable
Que raya en el oriente,
Cada vez más luciente
En gracia celestial?
Esa es la aurora plácida
Que anuncia libertad!,
Esa es la aurora plácida
Que anuncia libertad!
'''Coro'''
Saludemos gozosos
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
'''I'''
Nosotrputoos guardemos
Con ardor indecible
Tu fuego inextinguible,
Oh santa libertad!
'''II'''
Como vestales vírgenes
Que sirven a tu altar.
Como vestales vírgenes
Que sirven a tu altar.
'''Coro'''
Saludemos gozosos
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
'''I'''
Haz que en el suelo que amas
Florezca en todas partes
El culto de las artes
Y el honor nacional.
'''II'''
Y da con mano pródiga
Los bienes de la paz.
Y da con mano pródiga
Los bienes de la paz.
'''Coro'''
Saludemos gozosos
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
</poem>
|
<poem>
'''Canción al 9 de octubre'''
¿Veis esa luz amable
que raya en el oriente,
cada vez más luciente
en gracia celestial?
Esa es la aurora plácida
que anuncia libertad.
Esa es la aurora plácida
que anuncia libertad.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
Nosotras guardaremos
con ardor indecible
tu fuego inextinguible,
oh santa libertad,
como vestales vírgenes
que sirven a tu altar,
como vestales vírgenes
que sirven a tu altar.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
Haz que en el suelo que amas
florezca en todas partes
el culto de las artes
y el honor nacional.
Y da con mano pródiga
los bienes de la paz,
y da con mano pródiga
los bienes de la paz.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
</poem>
|}
[[Categoría:Historia de Ecuador|Gua]]
[[Categoría:Himnos locales de Ecuador|Gua]]
dslwzvwy51pwduf3hy9yvylfi98okvd
1653851
1653850
2026-05-14T21:36:32Z
~2026-29019-90
96215
/* */
1653851
wikitext
text/x-wiki
{{VT|Himno guayaquileño de 1820}}
{{Himno
|Título=Himno de Guayaquil
|Letra=[[José Joaquín de Olmedo]]
|Música=Ana Villamil Ycaza
|Año=1918
|Imágen=Bandera de Guayaquil.svg
|Descripción= Bandera de Guayaquil.
|Texto=}}
{| style="background-color:#FCF0CD; border:solid #98750C; border-width: 1px 2px 2px 1px; text-align:left; width:100%;"
|-valign=top
|Versión según [http://www.efemerides.ec/1/julio/cancion_1.htm “América Libre”, 1920]
|Versión según [https://www.cervantesvirtual.com/obra-visor/jose-joaquin-olmedo-poesiaprosa--0/html/fffd7da6-82b1-11df-acc7-002185ce6064_19.html José Joaquín Olmedo : ''poesía-prosa'', Quito, 1960]
|-valign=top
|<poem>
'''Canción al 9 de octubre'''
Veís esa luz amable que prevalece en el sur?
Que raya en el oriente,
Cada vez más luciente
En gracia celestial?
Esa es la aurora plácida
Que anuncia libertad!,
Esa es la aurora plácida
Que anuncia libertad!
'''Coro'''
Saludemos gozosos
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
'''I'''
Nosotrputoos guardemos
Con ardor indecible
Tu fuego inextinguible,
Oh santa libertad!
'''II'''
Como vestales vírgenes
Que sirven a tu altar.
Como vestales vírgenes
Que sirven a tu altar.
'''Coro'''
Saludemos gozosos
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
'''I'''
Haz que en el suelo que amas
Florezca en todas partes
El culto de las artes
Y el honor nacional.
'''II'''
Y da con mano pródiga
Los bienes de la paz.
Y da con mano pródiga
Los bienes de la paz.
'''Coro'''
Saludemos gozosos
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
</poem>
|
<poem>
'''Canción al 9 de octubre'''
¿Veis esa luz amable
que raya en el oriente,
cada vez más luciente
en gracia celestial?
Esa es la aurora plácida
que anuncia libertad.
Esa es la aurora plácida
que anuncia libertad.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
Nosotras guardaremos
con ardor indecible
tu fuego inextinguible,
oh santa libertad,
como vestales vírgenes
que sirven a tu altar,
como vestales vírgenes
que sirven a tu altar.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
Haz que en el suelo que amas
florezca en todas partes
el culto de las artes
y el honor nacional.
Y da con mano pródiga
los bienes de la paz,
y da con mano pródiga
los bienes de la paz.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
</poem>
|}
[[Categoría:Historia de Ecuador|Gua]]
[[Categoría:Himnos locales de Ecuador|Gua]]
9dij1umwnz7qtx4z7metu0ijrlfvvus
1653852
1653851
2026-05-14T21:39:40Z
~2026-29019-90
96215
/* */
1653852
wikitext
text/x-wiki
{{VT|Himno guayaquileño de 1820}}
{{Himno
|Título=Himno de Guayaquil
|Letra=[[José Joaquín de Olmedo]]
|Música=Ana Villamil Ycaza
|Año=1918
|Imágen=Bandera de Guayaquil.svg
|Descripción= Bandera de Guayaquil.
|Texto=}}
{| style="background-color:#FCF0CD; border:solid #98750C; border-width: 1px 2px 2px 1px; text-align:left; width:100%;"
|-valign=top
|Versión según [http://www.efemerides.ec/1/julio/cancion_1.htm “América Libre”, 1920]
|Versión según [https://www.cervantesvirtual.com/obra-visor/jose-joaquin-olmedo-poesiaprosa--0/html/fffd7da6-82b1-11df-acc7-002185ce6064_19.html José Joaquín Olmedo : ''poesía-prosa'', Quito, 1960]
|-valign=top
|<poem>
'''Canción al 9 de octubre'''
Veís esa luz amable que prevalece en el sur?
Que raya en el oriente y que detonan ahí?
Cada vez más luciente
En gracia celestial?
Esa es la aurora plácida
Que anuncia libertad!,
Esa es la aurora plácida
Que anuncia libertad!
'''Coro'''
Saludemos gozosos
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
'''I'''
Nosotrputoos guardemos
Con ardor indecible
Tu fuego inextinguible,
Oh santa libertad!
'''II'''
Como vestales vírgenes
Que sirven a tu altar.
Como vestales vírgenes
Que sirven a tu altar.
'''Coro'''
Saludemos gozosos
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
'''I'''
Haz que en el suelo que amas
Florezca en todas partes
El culto de las artes
Y el honor nacional.
'''II'''
Y da con mano pródiga
Los bienes de la paz.
Y da con mano pródiga
Los bienes de la paz.
'''Coro'''
Saludemos gozosos
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
</poem>
|
<poem>
'''Canción al 9 de octubre'''
¿Veis esa luz amable
que raya en el oriente,
cada vez más luciente
en gracia celestial?
Esa es la aurora plácida
que anuncia libertad.
Esa es la aurora plácida
que anuncia libertad.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
Nosotras guardaremos
con ardor indecible
tu fuego inextinguible,
oh santa libertad,
como vestales vírgenes
que sirven a tu altar,
como vestales vírgenes
que sirven a tu altar.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
Haz que en el suelo que amas
florezca en todas partes
el culto de las artes
y el honor nacional.
Y da con mano pródiga
los bienes de la paz,
y da con mano pródiga
los bienes de la paz.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
</poem>
|}
[[Categoría:Historia de Ecuador|Gua]]
[[Categoría:Himnos locales de Ecuador|Gua]]
asmrbq58d3pfb3flxzlcvu9gj30a21k
1653853
1653852
2026-05-14T21:40:00Z
~2026-29019-90
96215
/* */
1653853
wikitext
text/x-wiki
{{VT|Himno guayaquileño de 1820}}
{{Himno
|Título=Himno de Guayaquil
|Letra=[[José Joaquín de Olmedo]]
|Música=Ana Villamil Ycaza
|Año=1918
|Imágen=Bandera de Guayaquil.svg
|Descripción= Bandera de Guayaquil.
|Texto=}}
{| style="background-color:#FCF0CD; border:solid #98750C; border-width: 1px 2px 2px 1px; text-align:left; width:100%;"
|-valign=top
|Versión según [http://www.efemerides.ec/1/julio/cancion_1.htm “América Libre”, 1920]
|Versión según [https://www.cervantesvirtual.com/obra-visor/jose-joaquin-olmedo-poesiaprosa--0/html/fffd7da6-82b1-11df-acc7-002185ce6064_19.html José Joaquín Olmedo : ''poesía-prosa'', Quito, 1960]
|-valign=top
|<poem>
'''Canción al 9 de octubre'''
Veís esa luz amable que prevalece en el sur?
Que raya en el oriente y que detonan ahí?
Cada vez más luciente
En gracia celestial?
Esa es la aurora plácida
Que anuncia libertad!,
Esa es la aurora plácida
Que anuncia libertad!
'''Coro'''
Saludemos gozosos
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
'''I'''
Nosotrputoos guardemos
Con ardor indecible
Tu fuego inextinguible,
Oh santa libertad!
'''II'''
Como vestales vírgenes
Que sirven a tu altar.
Como vestales vírgenes
Que sirven a tu altar.
'''Coro'''
Saludemos gozosos a todos los Valero y Meza
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
'''I'''
Haz que en el suelo que amas
Florezca en todas partes
El culto de las artes
Y el honor nacional.
'''II'''
Y da con mano pródiga
Los bienes de la paz.
Y da con mano pródiga
Los bienes de la paz.
'''Coro'''
Saludemos gozosos
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
</poem>
|
<poem>
'''Canción al 9 de octubre'''
¿Veis esa luz amable
que raya en el oriente,
cada vez más luciente
en gracia celestial?
Esa es la aurora plácida
que anuncia libertad.
Esa es la aurora plácida
que anuncia libertad.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
Nosotras guardaremos
con ardor indecible
tu fuego inextinguible,
oh santa libertad,
como vestales vírgenes
que sirven a tu altar,
como vestales vírgenes
que sirven a tu altar.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
Haz que en el suelo que amas
florezca en todas partes
el culto de las artes
y el honor nacional.
Y da con mano pródiga
los bienes de la paz,
y da con mano pródiga
los bienes de la paz.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
</poem>
|}
[[Categoría:Historia de Ecuador|Gua]]
[[Categoría:Himnos locales de Ecuador|Gua]]
0d5757ypvet08l4zp2hoiiixj8wx4zr
1653854
1653853
2026-05-14T21:40:58Z
~2026-29019-90
96215
/* */
1653854
wikitext
text/x-wiki
{{VT|Himno guayaquileño de 1820}}
{{Himno
|Título=Himno de Guayaquil
|Letra=[[José Joaquín de Olmedo]]
|Música=Ana Villamil Ycaza
|Año=1918
|Imágen=Bandera de Guayaquil.svg
|Descripción= Bandera de Guayaquil.
|Texto=}}
{| style="background-color:#FCF0CD; border:solid #98750C; border-width: 1px 2px 2px 1px; text-align:left; width:100%;"
|-valign=top
|Versión según [http://www.efemerides.ec/1/julio/cancion_1.htm “América Libre”, 1920]
|Versión según [https://www.cervantesvirtual.com/obra-visor/jose-joaquin-olmedo-poesiaprosa--0/html/fffd7da6-82b1-11df-acc7-002185ce6064_19.html José Joaquín Olmedo : ''poesía-prosa'', Quito, 1960]
|-valign=top
|<poem>
'''Canción al 9 de octubre'''
Veís esa luz amable que prevalece en el sur?
Que raya en el oriente y que detonan ahí?
Cada vez más luciente
En gracia celestial?
Esa es la aurora plácida
Que anuncia libertad!,
Esa es la aurora plácida
Que anuncia libertad!
'''Coro'''
Saludemos gozosos
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
'''I'''
Nosotrputoos guardemos
Con ardor indecible
Tu fuego inextinguible,
Oh santa libertad!
'''II'''
Como vestales vírgenes
Que sirven a tu altar.
Como vestales vírgenesis te amo
Que sirven a tu altar.
'''Coro'''
Saludemos gozosos a todos los Valero y Meza
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
'''I'''
Haz que en el suelo que amas
Florezca en todas partes
El culto de las artes
Y el honor nacional.
'''II'''
Y da con mano pródiga
Los bienes de la paz.
Y da con mano pródiga
Los bienes de la paz.
'''Coro'''
Saludemos gozosos
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
</poem>
|
<poem>
'''Canción al 9 de octubre'''
¿Veis esa luz amable
que raya en el oriente,
cada vez más luciente
en gracia celestial?
Esa es la aurora plácida
que anuncia libertad.
Esa es la aurora plácida
que anuncia libertad.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
Nosotras guardaremos
con ardor indecible
tu fuego inextinguible,
oh santa libertad,
como vestales vírgenes
que sirven a tu altar,
como vestales vírgenes
que sirven a tu altar.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
Haz que en el suelo que amas
florezca en todas partes
el culto de las artes
y el honor nacional.
Y da con mano pródiga
los bienes de la paz,
y da con mano pródiga
los bienes de la paz.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
</poem>
|}
[[Categoría:Historia de Ecuador|Gua]]
[[Categoría:Himnos locales de Ecuador|Gua]]
klczjghobqltw3p7z55vhivpud3y0rk
1653855
1653854
2026-05-14T21:42:39Z
Aleator
587
Revertidos los cambios de [[Special:Contributions/~2026-29019-90|~2026-29019-90]] ([[User talk:~2026-29019-90|disc.]]) a la última edición de [[User:SchlurcherBot|SchlurcherBot]]
1646092
wikitext
text/x-wiki
{{VT|Himno guayaquileño de 1820}}
{{Himno
|Título=Himno de Guayaquil
|Letra=[[José Joaquín de Olmedo]]
|Música=Ana Villamil Ycaza
|Año=1918
|Imágen=Bandera de Guayaquil.svg
|Descripción= Bandera de Guayaquil.
|Texto=}}
{| style="background-color:#FCF0CD; border:solid #98750C; border-width: 1px 2px 2px 1px; text-align:left; width:100%;"
|-valign=top
|Versión según [http://www.efemerides.ec/1/julio/cancion_1.htm “América Libre”, 1920]
|Versión según [https://www.cervantesvirtual.com/obra-visor/jose-joaquin-olmedo-poesiaprosa--0/html/fffd7da6-82b1-11df-acc7-002185ce6064_19.html José Joaquín Olmedo : ''poesía-prosa'', Quito, 1960]
|-valign=top
|<poem>
'''Canción al 9 de octubre'''
Veís esa luz amable
Que raya en el oriente,
Cada vez más luciente
En gracia celestial?
Esa es la aurora plácida
Que anuncia libertad!,
Esa es la aurora plácida
Que anuncia libertad!
'''Coro'''
Saludemos gozosos
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
'''I'''
Nosotros guardemos
Con ardor indecible
Tu fuego inextinguible,
Oh santa libertad!
'''II'''
Como vestales vírgenes
Que sirven a tu altar.
Como vestales vírgenes
Que sirven a tu altar.
'''Coro'''
Saludemos gozosos
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
'''I'''
Haz que en el suelo que amas
Florezca en todas partes
El culto de las artes
Y el honor nacional.
'''II'''
Y da con mano pródiga
Los bienes de la paz.
Y da con mano pródiga
Los bienes de la paz.
'''Coro'''
Saludemos gozosos
En armoniosos cánticos
Esta aurora gloriosa
Que anuncia libertad,
Libertad, libertad!
</poem>
|
<poem>
'''Canción al 9 de octubre'''
¿Veis esa luz amable
que raya en el oriente,
cada vez más luciente
en gracia celestial?
Esa es la aurora plácida
que anuncia libertad.
Esa es la aurora plácida
que anuncia libertad.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
Nosotras guardaremos
con ardor indecible
tu fuego inextinguible,
oh santa libertad,
como vestales vírgenes
que sirven a tu altar,
como vestales vírgenes
que sirven a tu altar.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
Haz que en el suelo que amas
florezca en todas partes
el culto de las artes
y el honor nacional.
Y da con mano pródiga
los bienes de la paz,
y da con mano pródiga
los bienes de la paz.
'''Coro'''
Saludemos gozosas
en armoniosos cánticos
esa aurora gloriosa
que anuncia libertad,
libertad, libertad.
</poem>
|}
[[Categoría:Historia de Ecuador|Gua]]
[[Categoría:Himnos locales de Ecuador|Gua]]
t5vzzycb0e5u7hdoi4kn76hixzp2yk1
Poética (traducción de José Goya y Muniain)/Capítulo II
0
50644
1653841
982888
2026-05-14T19:49:16Z
Aleator
587
+step (evitar secc. inex.)
1653841
wikitext
text/x-wiki
{{ma}}
<div class="prose"><pages index="El arte poética de Aristóteles (1798).pdf" from="27" to="35" step=2 onlysection="Capitulo2" header=1/></div>
{{línea}}
{{listaref}}
g750hrksxfein1l5xptgz9bm6sopkie
Poética (traducción de José Goya y Muniain)/Capítulo III
0
50645
1653842
986745
2026-05-14T19:50:48Z
Aleator
587
+step (evitar secc. inex.)
1653842
wikitext
text/x-wiki
{{ma}}
<div class="prose"><pages index="El arte poética de Aristóteles (1798).pdf" from="35" to="91" step=2 onlysection="Capitulo3" header=1/></div>
{{línea}}
{{listaref}}
6dukqemk7lqn7bc4k78386hfwpje5h4
Poética (traducción de José Goya y Muniain)/Capítulo IV
0
50646
1653843
982884
2026-05-14T19:51:22Z
Aleator
587
+step (evitar secc. inex.)
1653843
wikitext
text/x-wiki
{{ma}}
<div class="prose"><pages index="El arte poética de Aristóteles (1798).pdf" from="91" to="99" step=2 onlysection="Capitulo4" header=1/></div>
{{línea}}
{{listaref}}
pfxl8urndiix6x2msv31q45jzjzwzbz
Poética (traducción de José Goya y Muniain)/Capítulo V
0
50647
1653844
982905
2026-05-14T19:51:48Z
Aleator
587
+step (evitar secc. inex.)
1653844
wikitext
text/x-wiki
{{ma}}
<div class="prose"><pages index="El arte poética de Aristóteles (1798).pdf" from="99" to="109" step=2 onlysection="Capitulo5" header=1/></div>
{{línea}}
{{listaref}}
4nrtuyfg41hs3iecugx7dwnzlncr8tw
Poética (traducción de José Goya y Muniain)/Capítulo VI
0
50648
1653845
982880
2026-05-14T19:51:56Z
Aleator
587
+step (evitar secc. inex.)
1653845
wikitext
text/x-wiki
{{ma}}
<div class="prose"><pages index="El arte poética de Aristóteles (1798).pdf" from="109" to="113" step=2 onlysection="Capitulo6" header=1/></div>
{{línea}}
{{listaref}}
cilqs0v8w6ytbo3jzvyw16ifegcnf0k
MediaWiki:Common.css
8
57956
1653847
1649267
2026-05-14T20:17:43Z
ABreault (WMF)
92177
For [[phab:T425553|T425553]]
1653847
css
text/css
/* Los estilos CSS definidos aquí aplicarán a todas las pieles (skins) */
/* oculta el título en la Portada */
.page-Portada .firstHeading {
display:none !important;
}
/* Quality: Da color al nivel de qualitat (ver Ayuda:Qualitat de les paginas) */
.quality4 {
background:#90ff90;
}
.quality3 {
background:#ffe867;
}
.quality2 {
background:#b0b0ff;
}
.quality1 {
background:#ffa0a0;
}
.quality0 {
background:#ddd;
}
/* Fix: páginas seguidas en poemas "poem" se separan con un espacio */
.poem p {
margin: 0;
}
/* estilos trasladados desde commons, por considerarse generalistas */
.verse pre {
background-color: #ffffff;
font-family:sans-serif;
line-height: 150%;
border: 0;
padding-left: 2em;
margin: 0;
white-space: pre;
}
.verse p {
white-space: pre;
}
.prose {
width: 35em;
text-align:justify;
margin:0 auto;
}
.prosa {
width: 45em;
text-align:justify;
margin:0 auto;
}
/*</pre>
==Estilos del proyecto==
Nuevo estilo para aplicar a los párrafos este dispone:
*Alineación de texto justificada
*Sangría en la primera linea
*El primer carácter en mayúscula
Su aplicación sería. '''class="Parrafo"''', también en la botonera de edición
<pre> */
.Parrafo{
text-indent:5mm;
margin-left:2em;
margin:0.5em 1em 0.5em 2em;
text-align:justify;
}
.Parrafo:first-letter {
text-transform: uppercase;
}
.Banner{
background-color:#385490;
color:#F0F8F8;
}
.mBanner{
background-color:#385490;
color:#F0F8F8;
text-align:center;
font-size:140%;
padding:0.5em;
margin-bottom:0.5em;
font-weight:bold;
}
/*</pre>
==Estilos para aplicar sobre plantillas==
<pre> */
.Plantilla{
clear:both;
margin: 5px 10px 5px 10px;
padding: 5px;
}
.Edicion {
background-color:#FCF0CD;
border: solid #98750C;
}
.Aviso {
border: solid red;
background-color:#FFDFDF;
}
.SuperiorIcono
{
position:absolute;
z-index:100;
right:10px;
top:10px;
}
.separador {
text-align:center;
}
/* </pre>
/* Textos con orientación vertical (línea de base a la izquierda y a la derecha, respectivamente) */
.vertical-text-l {
writing-mode: tb-rl;
-webkit-transform:rotate(90deg);
-moz-transform:rotate(90deg);
-o-transform: rotate(90deg);
}
.vertical-text-r {
writing-mode: tb-rl;
-webkit-transform:rotate(-90deg);
-moz-transform:rotate(-90deg);
-o-transform: rotate(-90deg);
}
.show-changes .v-es-act {
background-color: #AAFFAA;
}
.references > li:target,
.reference:target,
.citation:target,
cite:target,
.anclaje:target{
background-color: #DEF;
}
/* Formato general */
.ns-0 .mw-parser-output, .ns-102 .mw-parser-output {
position: relative;
text-align: justify;
}
.ns-0 .mw-parser-output > p,
.ns-0 .prp-pages-output > p,
.ns-102 .mw-parser-output > p,
.ns-102 .prp-pages-output > p {
text-indent: 2em;
}
.ns-102 .mw-parser-output p:first-of-type {
text-indent: 0;
}
/* T425553 */
.ns-0 .mw-parser-output > section > p,
.ns-0 .prp-pages-output > section > p,
.ns-102 .mw-parser-output > section > p,
.ns-102 .prp-pages-output > section > p {
text-indent:2em
}
.footertemplate {
width: 100%;
border-top: 1px solid #a0a0a0;
border-bottom: 1px solid #a0a0a0;
background-color: #f4f0e5;
text-align: center;
}
/* Ubicación de los números de página transcluidas. */
#text-wrap { margin-left:3em; position:relative; }
/* Referencias */
.reflist ol.references {
list-style-type: inherit; /* Enable custom list style types */
}
/* Errores de tipeo (plantilla Corr) de otro color */
body.ns-102 .tipeo { color:#1e761e; }
/* Estilo común a abreviaturas de varias fuentes. !important porque es sobreescrito por algunas skins*/
.ws-abbr {
text-decoration-color: #ccc !important;
}
/* Clases muy generales del Módulo:Centrar y plantillas relacionadas.
Para evitar cargar una página CSS adicional en decenas de miles de páginas */
.ws-bloque-centro{
display: table;
margin-right:auto;
margin-left:auto;
}
.ws-bloque-derecha{
margin-right: 0;
text-align:inherit;
}
.ws-bloque-izquierda{
margin-left:0;
}
.ws-sangria-colgante{
margin-left: 2em;
text-indent: -2em;
}
.ws-sangria-colgante-m{
margin-left:2em;
}
.ws-flotador-d{
margin: 0 0 0 0;
}
.ws-flotador-i{
margin-top:0;
margin-bottom:0;
margin-right:0;
}
/* evitar generar <link>s en cada abreviatura, que generan
problemas con la búsqueda en algunos navegadores */
.ws-abbr {
text-decoration-color: #ccc;
}
/**
* The following rules are for rotation testing only.
*
*/
.rotp90, .rot90 {
-moz-transform: rotate(90deg);
-o-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(90deg);
}
.rot180 {
-moz-transform: rotate(180deg);
-o-transform: rotate(180deg);
-webkit-transform: rotate(180deg);
-ms-transform: rotate(180deg);
transform: rotate(180deg);
}
.rotn90, .rot270 {
-moz-transform: rotate(-90deg);
-o-transform: rotate(-90deg);
-webkit-transform: rotate(-90deg);
-ms-transform: rotate(-90deg);
transform: rotate(-90deg);
}
/*
*Plantilla:Pt
*/
.pt-personaje {
font-weight:bold;
}
/* estilos para tablas: a falta de una mejor manera para seleccionar columnas
crea las clases col + n + izq, cen, o der para establecer la alineación de esas columnas */
.col1der td:nth-of-type(1),
.col2der td:nth-of-type(2),
.col3der td:nth-of-type(3),
.col4der td:nth-of-type(4),
.col5der td:nth-of-type(5),
.col6der td:nth-of-type(6),
.col7der td:nth-of-type(7),
.col8der td:nth-of-type(8),
.col9der td:nth-of-type(9),
.col10der td:nth-of-type(10),
.col11der td:nth-of-type(11),
.col12der td:nth-of-type(12),
.col13der td:nth-of-type(13),
.col14der td:nth-of-type(14),
.col15der td:nth-of-type(15),
.col16der td:nth-of-type(16),
.col17der td:nth-of-type(17),
.col18der td:nth-of-type(18),
.col19der td:nth-of-type(19),
.col20der td:nth-of-type(20)
{text-align:right}
.col1izq td:nth-of-type(1),
.col2izq td:nth-of-type(2),
.col3izq td:nth-of-type(3),
.col4izq td:nth-of-type(4),
.col5izq td:nth-of-type(5),
.col6izq td:nth-of-type(6),
.col7izq td:nth-of-type(7),
.col8izq td:nth-of-type(8),
.col9izq td:nth-of-type(9),
.col10izq td:nth-of-type(10),
.col11izq td:nth-of-type(11),
.col12izq td:nth-of-type(12),
.col13izq td:nth-of-type(13),
.col14izq td:nth-of-type(14),
.col15izq td:nth-of-type(15),
.col16izq td:nth-of-type(16),
.col17izq td:nth-of-type(17),
.col18izq td:nth-of-type(18),
.col19izq td:nth-of-type(19),
.col20izq td:nth-of-type(20)
{text-align:left}
.col1cen td:nth-of-type(1),
.col2cen td:nth-of-type(2),
.col3cen td:nth-of-type(3),
.col4cen td:nth-of-type(4),
.col5cen td:nth-of-type(5),
.col6cen td:nth-of-type(6),
.col7cen td:nth-of-type(7),
.col8cen td:nth-of-type(8),
.col9cen td:nth-of-type(9),
.col10cen td:nth-of-type(10),
.col11cen td:nth-of-type(11),
.col12cen td:nth-of-type(12),
.col13cen td:nth-of-type(13),
.col14cen td:nth-of-type(14),
.col15cen td:nth-of-type(15),
.col16cen td:nth-of-type(16),
.col17cen td:nth-of-type(17),
.col18cen td:nth-of-type(18),
.col19cen td:nth-of-type(19),
.col20cen td:nth-of-type(20)
{text-align:center}
4v4hadinp9vlxf35922yc3spsnmvwoj
Plantilla:Ediciones/doc
10
112912
1653812
1560396
2026-05-14T14:25:35Z
Ignacio Rodríguez
3603
sirve como ejemplo
1653812
wikitext
text/x-wiki
{{Subpágina documentación}}
{{plantilla con Lua|Ediciones}}
== Uso ==
Esta plantilla es para disambiguar ediciones o versiones de la misma obra. Use {{tl|desambiguación}} para desambiguar obras distintas con el mismo título. Los enlaces, el título y el autor se pueden tomar desde Wikidata, y también se pueden especificar. Los parámetros propios de esta plantilla son:
<pre>
{{Ediciones
|preposición = (opcional, por defecto «de»)
|imagen1 = (opcional)
|imagen2 = (opcional, o toma desde desc. wikidata)
}}
</pre>
;Ejemplo:
<pre>
{{Ediciones
|preposición = del
|titulo = Génesis
|wikipedia = Génesis
|commonscat = Genesis
|wikcionario = Génesis
|wikiquote = Génesis
|más info = Primer libro de la Biblia, la Torá, el Tanaj y el [[Antiguo Testamento]]. (Siglo VI a. C.)
|imagen1 = Gutenberg_Bible.jpg
}}</pre>
Se visualiza en [[Génesis]]:
{{Ediciones
|preposición = del
|titulo = Génesis
|wikipedia = Génesis
|commonscat = Genesis
|wikcionario = Génesis
|wikiquote = Génesis
|wikidata = Q9184
|más info = Primer libro de la Biblia, la Torá, el Tanaj y el [[Antiguo Testamento]]. (Siglo VI a. C.)
|imagen1 = Gutenberg_Bible.jpg
|imagen2 = Genesis_1_Dead_Sea_Scroll_(Cropped).jpg
}}
== Véase también ==
* [[Plantilla:Otras versiones]]
<includeonly>[[Categoría:Wikisource:Plantillas de mantenimiento]]</includeonly>
1nc8mav8y2xt99re03mxcl6r9m2pght
Plantilla:Encabezado oficial/doc
10
114134
1653859
555112
2026-05-14T22:13:29Z
Aleator
587
-wikinews (RIP)
1653859
wikitext
text/x-wiki
{{Subpágina documentación}}
<!-- POR FAVOR, AÑADE LAS CATEGORÍAS E INTERWIKIS AL FINAL DE ESTA PÁGINA. -->
<!-- Si te dispones a documentar una plantilla de mantenimiento, por favor considera adoptar el formato de [[Wikipedia:Documentación de plantillas de mantenimiento]]-->
== Uso ==
Coloque la plantilla en la parte superior de las páginas de mantenimiento Wikisource. El título del parámetro se utiliza para explicar lo que la página se compone de, y puede vincular al usuario de otras áreas "antes" y "después".
<pre>
{{Encabezado oficial
|titulo = Nombre
|anterior =
|proyecto =
|wikipedia =
|commons =
|commonscat =
|wikiquote =
|wikcionario =
|wikilibros =
|wikiversidad =
|wikispecies =
|meta =
}}
</pre>
{{Encabezado oficial
|titulo=Texto descatado
}}
<includeonly><!--
++++ POR FAVOR, AÑADE LAS CATEGORÍAS E INTERWIKIS DEBAJO DE ESTA LÍNEA, DENTRO DE LAS ETIQUETAS INCLUDEONLY, GRACIAS. -->
[[Categoría:Wikisource:Plantillas de mantenimiento]]
</includeonly>
9ygi768ok18i5aafv30o0tsg11wapr4
Plantilla:Encabezado oficial
10
114135
1653858
1157568
2026-05-14T22:13:13Z
Aleator
587
-wikinoticias (RIP)
1653858
wikitext
text/x-wiki
<includeonly>
<div class="noprint" style="text-align:center; padding: 5px; background: {{{Fondo|#CEE0F2}}}; border: 1px solid {{{Borde|#A3B1BF}}}; margin: 0 auto;"><table width="100%" border="0"><tr><td width="18%"><div style="padding: 0px;">{{#if:{{{anterior|{{{left|}}}}}}|<span style="float: left; display: block;">←<small>{{{anterior|{{{left}}}}}}</small></span>}}</div></td><td width="64%"><span style="center; display: block;">'''Wikisource'''<br>{{#if:{{{titulo|}}}{{{título|}}}|{{{titulo|{{{título}}}}}}}}</span></td><td width="18%"><div style="padding: 0px;"></div></td></tr></table><div style="clear: both;"></div><div border="0" class="noprint" style="clear:center; background:#clear; padding:1px; text-align:center; float:center; font-size:80%;">{{#ifeq:{{{proyecto}}}|Votaciones|[[Categoría:Wikisource:Votaciones]]|{{#if:{{{proyecto|}}}|[[Archivo:People icon.svg|18px]] [[Proyecto:{{{proyecto}}}|{{{proyecto}}}]]. |}}}}{{#if:{{{wikipedia|}}}{{{commons|}}}{{{commonscat|}}}{{{wikiquote|}}}{{{wikcionario|}}}{{{wikilibros|}}}{{{wikiversidad|}}}{{{wikispecies|}}}{{{meta|}}}|[[File:Wikimedia-logo.svg|12px]] {{#if:{{{wikipedia|}}}|[[w:{{{wikipedia}}}|artículo enciclopédico]]}}{{#if:{{{commons|}}}|{{#if:{{{wikipedia|}}}|, }}[[commons:{{{commons|}}}|galería multimedia]]}}{{#if:{{{commonscat|}}}|{{#if:{{{wikipedia|}}}{{{commons|}}}|, }}[[commons:Category:{{{commonscat}}}|categoría multimedia]]}}{{#if:{{{wikiquote|}}}|{{#if:{{{wikipedia|}}}{{{commons|}}}{{{commonscat|}}}|, }}[[q:{{{wikiquote}}}|citas]]}}{{#if:{{{wikcionario|}}}|{{#if:{{{wikipedia|}}}{{{commons|}}}{{{commonscat|}}}{{{wikiquote|}}}|, }}[[wikcionario:{{{wikcionario}}}|definición]]}}{{#if:{{{wikilibros|}}}|{{#if:{{{wikipedia|}}}{{{commons|}}}{{{commonscat|}}}{{{wikiquote|}}}{{{wikcionario|}}}|, }}[[wikilibros:{{{wikilibros}}}|libro]]}}{{#if:{{{wikiversidad|}}}|{{#if:{{{wikipedia|}}}{{{commons|}}}{{{commonscat|}}}{{{wikiquote|}}}{{{wikcionario|}}}{{{wikilibros|}}}|, }}[[wikiversidad:{{{wikiversidad}}}|clase]]}}{{#if:{{{wikispecies|}}}|{{#if:{{{wikipedia|}}}{{{commons|}}}{{{commonscat|}}}{{{wikiquote|}}}{{{wikcionario|}}}{{{wikilibros|}}}{{{wikiversidad|}}}|, }}[[wikispecies:{{{wikispecies}}}|taxonomía]]}}{{#if:{{{meta|}}}|{{#if:{{{wikipedia|}}}{{{commons|}}}{{{commonscat|}}}{{{wikiquote|}}}{{{wikcionario|}}}{{{wikilibros|}}}{{{wikiversidad|}}}{{{wikispecies|}}}|, }}[[meta:{{{meta}}}|meta]]}}.}}</div></div><br>{{#if:{{{imagen|}}}|[[Archivo:{{{imagen}}}|thumb|derecha|border|{{{caption|}}}]]}}</includeonly><noinclude>{{Documentación}}</noinclude>
2pktqz5dlwrqu8ealpxw4x7efabtmkg
Módulo:String
828
215857
1653826
1543125
2026-05-14T15:36:19Z
Ignacio Rodríguez
3603
calmar dioses de Lua
1653826
Scribunto
text/plain
--[[
Este módulo está destinado a proporcionar acceso a las funciones de cadena (string) básicas.
]]
local str = {}
--[[
len
Parametros
s: La cadena a encontrar su longitud
]]
function str.len( frame )
local new_args = str._getParameters( frame.args, {'s'} );
local s = new_args['s'] or '';
return mw.ustring.len( s )
end
--[[
sub
Parametros
s: La cadena donde extraer la subcadena
i: La cadena donde extraer la subcadena.
j: Índice final de la subcadena, por defecto la longitud total, hasta el último carácter.
]]
function str.sub( frame )
local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } );
local s = new_args['s'] or '';
local i = tonumber( new_args['i'] ) or 1;
local j = tonumber( new_args['j'] ) or -1;
local len = mw.ustring.len( s );
-- Convertir negativos para la comprobación de rango
if i < 0 then
i = len + i + 1;
end
if j < 0 then
j = len + j + 1;
end
if i > len or j > len or i < 1 or j < 1 then
return str._error( 'Índice fuera del rango de la cadena' );
end
if j < i then
return str._error( 'Índices de la cadena no ordenados' );
end
return mw.ustring.sub( s, i, j )
end
--[[
match
Parametros
s: cadena donde se hace la búsqueda
pattern: patrón o cadena a buscar.
start: índice de la cadena dónde empezar a buscar, por defecto 1, el primer carácter.
match: si se encuentran múltiples coincidencias, especifica cuál de ellas devolver. Por defecto es 1, l
la primera coincidencia encontrada. Un número negativo cuenta desde el final, por lo tanto
match = -1 es la última coincidencia.
plain: indica si el patrón debe interpretarse como texto limpio, por defecto 'false'. nomatch: en caso de
no encontrar ninguna coincidencia, devuelve el valor de "nomatch" en lugar de un error.
Si el número match o el índice start están fuera del rango de la cadena, entonces la función genera un error.
También genera un error si no encuentra ninguna coincidencia.
Con el parámetro global ignore_errors = true se suprime el
error y devuelve una cadena vacía.
]]
function str.match( frame )
local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} );
local s = new_args['s'] or '';
local start = tonumber( new_args['start'] ) or 1;
local plain_flag = str._getBoolean( new_args['plain'] or false );
local pattern = new_args['pattern'] or '';
local match_index = math.floor( tonumber(new_args['match']) or 1 );
local nomatch = new_args['nomatch'];
if s == '' then
return str._error( 'La cadena donde buscar está vacía' );
end
if pattern == '' then
return str._error( 'La cadena de búsqueda está vacía ' );
end
if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then
return str._error( 'Índice d\'inicio fuera del rango de la cadena ' );
end
if match_index == 0 then
return str._error( 'Número de coincidencias fuera de rango' );
end
if plain_flag then
pattern = str._escapePattern( pattern );
end
local result
if match_index == 1 then
-- Encontrar la primera coincidencia es un caso sencillo.
result = mw.ustring.match( s, pattern, start )
else
if start > 1 then
s = mw.ustring.sub( s, start );
end
local iterator = mw.ustring.gmatch(s, pattern);
if match_index > 0 then
-- Búsqueda hacia adelante
for w in iterator do
match_index = match_index - 1;
if match_index == 0 then
result = w;
break;
end
end
else
-- Invierte búsqueda
local result_table = {};
local count = 1;
for w in iterator do
result_table[count] = w;
count = count + 1;
end
result = result_table[ count + match_index ];
end
end
if result == nil then
if nomatch == nil then
return str._error( 'Ninguna coincidencia encontrada' );
else
return nomatch;
end
else
return result;
end
end
--[[
pos
Parámetros
target: Cadena donde buscar.
pos: Índice del carácter a devolver.
]]
function str.pos( frame )
local new_args = str._getParameters( frame.args, {'target', 'pos'} );
local target_str = new_args['target'] or '';
local pos = tonumber( new_args['pos'] ) or 0;
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then
return str._error( 'Índice fuera del rango de la cadena' );
end
return mw.ustring.sub( target_str, pos, pos );
end
--[[
find
Parametros
source: Cadena donde buscar.
target: Cadena a buscar o patrón de búsqueda.
start: Índice de la cadena fuente donde empezar a buscar, por defecto 1, el primer carácter.
plain: Indica si la búsqueda debe interpretarse como texto limpio, de lo contrario como patrón Lua.
Por defecto es 'true'.
]]
function str.find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } );
local source_str = new_args['source'] or '';
local pattern = new_args['target'] or '';
local start_pos = tonumber(new_args['start']) or 1;
local plain = new_args['plain'] or true;
if source_str == '' or pattern == '' then
return 0;
end
plain = str._getBoolean( plain );
local start = mw.ustring.find( source_str, pattern, start_pos, plain )
if start == nil then
start = 0
end
return start
end
--[[
replace
Parámetros
source: Cadena donde buscar
pattern: Cadena de búsqueda o patrón a buscar
replace: Texto de reemplazo
count: Número de ocurrencias a reemplazar, por defecto todas.
plain: Indica si la búsqueda debe interpretarse como texto limpio, de lo contrario como patrón Lua. Por
defecto es 'true'
]]
function str.replace( frame )
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } );
local source_str = new_args['source'] or '';
local pattern = new_args['pattern'] or '';
local replace = new_args['replace'] or '';
local count = tonumber( new_args['count'] );
local plain = new_args['plain'] or true;
if source_str == '' or pattern == '' then
return source_str;
end
plain = str._getBoolean( plain );
if plain then
pattern = str._escapePattern( pattern );
replace = mw.ustring.gsub( replace, "%%", "%%%%" ); --Sólo es necesario secuencias de escape.
end
local result;
if count ~= nil then
result = mw.ustring.gsub( source_str, pattern, replace, count );
else
result = mw.ustring.gsub( source_str, pattern, replace );
end
return result;
end
--[[
función para repetir caracteres.
]]
function str.rep( frame )
local repetitions = tonumber( frame.args[2] )
if not repetitions then
return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )
end
return string.rep( frame.args[1] or '', repetitions )
end
function str.mayuscula(frame) -- Convierte en mayúsculas la primera letra que aparece en la edición de una cadena
local s = frame.args[1] or ''
if s ~= '' then
local cambio
local modo
if string.find(s, '|') ~= nil then -- Enlaces con etiqueta
modo = string.upper(string.match(s,'(|%a)'));
cambio = string.gsub(s,'|%a', modo,1);
elseif string.find(s, '[[]') ~= nil then -- Enlaces sin etiqueta
modo = string.upper(string.match(s,'^(..%a)'));
cambio = string.gsub(s,'^..%a', modo,1);
elseif string.match(s,'^%a') ~= nil then -- Sin enlace
modo = string.upper(string.match(s,'^(%a)'));
cambio = string.gsub(s,'^%a', modo, 1);
else
cambio = s;
end
return cambio;
end
end
--[[
Función de ayuda que rellena la lista de argumentos, para que el usuario pueda utilizar una combinación de
parámetros con nombre y sin nombre. Esto es importante porque los parámetros con nombre no funcionan igual
que los parámetros sin nombre cuando se encadenan recortes, y cuando se trata de cadenas
a veces se debe conservar o quitar espacios en blanco dependiendo de la aplicación.
]]
function str._getParameters( frame_args, arg_list )
local new_args = {};
local index = 1;
local value;
for i,arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index];
index = index + 1;
end
new_args[arg] = value;
end
return new_args;
end
--[[
Función de ayuda para controlar los mensajes de error.
]]
function str._error( error_str )
local frame = mw.getCurrentFrame()
local error_category = frame.args.error_category or 'Errores detectados por el módulo String'
local ignore_errors = frame.args.ignore_errors or false
local no_category = frame.args.no_category or false
if str._getBoolean(ignore_errors) then
return '';
end
error_str = '<strong class="error">Error del módulo String: ' .. error_str .. '</strong>'
if error_category ~= '' and not str._getBoolean( no_category ) then
error_str = '[[Categoría:Wikisource:' .. error_category .. ']]' .. error_str
end
return error_str
end
--[[
Función de ayuda para interpretar cadenas booleanas.
]]
function str._getBoolean( boolean_str )
local boolean_value
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower()
if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'
or boolean_str == '' then
boolean_value = false
else
boolean_value = true
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str
else
error( 'Ningún valor booleano encontrado' )
end
return boolean_value
end
--[[
Función de ayuda que escapa a todos los caracteres de patrón para que puedan ser tratados
como texto sin formato.
]]
function str._escapePattern( pattern_str )
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" );
end
-- Selección del caracter de una página que sea válido para la categoría ES-x (generalmente el primero)
function str.CaracterParaOrdenar(frame)
local frase
if type(frame) == 'string' then
frase = frame
else
frase = frame.args[1]
end
local CaracterEspecial = {
['"'] = true,
["¿"] = true,
["?"] = true,
["!"] = true,
[" "] = true,
["."] = true,
["¡"] = true,
[""] = true, --bizarro error donde el primer caracter se toma como uno en blanco
["("] = true,
["«"] = true }
local PrimerCaracter = mw.ustring.sub( frase , 1 , 1)
while (CaracterEspecial[PrimerCaracter]) do --bizarro error donde el primer caracter se toma como uno en blanco
frase = mw.ustring.sub( frase , 2 ) --Segundo caracter
PrimerCaracter = mw.ustring.sub( frase , 1 , 1)
end
if (PrimerCaracter == "Á") then PrimerCaracter = 'A'
elseif (PrimerCaracter == "É") then PrimerCaracter = 'E'
elseif (PrimerCaracter == "Í") then PrimerCaracter = 'I'
elseif (PrimerCaracter == "Ó") then PrimerCaracter = 'O'
elseif (PrimerCaracter == "Ú") then PrimerCaracter = 'U'
else
end
return PrimerCaracter
end
function str.delink(frame)
local s
if type(frame) == 'string' then
s = frame
else
s = frame.args[1]
end
s = mw.text.trim(s)
s = mw.uri.decode(s, "PATH") -- decode percent-encoded entities. Leave underscores and plus signs.
s = mw.text.decode(s, true) -- decode HTML entities.
-- Remove the colon if the link is using the [[Help:Colon trick]].
s = s:gsub("%[%[:", "[[")
-- Find the display area of the wikilink
if s:match("|") then -- Find if we're dealing with a piped link.
s = s:gsub("%[%[.-%|(.+)%]%]", "%1")
-- Remove new lines from the display of multiline piped links,
-- where the pipe is before the first new line.
s = s:gsub("\n", "")
else
s = s:gsub("%[%[(.-)%]%]", "%1")
end
-- remover entidades html
s = s:gsub("<[%a%d%s%\"'/#;:=%-]+>", "")
return s
end
return str
m83crjgw2wsy63zit0pvigsvf8gztnn
Plantilla:Loop
10
217225
1653822
812592
2026-05-14T15:27:08Z
Ignacio Rodríguez
3603
sintaxis
1653822
wikitext
text/x-wiki
<includeonly>{{#invoke:String|rep|{{{2|}}}|{{{1|}}}}}</includeonly><noinclude>{{documentación}}
</noinclude>
9tzg4qgyz6gcsgzpdulr45c4i2q3q6j
Módulo:Wikidata
828
217257
1653818
1605625
2026-05-14T15:04:48Z
Ignacio Rodríguez
3603
calmar dioses de Lua, funciones y variables no usadas. Falta muuuucha limpieza
1653818
Scribunto
text/plain
--[[*********************************************************************************
* Nombre: Módulo:Wikidata
*
* Descripción: Este módulo devuelve el valor o valores con o sin formato
* específico a una propiedad de Wikidata.
*
*********************************************************************************`-- ]]
local p = {}
local marco = mw.getCurrentFrame()
local datequalifiers = {'P585', 'P571', 'P580', 'P582'}
local primera = true
--[[ =========================================================================
Mensajes de error
========================================================================= `-- ]]
local avisos = {
["errores"] = {
["property-param-not-provided"] = "Parámetro de la propiedad no proporcionado.",
["entity-not-found"] = "Entrada no encontrada.",
["unknown-claim-type"] = "Tipo de notificación desconocida.",
["unknown-snak-type"] = "Tipo de dato desconocido.",
["unknown-datavalue-type"] = "Formato de dato desconocido.",
["unknown-entity-type"] = "Tipo de entrada desconocido.",
["unknown-value-module"] = "Debe ajustar ambos parámetros de valor y el valor del módulo de funciones.",
["value-module-not-found"] = "No se ha encontrado el módulo apuntado por valor-módulo.",
["value-function-not-found"] = "No se ha encontrado la función apuntada por valor-función.",
["qualifier-not-found"] = "Qualifier not found.",
["other entity"] = "Enlaces a elementos diferentes desactivado."
},
["somevalue"] = "''valor desconocido''",
["novalue"] = ""
}
--[[ =========================================================================
Función auxiliar para dar formato a los mensajes de error
========================================================================= `-- ]]
local function formatoError( clave )
return '<span class="error">' .. avisos.errores[clave] .. '</span>'
end
-- Módulos en los que están definidos los tipos de datos más habituales si son
-- diferentes de Wikidata/Formatos
--
local modulosTipos = {
['altura'] = 'Módulo:Wikidata/Formato magnitud',
['área'] = 'Módulo:Wikidata/Formato magnitud',
['educado en'] = 'Módulo:Wikidata/Formatos educación',
['imagen'] = 'Módulo:Wikidata/Formato imagen',
['lugar'] = 'Módulo:Wikidata/Formato lugar',
['formatoLugar']= 'Módulo:Wikidata/Formato lugar',
['magnitud'] = 'Módulo:Wikidata/Formato magnitud',
['movimiento'] = 'Módulo:Wikidata/Formato movimiento',
['periodicidad']= 'Módulo:Wikidata/Formato magnitud',
['premio'] = 'Módulo:Wikidata/Formato premio',
}
--[[ =========================================================================
Función para identificar el ítem correspondiente a la página o otro dado.
Esto último aún no funciona.
========================================================================= `-- ]]
local function SelecionEntidadPorId( id )
if id and id ~= '' then
return mw.wikibase.getEntityObject( id )
else
return mw.wikibase.getEntityObject()
end
end
--[[ =========================================================================
Función que identifica si el valor devuelto es un ítem o una propiedad
y en función de eso añade el prefijo correspondiente
========================================================================= `-- ]]
local function SelecionEntidadPorValor( valor )
if valor['entity-type'] == 'item' then
-- Prefijo de ítem
return 'q' .. valor['numeric-id']
elseif valor['entity-type'] == 'property' then
-- Prefijo de propiedad
return 'p' .. valor['numeric-id']
else
return formatoError( 'unknown-entity-type' )
end
end
local function obtenerFuncion(funcion, nombreModulo)
if not funcion then
return
elseif type(funcion) == 'function' then -- Uso desde LUA
return funcion
elseif funcion == '' or not nombreModulo or nombreModulo == '' then
return
else -- Uso desde una plantilla
local modulo
if not nombreModulo or nombreModulo == '' or nombreModulo == 'Wikidata/Formatos' then
modulo = require(modulosTipos[funcion] or 'Módulo:Wikidata/Formatos')
else
modulo = require ('Módulo:' .. nombreModulo)
end
if not modulo then
return nil, formatoError( 'value-module-not-found' )
elseif not modulo[funcion] then
return nil, formatoError( 'value-function-not-found' )
else
return modulo[funcion]
end
end
end
local function formatoValorDato( valorDato, opciones, calificativos)
local funcion, mensajeError = obtenerFuncion(opciones['valor-función'] or opciones['value-function'] or opciones['funcion'], opciones['valor-módulo'] or opciones['modulo'])
if mensajeError then
return mensajeError
elseif funcion then
local opcionesEntidad = {}
for k, v in pairs(opciones) do
opcionesEntidad[k] = v
end
if mw.ustring.find(opciones['formatoTexto'],'mayúscula' ) and
(primera or (opciones['separador'] and opciones['separador'] ~= 'null') or
(opciones['lista'] and opciones['lista'] ~= '')) then
opcionesEntidad['mayúscula'] = 'sí'
primera = false
end
if mw.ustring.find(opciones['formatoTexto'],'cursivas') then
opcionesEntidad['cursivas'] = 'sí'
end
return funcion(valorDato.value, opcionesEntidad, marco, calificativos)
end
-- == Formatos por defecto en función del tipo de valor ==
-- * Para tipo coordenadas cuando se da como valor de propiedad: latitud, longitud o precisión
if opciones.propiedad == 'latitud' then
return valorDato.value['latitude']
elseif opciones.propiedad == 'longitud' then
return valorDato.value['longitude']
elseif opciones.propiedad == 'precisión' then
return valorDato.value['precision']
-- * Con el resto de valores en propiedad
elseif valorDato.type == 'wikibase-entityid' then -- Tipo: Número de entidad que puede ser un ítem o propiedad
local opcionesEntidad = {}
if mw.ustring.find(opciones['formatoTexto'],'mayúscula') and
(primera or (opciones['separador'] and opciones['separador'] ~= 'null') or
(opciones['lista'] and opciones['lista'] ~= '')) then
opcionesEntidad['mayúscula'] = 'sí'
primera = false
end
opcionesEntidad.enlace = opciones.enlace
opcionesEntidad.etiqueta = opciones.etiqueta
opcionesEntidad['debeExistir'] = opciones['debeExistir']
if mw.ustring.find(opciones['formatoTexto'],'cursivas') then
opcionesEntidad.cursivas = 'sí'
end
return p.formatoIdEntidad( SelecionEntidadPorValor( valorDato.value ), opcionesEntidad)
elseif valorDato.type == 'string' then -- Tipo: Cadena de texto (string)
return valorDato.value
elseif valorDato.type == 'url' then --Tipo URL (dirección web)
return valorDato.url
elseif valorDato.type == 'time' then -- Tipo: Fecha/hora
local opcionesFecha={['formatoFecha']=opciones['formatoFecha'],enlace=opciones.enlace}
if mw.ustring.find(opciones['formatoTexto'] or '','mayúscula') and primera then
opcionesFecha['mayúscula']='sí'
end
return require('Módulo:Wikidata/Fecha').FormateaFechaHora(valorDato.value, opcionesFecha, calificativos)
elseif valorDato.type == 'monolingualtext' then -- Tipo: monoligüe
if valorDato.value then
if opciones.idioma then
for k, v in pairs(valorDato) do
if v.language == opciones.idioma then
return v.text
end
end
else
return valorDato.value.text
end
else
return ''
end
elseif valorDato.type == 'quantity' then -- Tipo: Cantidad
return require('Módulo:Wikidata/Formatos').formatoUnidad(valorDato, opciones)
elseif valorDato.value['latitude'] and valorDato.value['longitude'] then -- Tipo: Coordenadas
local globo = require('Módulo:Wikidata/Globos')[valorDato.value.globe]
--Concatenamos los valores de latitud y longitud dentro de la plantilla Coord
if globo ~= 'earth' then
return marco:preprocess('{{coord|' .. valorDato.value['latitude'] .. '|' ..
valorDato.value['longitude'] .. '|globe:' .. globo .. '_type:' .. opciones.tipo .. '|display=' ..
opciones.display ..'|formato=' .. opciones.formato..'}}')
else
return marco:preprocess('{{coord|' .. valorDato.value['latitude'] .. '|' ..
valorDato.value['longitude'] .. '|type:' .. opciones.tipo .. '|display=' ..
opciones.display ..'|formato=' .. opciones.formato..'}}')
end
else
return formatoError( 'unknown-datavalue-type' ) -- Si no es de ninguno de estos tipos devolverá error valor desconocido
end
end
--[[ =========================================================================
Función para determinar el rango
========================================================================= `-- ]]
local function getRango(tablaDeclaraciones)
local rank = 'deprecated'
for indice, declaracion in pairs(tablaDeclaraciones) do
if declaracion.rank == 'preferred' then
return 'preferred'
elseif declaracion.rank == 'normal' then
rank = 'normal'
end
end
return rank
end
--[[ =========================================================================
Función para determinar la declaracion o declaraciones de mayor rango
========================================================================= `-- ]]
local function filtrarDeclaracionPorRango(tablaDeclaraciones)
local rango = getRango(tablaDeclaraciones)
local tablaAuxiliar = tablaDeclaraciones
tablaDeclaraciones = {}
for indice, declaracion in pairs(tablaAuxiliar) do
if declaracion.rank == rango then
table.insert(tablaDeclaraciones, declaracion)
end
end
return tablaDeclaraciones
end
--[[ =========================================================================
Función para seleccionar el tipo de declaración: Referencia, valor principal
o calificador
========================================================================= `-- ]]
local function seleccionDeclaracion(declaracion, opciones)
local propiedadFuente = {}
local calificador = opciones.formatoCalificador ~= '()' and opciones.calificador
if calificador ~= '' and calificador and declaracion['qualifiers'] then
if declaracion['qualifiers'][mw.ustring.upper(calificador)] then
return declaracion.qualifiers[mw.ustring.upper(calificador)][1] -- devuelve el calificador (solo devolverá el primer valor)
else
return "" --Para que no lance excepción si no existe el calificador
end
elseif opciones.dato == 'fuente' and declaracion['references'] then
local fuente = declaracion.references[1]['snaks']
for k,v in pairs(fuente) do
propiedadFuente = k
end
return declaracion.references[1]['snaks'][propiedadFuente][1] -- devuelve la fuente (queda que se itinere la tabla)
elseif (calificador == '' or not calificador) and (opciones.dato ~= 'fuente') then
return declaracion.mainsnak -- devuelve el valor principal
else
return ''
end
end
--[[ =========================================================================
Función para recopilar las declaraciones
========================================================================= `-- ]]
function p.getDeclaraciones(entityId)
-- == Comprobamos que existe un ítem enlazado a la página en Wikidata ==
if not pcall (SelecionEntidadPorId, entityId ) then
return false
end
local entidad = SelecionEntidadPorId(entityId)
if not entidad then
return '' -- Si la página no está enlazada a un ítem no devuelve nada
end
-- == Comprobamos que el ítem tiene declaraciones (claims) ==
if not entidad.claims then
return '' -- Si el ítem no tiene declaraciones no devuelve nada
end
-- == Declaración de formato y concatenado limpio ==
return entidad.claims
end
--[[ =========================================================================
Función para crear la cadena que devolverá la declaración
========================================================================= `-- ]]
local function valinQualif(claim, qualifs)
local claimqualifs = claim.qualifiers
local vals, vals1, datavalue, value
if not claimqualifs then
return nil
end
for i, qualif in pairs(qualifs) do
vals = claimqualifs[qualif]
if vals then
vals1 = vals[1]
if vals1 then
datavalue=vals1.datavalue
if datavalue then
value = datavalue.value
if value then
return value.time
end
end
end
end
end
end
function p.getPropiedad(opciones, declaracion)
local propiedad
local tablaOrdenada
if opciones.propiedad == 'precisión' or opciones.propiedad == 'latitud' or opciones.propiedad == 'longitud' then
propiedad = 'P625' -- Si damos el valor latitud, longitud o precisión equivaldrá a dar p625
else
propiedad = opciones.propiedad -- En el resto de casos se lee lo dado
end
if not propiedad then -- Comprobamos si existe la propiedad dada y en caso contrario se devuelve un error
return formatoError( 'property-param-not-provided' )
end
if declaracion then
tablaOrdenada = declaracion
elseif not p.getDeclaraciones(opciones.entityId) then
return formatoError( 'other entity' )
elseif p.getDeclaraciones(opciones.entityId)[mw.ustring.upper(propiedad)] then
tablaOrdenada = p.getDeclaraciones(opciones.entityId)[mw.ustring.upper(propiedad)]
else
return ''
end
-- Evitar que pete cuando se haga el find en opciones['formatoTexto'] si vale nil
if not opciones['formatoTexto'] then
opciones['formatoTexto'] = ''
end
--Dejar en su caso los valores de mayor rango
if (opciones.rangoMayor == 'sí') then
tablaOrdenada = filtrarDeclaracionPorRango(tablaOrdenada)
end
--Ordenar en su caso por fecha. Ver la función chronosort de :fr:Module:Wikidata/Récup
if opciones.ordenar == 'por fecha' then
require('Módulo:Tablas').ordenar(tablaOrdenada,
function(elemento1,elemento2)
local fecha1 = valinQualif(elemento1, datequalifiers) or '' -- elemento1.qualifiers.P580[1].datavalue.value.time or ''
local fecha2 = valinQualif(elemento2, datequalifiers) or '' -- elemento2.qualifiers.P580[1].datavalue.value.time or ''
return fecha1 < fecha2
end
)
end
if not tablaOrdenada[1] then
return
end
-- == Si solo se desea que devuelva un valor ==
-- Pendiente eliminar el parámetro y sustituirlo por un nuevo valor del parámetro lista=no que haría lo mismo que opciones.uno = sí
if opciones.uno == 'sí' then -- Para que devuelva el valor de índice 1
tablaOrdenada = {tablaOrdenada[1]}
elseif opciones.uno == 'último' then -- Para que devuelva la última entrada de la tabla
tablaOrdenada = {tablaOrdenada[#tablaOrdenada]}
end
-- == Creamos una tabla con los valores que devolverá ==
local formatoDeclaraciones = {}
local hayDeclaraciones
for i, dec in pairs(tablaOrdenada) do
local declaracionFormateada = p.formatoDeclaracion(dec, opciones)
if declaracionFormateada and declaracionFormateada ~= '' then
table.insert(formatoDeclaraciones, declaracionFormateada)
hayDeclaraciones = true
end
end
primera = true
if not hayDeclaraciones then
return
end
-- Aplicar el formato a la lista de valores según el tipo de lista de las
-- opciones
local listaDeclaraciones = mw.text.listToText( formatoDeclaraciones, '</li><li>', '</li><li>' )
-- Añadir en su caso un lápiz
if opciones.linkback == 'sí' then
listaDeclaraciones = p.addLinkback( listaDeclaraciones, opciones.entityId, opciones.propiedad )
end
if opciones['lista'] == 'no ordenada' then
return '<ul><li>' .. listaDeclaraciones .. '</li></ul>'
elseif opciones['lista'] == 'ordenada' then
return '<ol><li>' .. listaDeclaraciones .. '</li></ol>'
elseif opciones['lista'] == 'nobullet' then
return '<ul style="list-style-type:none;list-style-image:none;margin-left:0;"><li>' .. listaDeclaraciones .. '</li></ul>'
else
-- valores separados por coma o por el separador y la
-- conjunción de las opciones
local separador, conjuncion
if opciones['conjunción'] == 'null' then
conjuncion = nil
else
conjuncion = opciones['conjunción']
end
if opciones['separador'] == 'null' then
separador = nil
else
separador = opciones['separador']
end
if #formatoDeclaraciones > 1 then
if not conjuncion then
conjuncion = 'y'
end
if marco and conjuncion == 'y' then
conjuncion = ' ' .. string.sub(marco:preprocess('{{y-e|{{Desvincular|' .. formatoDeclaraciones[#formatoDeclaraciones] .. '}}}}'), 1, 1) .. ' '
elseif conjuncion == 'y' or conjuncion == 'o' then
conjuncion = ' ' .. conjuncion .. ' '
end
end
-- Añadir en su caso un lápiz
if opciones.linkback == 'sí' then
return p.addLinkback(mw.text.listToText( formatoDeclaraciones, separador,conjuncion ), opciones.entityId, opciones.propiedad)
else
return mw.text.listToText( formatoDeclaraciones, separador, conjuncion )
end
end
end
-- devuelve el ID de la página en Wikidata (Q...), o nada si la página no está conectada a Wikidata
function p.pageId()
local entity = mw.wikibase.getEntityObject()
if not entity then return nil else return entity.id end
end
--[[ =========================================================================
Función que comprueba si la página está enlazada a Wikidata
en caso de estarlo pasa el valor como a argumento a la función formatSnak()
========================================================================= `-- ]]
function p.formatoDeclaracion( declaracion, opciones)
if not declaracion.type or declaracion.type ~= 'statement' then -- Se comprueba que tiene valor de tipo y que este sea statement (declaración) lo cual pasa siempre que existe la propiedad
return formatoError( 'unknown-claim-type' ) -- Si no se cumple devuelve error
end
-- En el caso de que haya calificador se devuelve a la derecha del valor de la
-- declaración entre paréntesis.
local calificativo = opciones.calificativo or opciones.calificador
if calificativo and declaracion.qualifiers then
-- De momento los calificativos, normalmente años, no se enlazan
local opcionesCalificativo = {['formatoTexto']='', enlace='no', ['formatoFecha']='año'} -- Pendiente
local wValorCalificativo
local wValorCalificativoFormateado
local funcionCalificativo, mensajeError = obtenerFuncion(calificativo, opciones['módulo calificativo'])
if mensajeError then
return mensajeError
elseif funcionCalificativo then
-- Utilizar la función recibida sobre todos los calificativos
wValorCalificativo = declaracion.qualifiers
wValorCalificativoFormateado = funcionCalificativo(wValorCalificativo, opcionesCalificativo)
elseif opciones.formatoCalificador and opciones.formatoCalificador == '()' then
wValorCalificativo = declaracion.qualifiers[mw.ustring.upper(calificativo)]
if wValorCalificativo and wValorCalificativo[1] then
wValorCalificativoFormateado = p.formatoDato(wValorCalificativo[1], opcionesCalificativo)
end
elseif opciones.formatoCalificador and #mw.text.split(opciones.formatoCalificador, '%.') == 2 then
local moduloFormatoCalificador = mw.text.split(opciones.formatoCalificador, '%.')
local formateado = require ('Módulo:' .. moduloFormatoCalificador[1])
if not formateado then
return formatoError( 'value-module-not-found' )
end
local fun = formateado[moduloFormatoCalificador[2]]
if not fun then
return formatoError( 'value-function-not-found' )
end
if mw.ustring.find(opciones['formatoTexto'],'mayúscula') and
(primera or (opciones['separador'] and opciones['separador'] ~= 'null') or
(opciones['lista'] and opciones['lista'] ~= '')) then
opciones['mayúscula'] = 'sí'
primera = false
end
if mw.ustring.find(opciones['formatoTexto'],'cursivas') then
opciones['cursivas'] = 'sí'
end
wValorCalificativoFormateado = fun( declaracion.qualifiers, opciones, marco)
--return require('Módulo:Tablas').tostring(declaracion)
else
-- Utilizar el primer valor del calificativo de la propiedad recibida
wValorCalificativo = declaracion.qualifiers[mw.ustring.upper(calificativo)]
if wValorCalificativo and wValorCalificativo[1] then
wValorCalificativoFormateado = p.formatoDato(wValorCalificativo[1], opcionesCalificativo)
end
end
-- no usado?
-- if opciones.separadorcalificador then separador = opciones.separadorcalificador else separador = ' ' end
if wValorCalificativoFormateado then
local datoFormateado = p.formatoDato(declaracion.mainsnak, opciones)
return (datoFormateado and datoFormateado .. ' <small>(' .. wValorCalificativoFormateado .. ')</small>') or nil
end
end
-- Si no hay calificativo.
return p.formatoDato(seleccionDeclaracion(declaracion, opciones), opciones, declaracion.qualifiers)
end
--[[ =========================================================================
Función que comprueba el tipo de dato (snaktype)
si es value pasa el valor como argumento a la función formatoValorDato()
========================================================================= `-- ]]
function p.formatoDato( dato, opciones, calificativos)
if not dato or dato == '' then
return ''
end
if dato.snaktype == 'somevalue' then
-- Fecha más temprana
if calificativos then
if calificativos['P1319'] and calificativos['P1319'][1] and
calificativos['P1319'][1].datavalue and
calificativos['P1319'][1].datavalue.type=='time' then
local opcionesFecha={['formatoFecha']=opciones['formatoFecha'],enlace=opciones.enlace}
return 'post. ' .. require('Módulo:Wikidata/Fecha').FormateaFechaHora(calificativos['P1319'][1].datavalue.value, opcionesFecha)
end
end
-- Si no tiene un calificativo válido
return avisos['somevalue'] -- Valor desconocido
elseif dato.snaktype == 'novalue' then
return avisos['novalue'] -- Sin valor
elseif dato.snaktype == 'value' then
return formatoValorDato( dato.datavalue, opciones, calificativos) -- Si tiene el tipo de dato se pasa el valor a la función formatDatavalue()
else
return formatoError( 'unknown-snak-type' ) -- Tipo de dato desconocido
end
end
--[[ =========================================================================
Función que establece el tipo de formato en función del tipo de valor
(valorDato.type) y en caso de solicitarse un formato complemetario asocia
el módulo donde se establece el formato y la función de este que lo establece
========================================================================= `-- ]]
--[[ =========================================================================
Damos formato a los enlaces internos
========================================================================= `-- ]]
-- Opciones:
-- - enlace: Valores posibles 'sí' o 'no'
-- - mayúscula: Valores posibles 'sí' o 'no'
-- - cursivas: Valores posibles 'sí' o 'no'
function p.formatoIdEntidad(idEntidad, opciones)
local enlace = mw.wikibase.sitelink(idEntidad)
local etiqueta = mw.wikibase.label(idEntidad)
return require('Módulo:Wikidata/Formatos').enlazar(enlace, etiqueta, idEntidad, opciones)
end
--[[ =========================================================================
Función principal
========================================================================= `-- ]]
function p.Wikidata( frame )
local args = frame.args
if args.valor == 'no' then
return
end
local parentArgs = frame:getParent().args
-- Copiar los argumentos
local argumentos = {}
for k, v in pairs(args) do
argumentos[k] = v
end
for k, v in pairs(parentArgs) do
if not argumentos[k] then
argumentos[k] = v
end
end
--if true then return require('Módulo:Tablas').tostring(argumentos) end
-- No generar el valor de Wikidata si se ha facilitado un valor local y
-- el valor local es prioritario.
local valorWikidata;
if (args.prioridad ~= 'sí' or (args.importar and args.importar == 'no')) and args.valor and args.valor ~= '' then
valorWikidata = '';
else
valorWikidata = p.getPropiedad(argumentos, nil);
end
local categorias = '';
local namespace = frame:preprocess('{{NAMESPACENUMBER}}');
if (namespace == '0' and (not args.categorias or args.categorias ~= 'no') and
args.propiedad and string.upper(args.propiedad) ~= 'P18' -- P18: imagen de Commons
and string.upper(args.propiedad) ~= 'P41' -- P41: imagen de la bandera
and string.upper(args.propiedad) ~= 'P94' -- P94: imagen del escudo de armas
and string.upper(args.propiedad) ~= 'P109' -- P109: firma de persona
and string.upper(args.propiedad) ~= 'P154') then -- P154: logotipo
if valorWikidata ~= '' and args.valor and args.valor ~= '' then
categorias = '[[Categoría:Wikipedia:Artículos con datos locales]]'
elseif valorWikidata and valorWikidata == '' and args.valor and args.valor ~= '' and
(not args.calificador or args.calificador == '') and
(not args.dato or args.dato == '' or args.dato ~= 'fuente')then
categorias = '[[Categoría:Wikipedia:Artículos con datos por trasladar a Wikidata]]'
end
end
if args.prioridad == 'sí' and valorWikidata ~= '' then -- Si se da el valor sí a prioridad tendrá preferencia el valor de Wikidata
if args.importar and args.importar == 'no' and args.valor and args.valor ~= '' then
return args.valor .. categorias
elseif valorWikidata then
return valorWikidata .. categorias -- valor que sustituye al valor de Wikidata parámetro 2
else
return categorias
end
elseif args.valor and args.valor ~= '' then
return args.valor .. categorias
elseif args.importar and args.importar == 'no' then
return ''
elseif valorWikidata then -- Si el valor es nil salta una excepcion al concatenar
return valorWikidata .. categorias
else
return ''
end
end
function p.addLinkback(valorPropiedad, idEntidad, idPropiedad)
local lidEntidad
if valorPropiedad and idPropiedad then
lidEntidad= (idEntidad ~='' and idEntidad) or mw.wikibase.getEntityIdForCurrentPage()
end
if lidEntidad then
return valorPropiedad .. '<span class=\"wikidata-link noprint\"> [[Archivo:Blue_pencil.svg|Ver y modificar los datos en Wikidata|10px|baseline|alt=Ver y modificar los datos en Wikidata|enlace=https://www.wikidata.org/wiki/' .. lidEntidad .. '?uselang=es#' .. idPropiedad ..
']]</span>'
else
return valorPropiedad
end
end
--------------------------------------------------------------------
-- A continuación, función p.claim y funciones locales necesarias --
-- Adaptado de https://ca.wikisource.org/wiki/Module:Wikidata --
--------------------------------------------------------------------
local wiki = {
langcode = mw.language.getContentLanguage().code
}
-- Table of language codes: requested or default and its fallbacks
local function findLang(langcode)
if mw.language.isKnownLanguageTag(langcode or '') == false then
local cframe = mw.getCurrentFrame()
local pframe = cframe:getParent()
langcode = pframe and pframe.args.lang
if mw.language.isKnownLanguageTag(langcode or '') == false then
if not mw.title.getCurrentTitle().isContentPage then
langcode = cframe:preprocess('{{int:lang}}')
end
if mw.language.isKnownLanguageTag(langcode or '') == false then
langcode = wiki.langcode
end
end
end
local languages = mw.language.getFallbacksFor(langcode)
table.insert(languages, 1, langcode)
if langcode == wiki.langcode then
for _, l in ipairs({}) do
table.insert(languages, l)
end
end
return languages
end
-- Argument is 'set' when it exists (not nil) or when it is not an empty string.
local function isSet(var)
return not (var == nil or (type(var) == 'string' and mw.text.trim(var) == ''))
end
-- get safely a serialized snak
local function getSnak(statement, snaks)
local ret = statement
for i, v in ipairs(snaks) do
if not ret then return end
ret = ret[v]
end
return ret
end
-- mw.wikibase.getLabelWithLang or getLabelByLang with a table of languages
local function getLabelByLangs(id, languages)
local label
local lang
for _, l in ipairs(languages) do
if l == wiki.langcode then
-- using getLabelWithLang when possible instead of getLabelByLang
label, l = mw.wikibase.getLabelWithLang(id)
else
label = mw.wikibase.getLabelByLang(id, l)
end
if label then
lang = l
break
end
end
return label, lang
end
-- format data value wikibase-entityid: types wikibase-item, wikibase-property
local function printDatatypeEntity(data, parameters)
local entity_id = data['id']
if parameters.formatting == 'raw' then
return entity_id, entity_id
end
local label, _ = getLabelByLangs(entity_id, parameters.lang)
local sitelink = mw.wikibase.getSitelink(entity_id)
local labelcase = label or sitelink
if parameters.citado and parameters.citado ~= '' then labelcase = parameters.citado end
local entity_page = 'Special:EntityPage/' .. entity_id
local ret1
if parameters.formatting == 'label' then
ret1 = labelcase or entity_id
else
if sitelink then
ret1 = '[[' .. sitelink .. '|' .. labelcase .. ']]'
elseif label and string.match(parameters.formatting or '', 'internallink$') and not mw.wikibase.getEntityIdForTitle(label) then
ret1 = '[[' .. label .. '|' .. labelcase .. ']]'
else --si no existe la pág. en WS, crea enlace a WD
ret1 = '[[d:' .. entity_page .. '|<span style="color:#5f9cbb;">' .. (labelcase or entity_id) .. '</span>]]'
end
end
return ret1
end
local function getSnakValue(snak, parameters)
if snak.snaktype == 'value' then
-- see Special:ListDatatypes
if snak.datatype == 'wikibase-item' or snak.datatype == 'wikibase-property' then
return printDatatypeEntity(snak.datavalue.value, parameters)
end
elseif snak.snaktype == 'somevalue' then
if parameters.referenced and parameters.referenced ~= '' then return parameters.referenced end
if parameters.citado and parameters.citado ~= '' then return parameters.citado end
end
return mw.wikibase.renderSnak(snak)
end
local function orderedpairs(array, order)
if not order then return pairs(array) end
-- return iterator function
local i = 0
return function()
i = i + 1
if order[i] then
return order[i], array[order[i]]
end
end
end
local function getCitadoValue(claim)
local result = ""
if claim.qualifiers then
if claim.qualifiers['P1932'] then
local wqualif = claim.qualifiers['P1932'][1].datavalue.value
if wqualif and wqualif ~= '' then
return wqualif
end
end
end
return result
end
local function getReferencedValue(claim, parameters, reftypes)
local result = ""
-- traverse through all references
for ref in pairs(claim.references or {}) do
local refparts
-- traverse through all parts of the current reference
for snakkey, snakval in orderedpairs(claim.references[ref].snaks or {}, claim.references[ref]["snaks-order"]) do
for i, reftype in ipairs(reftypes) do
if snakkey == reftype then
if refparts then refparts = refparts .. ", " else refparts = "" end
for snakidx = 1, #snakval do
if snakidx > 1 then refparts = refparts .. ", " end
refparts = refparts .. getSnakValue(snakval[snakidx], parameters)
end
end
end
end
if refparts then result = result .. refparts end
end
return result
end
local function getQualifierSnak(claim, qualifierId, parameters)
-- a "snak" is Wikidata terminology for a typed key/value pair
-- a claim consists of a main snak holding the main information of this claim,
-- as well as a list of attribute snaks and a list of references snaks
if qualifierId then
-- search the attribute snak with the given qualifier as key
if claim.qualifiers then
local qualifier = claim.qualifiers[qualifierId]
if qualifier then
if qualifier[1].datatype == "monolingualtext" then
-- iterate over monolingualtext qualifiers to get local language
for idx in pairs(qualifier) do
if getSnak(qualifier[idx], {"datavalue", "value", "language"}) == parameters.lang[1] then
return qualifier[idx]
end
end
elseif parameters.list then
return qualifier
else
return qualifier[1]
end
end
end
return nil, formatoError("qualifier-not-found")
else
return claim.mainsnak
end
end
local function getValueOfClaim(claim, qualifierId, parameters)
local snak, error = getQualifierSnak(claim, qualifierId, parameters)
local reftypes = {'P5997'} -- propiedades "tipo referencia" que pueden denotar un valor oculto
parameters.referenced = getReferencedValue(claim, parameters, reftypes)
parameters.citado = getCitadoValue(claim)
if not snak then
return nil, nil, error
elseif snak[1] then -- a multi qualifier
local result = {}
for idx in pairs(snak) do
result[#result + 1] = getSnakValue(snak[idx], parameters)
end
return mw.text.listToText(result), nil
else -- a property or a qualifier (lo habitual)
return getSnakValue(snak, parameters)
end
end
local function getEntityId(args, pargs, unnamed)
pargs = pargs or {}
local id = args.item or args.from or (unnamed and mw.text.trim(args[1] or '') or nil)
if not isSet(id) then
id = pargs.item or pargs.from or (unnamed and mw.text.trim(pargs[1] or '') or nil)
end
if not isSet(id) then
id = mw.wikibase.getEntityIdForCurrentPage()
end
return id
end
local function getArg(value, default, aliases)
if type(value) == 'boolean' then return value
elseif value == "false" or value == "no" then return false
elseif value == "true" or value == "yes" then return true
elseif value and aliases and aliases[value] then return aliases[value]
elseif isSet(value) then return value
elseif default then return default
else return nil
end
end
-- Main function claim ---------------------------------------------
-- on debug console use: =p.claim{item="Q...", property="P...", ...}
function p.claim(frame)
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
-- arguments
local parameters = {}
parameters.id = getEntityId(args, pargs)
if parameters.id == nil then return end
parameters.property = string.upper(args.property or "")
local qualifierId = {}
qualifierId[1] = getArg(string.upper(args.qualifier or ""))
local i = 2
while isSet(args["qualifier" .. i]) do
qualifierId[i] = string.upper(args["qualifier" .. i])
i = i + 1
end
parameters.formatting = getArg(args.formatting)
parameters.list = getArg(args.list, true, {firstrank='bestrank'})
parameters.tabla = getArg(args.tabla)
local default = args.default
parameters.lang = findLang(args.lang)
-- fetch property
local claims = mw.wikibase.getBestStatements(parameters.id, parameters.property)
if #claims == 0 then
return default
end
-- defaults for table
local preformat, postformat = "", ""
-- get initial sort indices
local sortindices = {}
for idx in pairs(claims) do
sortindices[#sortindices + 1] = idx
end
local result
if parameters.tabla then
local value
result = {}
local values = {}
for idx in pairs(claims) do
local claim = claims[sortindices[idx]]
value = getValueOfClaim(claim, qualifierId[1], parameters)
values[#values + 1] = {}
if value then
values[#values]["col0"] = value
result[#values] = value
end
end
elseif parameters.list then
parameters.separator = mw.message.new('Comma-separator'):inLanguage(parameters.lang[1]):plain()
parameters.conjunction = (mw.message.new('And'):inLanguage(parameters.lang[1]):plain() .. mw.message.new('Word-separator'):inLanguage(parameters.lang[1]):plain())
-- iterate over all elements and return their value (if existing)
local value
result = {}
local values = {}
for idx in pairs(claims) do
local claim = claims[sortindices[idx]]
value = getValueOfClaim(claim, qualifierId[1], parameters)
values[#values + 1] = {}
if value then
values[#values]["col0"] = value
result[#values] = value
end
end
result = preformat .. mw.text.listToText(result, parameters.separator, parameters.conjunction) .. postformat
else
-- return first element
local claim = claims[sortindices[1]]
result = getValueOfClaim(claim, qualifierId[1], parameters)
end
if not isSet(result) then
result = default
end
return result or ''
end
--------------------------------------------------------------------------------
-- Get an Item based on what's passed in the 'wikidata' or 'page' parameters of
-- the args, or the current page's ID otherwise.
local function getItem( args )
local id = nil
-- If args is a table with an appropriate element, use it.
if type( args ) == 'table' then
if args.wikidata ~= '' and args.wikidata ~= nil then
id = args.wikidata
elseif args.wikidata_id ~= '' and args.wikidata_id ~= nil then
id = args.wikidata_id
elseif args.page ~= '' and args.page ~= nil then
local title = mw.title.new( args.page )
id = mw.wikibase.getEntityIdForTitle( title.nsText .. title.text )
-- If no entity for this page, maybe it's a subpage and we should look for the root page's entity.
if id == nil then
id = mw.wikibase.getEntityIdForTitle( title.nsText .. title.rootText )
end
end
end
if type( args ) == 'string' and args ~= '' then
id = args
end
return mw.wikibase.getEntity( id )
end
--------------------------------------------------------------------------------
-- Exported method. Get wikitext for displaying an edition's badges from Wikidata.
-- Test: =p.badge({args={qid='Q30097675'}})
function p.badge( frame )
local args = frame.args or frame -- via invoke or require
local item = getItem( args ) --por defecto, id de la página
local badges = {}
if args.qid ~= nil then --pero si pasamos un qid, id pasado
item = mw.wikibase.getEntity(args.qid)
end
local status = args.ws
-- status en el índice a badge
if status == 'C' or status == 'P' then
status = "Q20748091"
elseif status == 'V' then
status = "Q20748092"
elseif status == 'T' then
status = "Q20748093"
elseif status == 'E' or status == 'L' then
status = "Q20748094"
end
if not ( item and item.sitelinks and item.sitelinks.eswikisource and #item.sitelinks.eswikisource.badges > 0) and not (status) then
return ''
end
-- alguno con más prioridad que el otro? TODO: hacer algo en caso de discrepancia
if status then
badges = {status}
end
if ( item and item.sitelinks and item.sitelinks.eswikisource and #item.sitelinks.eswikisource.badges > 0) then
badges = {unpack(badges), unpack(item.sitelinks.eswikisource.badges)}
end
local out = ''
for _, badge in pairs( badges ) do
local badgeOut = ''
local badgeItem = mw.wikibase.getEntity( badge )
local wikisourceBadgeClass = 'Q75042035'
local badgeName = ''
if badgeItem.claims.P31[1].mainsnak.datavalue.value.id == wikisourceBadgeClass and badgeItem.claims.P18 ~= nil then
local imageName = badgeItem.claims.P18[1].mainsnak.datavalue.value
if mw.wikibase.getLabel( badge ) ~= nil then
badgeName = mw.wikibase.getLabel( badge )
end
-- TODO: Crear una página de ayuda apropiada para el nivel de los *textos*
if args.indicator ~= nil then
badgeOut = '<span class="indicator-badge">[[File:' .. imageName .. '|16px|link=Ayuda:Nivel de las páginas|' .. badgeName .. ']]</span>'
else
badgeOut = '<indicator name="wikisource-badge-' .. badgeName .. '">' .. badgeOut .. '</indicator>'
end
--[[ if args.category ~= nil and badgeItem.claims.P910 ~= nil then
local categoryQid = badgeItem.claims.P910[1].mainsnak.datavalue.value.id
local category = mw.wikibase.getEntity( categoryQid )
badgeOut = badgeOut .. '['..'[' .. category.sitelinks.enwikisource.title .. ']'..']'
end ]]
out = out .. badgeOut
end
end
return mw.getCurrentFrame():preprocess(out)
end
return p
sj0b8c7hshayjboz23cu1qc73ehhcr8
1653820
1653818
2026-05-14T15:15:35Z
Ignacio Rodríguez
3603
require strict
1653820
Scribunto
text/plain
require('strict')
--[[*********************************************************************************
* Nombre: Módulo:Wikidata
*
* Descripción: Este módulo devuelve el valor o valores con o sin formato
* específico a una propiedad de Wikidata.
*
*********************************************************************************`-- ]]
local p = {}
local marco = mw.getCurrentFrame()
local datequalifiers = {'P585', 'P571', 'P580', 'P582'}
local primera = true
--[[ =========================================================================
Mensajes de error
========================================================================= `-- ]]
local avisos = {
["errores"] = {
["property-param-not-provided"] = "Parámetro de la propiedad no proporcionado.",
["entity-not-found"] = "Entrada no encontrada.",
["unknown-claim-type"] = "Tipo de notificación desconocida.",
["unknown-snak-type"] = "Tipo de dato desconocido.",
["unknown-datavalue-type"] = "Formato de dato desconocido.",
["unknown-entity-type"] = "Tipo de entrada desconocido.",
["unknown-value-module"] = "Debe ajustar ambos parámetros de valor y el valor del módulo de funciones.",
["value-module-not-found"] = "No se ha encontrado el módulo apuntado por valor-módulo.",
["value-function-not-found"] = "No se ha encontrado la función apuntada por valor-función.",
["qualifier-not-found"] = "Qualifier not found.",
["other entity"] = "Enlaces a elementos diferentes desactivado."
},
["somevalue"] = "''valor desconocido''",
["novalue"] = ""
}
--[[ =========================================================================
Función auxiliar para dar formato a los mensajes de error
========================================================================= `-- ]]
local function formatoError( clave )
return '<span class="error">' .. avisos.errores[clave] .. '</span>'
end
-- Módulos en los que están definidos los tipos de datos más habituales si son
-- diferentes de Wikidata/Formatos
--
local modulosTipos = {
['altura'] = 'Módulo:Wikidata/Formato magnitud',
['área'] = 'Módulo:Wikidata/Formato magnitud',
['educado en'] = 'Módulo:Wikidata/Formatos educación',
['imagen'] = 'Módulo:Wikidata/Formato imagen',
['lugar'] = 'Módulo:Wikidata/Formato lugar',
['formatoLugar']= 'Módulo:Wikidata/Formato lugar',
['magnitud'] = 'Módulo:Wikidata/Formato magnitud',
['movimiento'] = 'Módulo:Wikidata/Formato movimiento',
['periodicidad']= 'Módulo:Wikidata/Formato magnitud',
['premio'] = 'Módulo:Wikidata/Formato premio',
}
--[[ =========================================================================
Función para identificar el ítem correspondiente a la página o otro dado.
Esto último aún no funciona.
========================================================================= `-- ]]
local function SelecionEntidadPorId( id )
if id and id ~= '' then
return mw.wikibase.getEntityObject( id )
else
return mw.wikibase.getEntityObject()
end
end
--[[ =========================================================================
Función que identifica si el valor devuelto es un ítem o una propiedad
y en función de eso añade el prefijo correspondiente
========================================================================= `-- ]]
local function SelecionEntidadPorValor( valor )
if valor['entity-type'] == 'item' then
-- Prefijo de ítem
return 'q' .. valor['numeric-id']
elseif valor['entity-type'] == 'property' then
-- Prefijo de propiedad
return 'p' .. valor['numeric-id']
else
return formatoError( 'unknown-entity-type' )
end
end
local function obtenerFuncion(funcion, nombreModulo)
if not funcion then
return
elseif type(funcion) == 'function' then -- Uso desde LUA
return funcion
elseif funcion == '' or not nombreModulo or nombreModulo == '' then
return
else -- Uso desde una plantilla
local modulo
if not nombreModulo or nombreModulo == '' or nombreModulo == 'Wikidata/Formatos' then
modulo = require(modulosTipos[funcion] or 'Módulo:Wikidata/Formatos')
else
modulo = require ('Módulo:' .. nombreModulo)
end
if not modulo then
return nil, formatoError( 'value-module-not-found' )
elseif not modulo[funcion] then
return nil, formatoError( 'value-function-not-found' )
else
return modulo[funcion]
end
end
end
local function formatoValorDato( valorDato, opciones, calificativos)
local funcion, mensajeError = obtenerFuncion(opciones['valor-función'] or opciones['value-function'] or opciones['funcion'], opciones['valor-módulo'] or opciones['modulo'])
if mensajeError then
return mensajeError
elseif funcion then
local opcionesEntidad = {}
for k, v in pairs(opciones) do
opcionesEntidad[k] = v
end
if mw.ustring.find(opciones['formatoTexto'],'mayúscula' ) and
(primera or (opciones['separador'] and opciones['separador'] ~= 'null') or
(opciones['lista'] and opciones['lista'] ~= '')) then
opcionesEntidad['mayúscula'] = 'sí'
primera = false
end
if mw.ustring.find(opciones['formatoTexto'],'cursivas') then
opcionesEntidad['cursivas'] = 'sí'
end
return funcion(valorDato.value, opcionesEntidad, marco, calificativos)
end
-- == Formatos por defecto en función del tipo de valor ==
-- * Para tipo coordenadas cuando se da como valor de propiedad: latitud, longitud o precisión
if opciones.propiedad == 'latitud' then
return valorDato.value['latitude']
elseif opciones.propiedad == 'longitud' then
return valorDato.value['longitude']
elseif opciones.propiedad == 'precisión' then
return valorDato.value['precision']
-- * Con el resto de valores en propiedad
elseif valorDato.type == 'wikibase-entityid' then -- Tipo: Número de entidad que puede ser un ítem o propiedad
local opcionesEntidad = {}
if mw.ustring.find(opciones['formatoTexto'],'mayúscula') and
(primera or (opciones['separador'] and opciones['separador'] ~= 'null') or
(opciones['lista'] and opciones['lista'] ~= '')) then
opcionesEntidad['mayúscula'] = 'sí'
primera = false
end
opcionesEntidad.enlace = opciones.enlace
opcionesEntidad.etiqueta = opciones.etiqueta
opcionesEntidad['debeExistir'] = opciones['debeExistir']
if mw.ustring.find(opciones['formatoTexto'],'cursivas') then
opcionesEntidad.cursivas = 'sí'
end
return p.formatoIdEntidad( SelecionEntidadPorValor( valorDato.value ), opcionesEntidad)
elseif valorDato.type == 'string' then -- Tipo: Cadena de texto (string)
return valorDato.value
elseif valorDato.type == 'url' then --Tipo URL (dirección web)
return valorDato.url
elseif valorDato.type == 'time' then -- Tipo: Fecha/hora
local opcionesFecha={['formatoFecha']=opciones['formatoFecha'],enlace=opciones.enlace}
if mw.ustring.find(opciones['formatoTexto'] or '','mayúscula') and primera then
opcionesFecha['mayúscula']='sí'
end
return require('Módulo:Wikidata/Fecha').FormateaFechaHora(valorDato.value, opcionesFecha, calificativos)
elseif valorDato.type == 'monolingualtext' then -- Tipo: monoligüe
if valorDato.value then
if opciones.idioma then
for k, v in pairs(valorDato) do
if v.language == opciones.idioma then
return v.text
end
end
else
return valorDato.value.text
end
else
return ''
end
elseif valorDato.type == 'quantity' then -- Tipo: Cantidad
return require('Módulo:Wikidata/Formatos').formatoUnidad(valorDato, opciones)
elseif valorDato.value['latitude'] and valorDato.value['longitude'] then -- Tipo: Coordenadas
local globo = require('Módulo:Wikidata/Globos')[valorDato.value.globe]
--Concatenamos los valores de latitud y longitud dentro de la plantilla Coord
if globo ~= 'earth' then
return marco:preprocess('{{coord|' .. valorDato.value['latitude'] .. '|' ..
valorDato.value['longitude'] .. '|globe:' .. globo .. '_type:' .. opciones.tipo .. '|display=' ..
opciones.display ..'|formato=' .. opciones.formato..'}}')
else
return marco:preprocess('{{coord|' .. valorDato.value['latitude'] .. '|' ..
valorDato.value['longitude'] .. '|type:' .. opciones.tipo .. '|display=' ..
opciones.display ..'|formato=' .. opciones.formato..'}}')
end
else
return formatoError( 'unknown-datavalue-type' ) -- Si no es de ninguno de estos tipos devolverá error valor desconocido
end
end
--[[ =========================================================================
Función para determinar el rango
========================================================================= `-- ]]
local function getRango(tablaDeclaraciones)
local rank = 'deprecated'
for indice, declaracion in pairs(tablaDeclaraciones) do
if declaracion.rank == 'preferred' then
return 'preferred'
elseif declaracion.rank == 'normal' then
rank = 'normal'
end
end
return rank
end
--[[ =========================================================================
Función para determinar la declaracion o declaraciones de mayor rango
========================================================================= `-- ]]
local function filtrarDeclaracionPorRango(tablaDeclaraciones)
local rango = getRango(tablaDeclaraciones)
local tablaAuxiliar = tablaDeclaraciones
tablaDeclaraciones = {}
for indice, declaracion in pairs(tablaAuxiliar) do
if declaracion.rank == rango then
table.insert(tablaDeclaraciones, declaracion)
end
end
return tablaDeclaraciones
end
--[[ =========================================================================
Función para seleccionar el tipo de declaración: Referencia, valor principal
o calificador
========================================================================= `-- ]]
local function seleccionDeclaracion(declaracion, opciones)
local propiedadFuente = {}
local calificador = opciones.formatoCalificador ~= '()' and opciones.calificador
if calificador ~= '' and calificador and declaracion['qualifiers'] then
if declaracion['qualifiers'][mw.ustring.upper(calificador)] then
return declaracion.qualifiers[mw.ustring.upper(calificador)][1] -- devuelve el calificador (solo devolverá el primer valor)
else
return "" --Para que no lance excepción si no existe el calificador
end
elseif opciones.dato == 'fuente' and declaracion['references'] then
local fuente = declaracion.references[1]['snaks']
for k,v in pairs(fuente) do
propiedadFuente = k
end
return declaracion.references[1]['snaks'][propiedadFuente][1] -- devuelve la fuente (queda que se itinere la tabla)
elseif (calificador == '' or not calificador) and (opciones.dato ~= 'fuente') then
return declaracion.mainsnak -- devuelve el valor principal
else
return ''
end
end
--[[ =========================================================================
Función para recopilar las declaraciones
========================================================================= `-- ]]
function p.getDeclaraciones(entityId)
-- == Comprobamos que existe un ítem enlazado a la página en Wikidata ==
if not pcall (SelecionEntidadPorId, entityId ) then
return false
end
local entidad = SelecionEntidadPorId(entityId)
if not entidad then
return '' -- Si la página no está enlazada a un ítem no devuelve nada
end
-- == Comprobamos que el ítem tiene declaraciones (claims) ==
if not entidad.claims then
return '' -- Si el ítem no tiene declaraciones no devuelve nada
end
-- == Declaración de formato y concatenado limpio ==
return entidad.claims
end
--[[ =========================================================================
Función para crear la cadena que devolverá la declaración
========================================================================= `-- ]]
local function valinQualif(claim, qualifs)
local claimqualifs = claim.qualifiers
local vals, vals1, datavalue, value
if not claimqualifs then
return nil
end
for i, qualif in pairs(qualifs) do
vals = claimqualifs[qualif]
if vals then
vals1 = vals[1]
if vals1 then
datavalue=vals1.datavalue
if datavalue then
value = datavalue.value
if value then
return value.time
end
end
end
end
end
end
function p.getPropiedad(opciones, declaracion)
local propiedad
local tablaOrdenada
if opciones.propiedad == 'precisión' or opciones.propiedad == 'latitud' or opciones.propiedad == 'longitud' then
propiedad = 'P625' -- Si damos el valor latitud, longitud o precisión equivaldrá a dar p625
else
propiedad = opciones.propiedad -- En el resto de casos se lee lo dado
end
if not propiedad then -- Comprobamos si existe la propiedad dada y en caso contrario se devuelve un error
return formatoError( 'property-param-not-provided' )
end
if declaracion then
tablaOrdenada = declaracion
elseif not p.getDeclaraciones(opciones.entityId) then
return formatoError( 'other entity' )
elseif p.getDeclaraciones(opciones.entityId)[mw.ustring.upper(propiedad)] then
tablaOrdenada = p.getDeclaraciones(opciones.entityId)[mw.ustring.upper(propiedad)]
else
return ''
end
-- Evitar que pete cuando se haga el find en opciones['formatoTexto'] si vale nil
if not opciones['formatoTexto'] then
opciones['formatoTexto'] = ''
end
--Dejar en su caso los valores de mayor rango
if (opciones.rangoMayor == 'sí') then
tablaOrdenada = filtrarDeclaracionPorRango(tablaOrdenada)
end
--Ordenar en su caso por fecha. Ver la función chronosort de :fr:Module:Wikidata/Récup
if opciones.ordenar == 'por fecha' then
require('Módulo:Tablas').ordenar(tablaOrdenada,
function(elemento1,elemento2)
local fecha1 = valinQualif(elemento1, datequalifiers) or '' -- elemento1.qualifiers.P580[1].datavalue.value.time or ''
local fecha2 = valinQualif(elemento2, datequalifiers) or '' -- elemento2.qualifiers.P580[1].datavalue.value.time or ''
return fecha1 < fecha2
end
)
end
if not tablaOrdenada[1] then
return
end
-- == Si solo se desea que devuelva un valor ==
-- Pendiente eliminar el parámetro y sustituirlo por un nuevo valor del parámetro lista=no que haría lo mismo que opciones.uno = sí
if opciones.uno == 'sí' then -- Para que devuelva el valor de índice 1
tablaOrdenada = {tablaOrdenada[1]}
elseif opciones.uno == 'último' then -- Para que devuelva la última entrada de la tabla
tablaOrdenada = {tablaOrdenada[#tablaOrdenada]}
end
-- == Creamos una tabla con los valores que devolverá ==
local formatoDeclaraciones = {}
local hayDeclaraciones
for i, dec in pairs(tablaOrdenada) do
local declaracionFormateada = p.formatoDeclaracion(dec, opciones)
if declaracionFormateada and declaracionFormateada ~= '' then
table.insert(formatoDeclaraciones, declaracionFormateada)
hayDeclaraciones = true
end
end
primera = true
if not hayDeclaraciones then
return
end
-- Aplicar el formato a la lista de valores según el tipo de lista de las
-- opciones
local listaDeclaraciones = mw.text.listToText( formatoDeclaraciones, '</li><li>', '</li><li>' )
-- Añadir en su caso un lápiz
if opciones.linkback == 'sí' then
listaDeclaraciones = p.addLinkback( listaDeclaraciones, opciones.entityId, opciones.propiedad )
end
if opciones['lista'] == 'no ordenada' then
return '<ul><li>' .. listaDeclaraciones .. '</li></ul>'
elseif opciones['lista'] == 'ordenada' then
return '<ol><li>' .. listaDeclaraciones .. '</li></ol>'
elseif opciones['lista'] == 'nobullet' then
return '<ul style="list-style-type:none;list-style-image:none;margin-left:0;"><li>' .. listaDeclaraciones .. '</li></ul>'
else
-- valores separados por coma o por el separador y la
-- conjunción de las opciones
local separador, conjuncion
if opciones['conjunción'] == 'null' then
conjuncion = nil
else
conjuncion = opciones['conjunción']
end
if opciones['separador'] == 'null' then
separador = nil
else
separador = opciones['separador']
end
if #formatoDeclaraciones > 1 then
if not conjuncion then
conjuncion = 'y'
end
if marco and conjuncion == 'y' then
conjuncion = ' ' .. string.sub(marco:preprocess('{{y-e|{{Desvincular|' .. formatoDeclaraciones[#formatoDeclaraciones] .. '}}}}'), 1, 1) .. ' '
elseif conjuncion == 'y' or conjuncion == 'o' then
conjuncion = ' ' .. conjuncion .. ' '
end
end
-- Añadir en su caso un lápiz
if opciones.linkback == 'sí' then
return p.addLinkback(mw.text.listToText( formatoDeclaraciones, separador,conjuncion ), opciones.entityId, opciones.propiedad)
else
return mw.text.listToText( formatoDeclaraciones, separador, conjuncion )
end
end
end
-- devuelve el ID de la página en Wikidata (Q...), o nada si la página no está conectada a Wikidata
function p.pageId()
local entity = mw.wikibase.getEntityObject()
if not entity then return nil else return entity.id end
end
--[[ =========================================================================
Función que comprueba si la página está enlazada a Wikidata
en caso de estarlo pasa el valor como a argumento a la función formatSnak()
========================================================================= `-- ]]
function p.formatoDeclaracion( declaracion, opciones)
if not declaracion.type or declaracion.type ~= 'statement' then -- Se comprueba que tiene valor de tipo y que este sea statement (declaración) lo cual pasa siempre que existe la propiedad
return formatoError( 'unknown-claim-type' ) -- Si no se cumple devuelve error
end
-- En el caso de que haya calificador se devuelve a la derecha del valor de la
-- declaración entre paréntesis.
local calificativo = opciones.calificativo or opciones.calificador
if calificativo and declaracion.qualifiers then
-- De momento los calificativos, normalmente años, no se enlazan
local opcionesCalificativo = {['formatoTexto']='', enlace='no', ['formatoFecha']='año'} -- Pendiente
local wValorCalificativo
local wValorCalificativoFormateado
local funcionCalificativo, mensajeError = obtenerFuncion(calificativo, opciones['módulo calificativo'])
if mensajeError then
return mensajeError
elseif funcionCalificativo then
-- Utilizar la función recibida sobre todos los calificativos
wValorCalificativo = declaracion.qualifiers
wValorCalificativoFormateado = funcionCalificativo(wValorCalificativo, opcionesCalificativo)
elseif opciones.formatoCalificador and opciones.formatoCalificador == '()' then
wValorCalificativo = declaracion.qualifiers[mw.ustring.upper(calificativo)]
if wValorCalificativo and wValorCalificativo[1] then
wValorCalificativoFormateado = p.formatoDato(wValorCalificativo[1], opcionesCalificativo)
end
elseif opciones.formatoCalificador and #mw.text.split(opciones.formatoCalificador, '%.') == 2 then
local moduloFormatoCalificador = mw.text.split(opciones.formatoCalificador, '%.')
local formateado = require ('Módulo:' .. moduloFormatoCalificador[1])
if not formateado then
return formatoError( 'value-module-not-found' )
end
local fun = formateado[moduloFormatoCalificador[2]]
if not fun then
return formatoError( 'value-function-not-found' )
end
if mw.ustring.find(opciones['formatoTexto'],'mayúscula') and
(primera or (opciones['separador'] and opciones['separador'] ~= 'null') or
(opciones['lista'] and opciones['lista'] ~= '')) then
opciones['mayúscula'] = 'sí'
primera = false
end
if mw.ustring.find(opciones['formatoTexto'],'cursivas') then
opciones['cursivas'] = 'sí'
end
wValorCalificativoFormateado = fun( declaracion.qualifiers, opciones, marco)
--return require('Módulo:Tablas').tostring(declaracion)
else
-- Utilizar el primer valor del calificativo de la propiedad recibida
wValorCalificativo = declaracion.qualifiers[mw.ustring.upper(calificativo)]
if wValorCalificativo and wValorCalificativo[1] then
wValorCalificativoFormateado = p.formatoDato(wValorCalificativo[1], opcionesCalificativo)
end
end
-- no usado?
-- if opciones.separadorcalificador then separador = opciones.separadorcalificador else separador = ' ' end
if wValorCalificativoFormateado then
local datoFormateado = p.formatoDato(declaracion.mainsnak, opciones)
return (datoFormateado and datoFormateado .. ' <small>(' .. wValorCalificativoFormateado .. ')</small>') or nil
end
end
-- Si no hay calificativo.
return p.formatoDato(seleccionDeclaracion(declaracion, opciones), opciones, declaracion.qualifiers)
end
--[[ =========================================================================
Función que comprueba el tipo de dato (snaktype)
si es value pasa el valor como argumento a la función formatoValorDato()
========================================================================= `-- ]]
function p.formatoDato( dato, opciones, calificativos)
if not dato or dato == '' then
return ''
end
if dato.snaktype == 'somevalue' then
-- Fecha más temprana
if calificativos then
if calificativos['P1319'] and calificativos['P1319'][1] and
calificativos['P1319'][1].datavalue and
calificativos['P1319'][1].datavalue.type=='time' then
local opcionesFecha={['formatoFecha']=opciones['formatoFecha'],enlace=opciones.enlace}
return 'post. ' .. require('Módulo:Wikidata/Fecha').FormateaFechaHora(calificativos['P1319'][1].datavalue.value, opcionesFecha)
end
end
-- Si no tiene un calificativo válido
return avisos['somevalue'] -- Valor desconocido
elseif dato.snaktype == 'novalue' then
return avisos['novalue'] -- Sin valor
elseif dato.snaktype == 'value' then
return formatoValorDato( dato.datavalue, opciones, calificativos) -- Si tiene el tipo de dato se pasa el valor a la función formatDatavalue()
else
return formatoError( 'unknown-snak-type' ) -- Tipo de dato desconocido
end
end
--[[ =========================================================================
Función que establece el tipo de formato en función del tipo de valor
(valorDato.type) y en caso de solicitarse un formato complemetario asocia
el módulo donde se establece el formato y la función de este que lo establece
========================================================================= `-- ]]
--[[ =========================================================================
Damos formato a los enlaces internos
========================================================================= `-- ]]
-- Opciones:
-- - enlace: Valores posibles 'sí' o 'no'
-- - mayúscula: Valores posibles 'sí' o 'no'
-- - cursivas: Valores posibles 'sí' o 'no'
function p.formatoIdEntidad(idEntidad, opciones)
local enlace = mw.wikibase.sitelink(idEntidad)
local etiqueta = mw.wikibase.label(idEntidad)
return require('Módulo:Wikidata/Formatos').enlazar(enlace, etiqueta, idEntidad, opciones)
end
--[[ =========================================================================
Función principal
========================================================================= `-- ]]
function p.Wikidata( frame )
local args = frame.args
if args.valor == 'no' then
return
end
local parentArgs = frame:getParent().args
-- Copiar los argumentos
local argumentos = {}
for k, v in pairs(args) do
argumentos[k] = v
end
for k, v in pairs(parentArgs) do
if not argumentos[k] then
argumentos[k] = v
end
end
--if true then return require('Módulo:Tablas').tostring(argumentos) end
-- No generar el valor de Wikidata si se ha facilitado un valor local y
-- el valor local es prioritario.
local valorWikidata;
if (args.prioridad ~= 'sí' or (args.importar and args.importar == 'no')) and args.valor and args.valor ~= '' then
valorWikidata = '';
else
valorWikidata = p.getPropiedad(argumentos, nil);
end
local categorias = '';
local namespace = frame:preprocess('{{NAMESPACENUMBER}}');
if (namespace == '0' and (not args.categorias or args.categorias ~= 'no') and
args.propiedad and string.upper(args.propiedad) ~= 'P18' -- P18: imagen de Commons
and string.upper(args.propiedad) ~= 'P41' -- P41: imagen de la bandera
and string.upper(args.propiedad) ~= 'P94' -- P94: imagen del escudo de armas
and string.upper(args.propiedad) ~= 'P109' -- P109: firma de persona
and string.upper(args.propiedad) ~= 'P154') then -- P154: logotipo
if valorWikidata ~= '' and args.valor and args.valor ~= '' then
categorias = '[[Categoría:Wikipedia:Artículos con datos locales]]'
elseif valorWikidata and valorWikidata == '' and args.valor and args.valor ~= '' and
(not args.calificador or args.calificador == '') and
(not args.dato or args.dato == '' or args.dato ~= 'fuente')then
categorias = '[[Categoría:Wikipedia:Artículos con datos por trasladar a Wikidata]]'
end
end
if args.prioridad == 'sí' and valorWikidata ~= '' then -- Si se da el valor sí a prioridad tendrá preferencia el valor de Wikidata
if args.importar and args.importar == 'no' and args.valor and args.valor ~= '' then
return args.valor .. categorias
elseif valorWikidata then
return valorWikidata .. categorias -- valor que sustituye al valor de Wikidata parámetro 2
else
return categorias
end
elseif args.valor and args.valor ~= '' then
return args.valor .. categorias
elseif args.importar and args.importar == 'no' then
return ''
elseif valorWikidata then -- Si el valor es nil salta una excepcion al concatenar
return valorWikidata .. categorias
else
return ''
end
end
function p.addLinkback(valorPropiedad, idEntidad, idPropiedad)
local lidEntidad
if valorPropiedad and idPropiedad then
lidEntidad= (idEntidad ~='' and idEntidad) or mw.wikibase.getEntityIdForCurrentPage()
end
if lidEntidad then
return valorPropiedad .. '<span class=\"wikidata-link noprint\"> [[Archivo:Blue_pencil.svg|Ver y modificar los datos en Wikidata|10px|baseline|alt=Ver y modificar los datos en Wikidata|enlace=https://www.wikidata.org/wiki/' .. lidEntidad .. '?uselang=es#' .. idPropiedad ..
']]</span>'
else
return valorPropiedad
end
end
--------------------------------------------------------------------
-- A continuación, función p.claim y funciones locales necesarias --
-- Adaptado de https://ca.wikisource.org/wiki/Module:Wikidata --
--------------------------------------------------------------------
local wiki = {
langcode = mw.language.getContentLanguage().code
}
-- Table of language codes: requested or default and its fallbacks
local function findLang(langcode)
if mw.language.isKnownLanguageTag(langcode or '') == false then
local cframe = mw.getCurrentFrame()
local pframe = cframe:getParent()
langcode = pframe and pframe.args.lang
if mw.language.isKnownLanguageTag(langcode or '') == false then
if not mw.title.getCurrentTitle().isContentPage then
langcode = cframe:preprocess('{{int:lang}}')
end
if mw.language.isKnownLanguageTag(langcode or '') == false then
langcode = wiki.langcode
end
end
end
local languages = mw.language.getFallbacksFor(langcode)
table.insert(languages, 1, langcode)
if langcode == wiki.langcode then
for _, l in ipairs({}) do
table.insert(languages, l)
end
end
return languages
end
-- Argument is 'set' when it exists (not nil) or when it is not an empty string.
local function isSet(var)
return not (var == nil or (type(var) == 'string' and mw.text.trim(var) == ''))
end
-- get safely a serialized snak
local function getSnak(statement, snaks)
local ret = statement
for i, v in ipairs(snaks) do
if not ret then return end
ret = ret[v]
end
return ret
end
-- mw.wikibase.getLabelWithLang or getLabelByLang with a table of languages
local function getLabelByLangs(id, languages)
local label
local lang
for _, l in ipairs(languages) do
if l == wiki.langcode then
-- using getLabelWithLang when possible instead of getLabelByLang
label, l = mw.wikibase.getLabelWithLang(id)
else
label = mw.wikibase.getLabelByLang(id, l)
end
if label then
lang = l
break
end
end
return label, lang
end
-- format data value wikibase-entityid: types wikibase-item, wikibase-property
local function printDatatypeEntity(data, parameters)
local entity_id = data['id']
if parameters.formatting == 'raw' then
return entity_id, entity_id
end
local label, _ = getLabelByLangs(entity_id, parameters.lang)
local sitelink = mw.wikibase.getSitelink(entity_id)
local labelcase = label or sitelink
if parameters.citado and parameters.citado ~= '' then labelcase = parameters.citado end
local entity_page = 'Special:EntityPage/' .. entity_id
local ret1
if parameters.formatting == 'label' then
ret1 = labelcase or entity_id
else
if sitelink then
ret1 = '[[' .. sitelink .. '|' .. labelcase .. ']]'
elseif label and string.match(parameters.formatting or '', 'internallink$') and not mw.wikibase.getEntityIdForTitle(label) then
ret1 = '[[' .. label .. '|' .. labelcase .. ']]'
else --si no existe la pág. en WS, crea enlace a WD
ret1 = '[[d:' .. entity_page .. '|<span style="color:#5f9cbb;">' .. (labelcase or entity_id) .. '</span>]]'
end
end
return ret1
end
local function getSnakValue(snak, parameters)
if snak.snaktype == 'value' then
-- see Special:ListDatatypes
if snak.datatype == 'wikibase-item' or snak.datatype == 'wikibase-property' then
return printDatatypeEntity(snak.datavalue.value, parameters)
end
elseif snak.snaktype == 'somevalue' then
if parameters.referenced and parameters.referenced ~= '' then return parameters.referenced end
if parameters.citado and parameters.citado ~= '' then return parameters.citado end
end
return mw.wikibase.renderSnak(snak)
end
local function orderedpairs(array, order)
if not order then return pairs(array) end
-- return iterator function
local i = 0
return function()
i = i + 1
if order[i] then
return order[i], array[order[i]]
end
end
end
local function getCitadoValue(claim)
local result = ""
if claim.qualifiers then
if claim.qualifiers['P1932'] then
local wqualif = claim.qualifiers['P1932'][1].datavalue.value
if wqualif and wqualif ~= '' then
return wqualif
end
end
end
return result
end
local function getReferencedValue(claim, parameters, reftypes)
local result = ""
-- traverse through all references
for ref in pairs(claim.references or {}) do
local refparts
-- traverse through all parts of the current reference
for snakkey, snakval in orderedpairs(claim.references[ref].snaks or {}, claim.references[ref]["snaks-order"]) do
for i, reftype in ipairs(reftypes) do
if snakkey == reftype then
if refparts then refparts = refparts .. ", " else refparts = "" end
for snakidx = 1, #snakval do
if snakidx > 1 then refparts = refparts .. ", " end
refparts = refparts .. getSnakValue(snakval[snakidx], parameters)
end
end
end
end
if refparts then result = result .. refparts end
end
return result
end
local function getQualifierSnak(claim, qualifierId, parameters)
-- a "snak" is Wikidata terminology for a typed key/value pair
-- a claim consists of a main snak holding the main information of this claim,
-- as well as a list of attribute snaks and a list of references snaks
if qualifierId then
-- search the attribute snak with the given qualifier as key
if claim.qualifiers then
local qualifier = claim.qualifiers[qualifierId]
if qualifier then
if qualifier[1].datatype == "monolingualtext" then
-- iterate over monolingualtext qualifiers to get local language
for idx in pairs(qualifier) do
if getSnak(qualifier[idx], {"datavalue", "value", "language"}) == parameters.lang[1] then
return qualifier[idx]
end
end
elseif parameters.list then
return qualifier
else
return qualifier[1]
end
end
end
return nil, formatoError("qualifier-not-found")
else
return claim.mainsnak
end
end
local function getValueOfClaim(claim, qualifierId, parameters)
local snak, error = getQualifierSnak(claim, qualifierId, parameters)
local reftypes = {'P5997'} -- propiedades "tipo referencia" que pueden denotar un valor oculto
parameters.referenced = getReferencedValue(claim, parameters, reftypes)
parameters.citado = getCitadoValue(claim)
if not snak then
return nil, nil, error
elseif snak[1] then -- a multi qualifier
local result = {}
for idx in pairs(snak) do
result[#result + 1] = getSnakValue(snak[idx], parameters)
end
return mw.text.listToText(result), nil
else -- a property or a qualifier (lo habitual)
return getSnakValue(snak, parameters)
end
end
local function getEntityId(args, pargs, unnamed)
pargs = pargs or {}
local id = args.item or args.from or (unnamed and mw.text.trim(args[1] or '') or nil)
if not isSet(id) then
id = pargs.item or pargs.from or (unnamed and mw.text.trim(pargs[1] or '') or nil)
end
if not isSet(id) then
id = mw.wikibase.getEntityIdForCurrentPage()
end
return id
end
local function getArg(value, default, aliases)
if type(value) == 'boolean' then return value
elseif value == "false" or value == "no" then return false
elseif value == "true" or value == "yes" then return true
elseif value and aliases and aliases[value] then return aliases[value]
elseif isSet(value) then return value
elseif default then return default
else return nil
end
end
-- Main function claim ---------------------------------------------
-- on debug console use: =p.claim{item="Q...", property="P...", ...}
function p.claim(frame)
local args = frame.args or frame -- via invoke or require
local pargs = frame.args and frame:getParent().args or {}
-- arguments
local parameters = {}
parameters.id = getEntityId(args, pargs)
if parameters.id == nil then return end
parameters.property = string.upper(args.property or "")
local qualifierId = {}
qualifierId[1] = getArg(string.upper(args.qualifier or ""))
local i = 2
while isSet(args["qualifier" .. i]) do
qualifierId[i] = string.upper(args["qualifier" .. i])
i = i + 1
end
parameters.formatting = getArg(args.formatting)
parameters.list = getArg(args.list, true, {firstrank='bestrank'})
parameters.tabla = getArg(args.tabla)
local default = args.default
parameters.lang = findLang(args.lang)
-- fetch property
local claims = mw.wikibase.getBestStatements(parameters.id, parameters.property)
if #claims == 0 then
return default
end
-- defaults for table
local preformat, postformat = "", ""
-- get initial sort indices
local sortindices = {}
for idx in pairs(claims) do
sortindices[#sortindices + 1] = idx
end
local result
if parameters.tabla then
local value
result = {}
local values = {}
for idx in pairs(claims) do
local claim = claims[sortindices[idx]]
value = getValueOfClaim(claim, qualifierId[1], parameters)
values[#values + 1] = {}
if value then
values[#values]["col0"] = value
result[#values] = value
end
end
elseif parameters.list then
parameters.separator = mw.message.new('Comma-separator'):inLanguage(parameters.lang[1]):plain()
parameters.conjunction = (mw.message.new('And'):inLanguage(parameters.lang[1]):plain() .. mw.message.new('Word-separator'):inLanguage(parameters.lang[1]):plain())
-- iterate over all elements and return their value (if existing)
local value
result = {}
local values = {}
for idx in pairs(claims) do
local claim = claims[sortindices[idx]]
value = getValueOfClaim(claim, qualifierId[1], parameters)
values[#values + 1] = {}
if value then
values[#values]["col0"] = value
result[#values] = value
end
end
result = preformat .. mw.text.listToText(result, parameters.separator, parameters.conjunction) .. postformat
else
-- return first element
local claim = claims[sortindices[1]]
result = getValueOfClaim(claim, qualifierId[1], parameters)
end
if not isSet(result) then
result = default
end
return result or ''
end
--------------------------------------------------------------------------------
-- Get an Item based on what's passed in the 'wikidata' or 'page' parameters of
-- the args, or the current page's ID otherwise.
local function getItem( args )
local id = nil
-- If args is a table with an appropriate element, use it.
if type( args ) == 'table' then
if args.wikidata ~= '' and args.wikidata ~= nil then
id = args.wikidata
elseif args.wikidata_id ~= '' and args.wikidata_id ~= nil then
id = args.wikidata_id
elseif args.page ~= '' and args.page ~= nil then
local title = mw.title.new( args.page )
id = mw.wikibase.getEntityIdForTitle( title.nsText .. title.text )
-- If no entity for this page, maybe it's a subpage and we should look for the root page's entity.
if id == nil then
id = mw.wikibase.getEntityIdForTitle( title.nsText .. title.rootText )
end
end
end
if type( args ) == 'string' and args ~= '' then
id = args
end
return mw.wikibase.getEntity( id )
end
--------------------------------------------------------------------------------
-- Exported method. Get wikitext for displaying an edition's badges from Wikidata.
-- Test: =p.badge({args={qid='Q30097675'}})
function p.badge( frame )
local args = frame.args or frame -- via invoke or require
local item = getItem( args ) --por defecto, id de la página
local badges = {}
if args.qid ~= nil then --pero si pasamos un qid, id pasado
item = mw.wikibase.getEntity(args.qid)
end
local status = args.ws
-- status en el índice a badge
if status == 'C' or status == 'P' then
status = "Q20748091"
elseif status == 'V' then
status = "Q20748092"
elseif status == 'T' then
status = "Q20748093"
elseif status == 'E' or status == 'L' then
status = "Q20748094"
end
if not ( item and item.sitelinks and item.sitelinks.eswikisource and #item.sitelinks.eswikisource.badges > 0) and not (status) then
return ''
end
-- alguno con más prioridad que el otro? TODO: hacer algo en caso de discrepancia
if status then
badges = {status}
end
if ( item and item.sitelinks and item.sitelinks.eswikisource and #item.sitelinks.eswikisource.badges > 0) then
badges = {unpack(badges), unpack(item.sitelinks.eswikisource.badges)}
end
local out = ''
for _, badge in pairs( badges ) do
local badgeOut = ''
local badgeItem = mw.wikibase.getEntity( badge )
local wikisourceBadgeClass = 'Q75042035'
local badgeName = ''
if badgeItem.claims.P31[1].mainsnak.datavalue.value.id == wikisourceBadgeClass and badgeItem.claims.P18 ~= nil then
local imageName = badgeItem.claims.P18[1].mainsnak.datavalue.value
if mw.wikibase.getLabel( badge ) ~= nil then
badgeName = mw.wikibase.getLabel( badge )
end
-- TODO: Crear una página de ayuda apropiada para el nivel de los *textos*
if args.indicator ~= nil then
badgeOut = '<span class="indicator-badge">[[File:' .. imageName .. '|16px|link=Ayuda:Nivel de las páginas|' .. badgeName .. ']]</span>'
else
badgeOut = '<indicator name="wikisource-badge-' .. badgeName .. '">' .. badgeOut .. '</indicator>'
end
--[[ if args.category ~= nil and badgeItem.claims.P910 ~= nil then
local categoryQid = badgeItem.claims.P910[1].mainsnak.datavalue.value.id
local category = mw.wikibase.getEntity( categoryQid )
badgeOut = badgeOut .. '['..'[' .. category.sitelinks.enwikisource.title .. ']'..']'
end ]]
out = out .. badgeOut
end
end
return mw.getCurrentFrame():preprocess(out)
end
return p
7kdwuk6190bzi7ezaapuekiudyav8du
Módulo:Wikidata/Formatos
828
217259
1653819
812904
2026-05-14T15:14:54Z
Ignacio Rodríguez
3603
limpieza código, dioses lua, función sin uso
1653819
Scribunto
text/plain
local p = {}
local marco = mw.getCurrentFrame()
local es = mw.language.new('es')
local moduloTablas = require('Módulo:Tablas')
local elementoTabla = moduloTablas.elemento
local insertarEnTabla = moduloTablas.insertar
local moduloWikidata = require('Módulo:Wikidata')
local getPropiedadWikidata = moduloWikidata.getPropiedad
local formatoDatoWikidata = moduloWikidata.formatoDato
local enlazarURL = require('Módulo:URL').enlazar
function p.formatImage( value, options )
local str = '[[Image:' .. value .. '|thumb'
if options.legend then
str = str .. '|' .. options.legend
end
return str .. ']]'
end
function p.formatBandera(value, options, frame)
if frame == nil then
frame = marco
end
local label = mw.wikibase.label( 'Q' .. value['numeric-id'] )
if not label then
return
end
local link = mw.wikibase.sitelink('Q' .. value['numeric-id'] )
local nombre
local tipo = mw.ustring.gsub(label,'(%D+)%sde%s%D+','%1')
local coincidencia
if options.cortar and options.cortar ~= '' then
coincidencia = mw.ustring.find( es:lc(options.cortar), es:lc(tipo))
end
if coincidencia then
nombre = mw.ustring.gsub(label,'%D+%sde%s(%D+)','%1')
else
nombre = label
end
local str2
if mw.title.new('Plantilla:Geodatos '.. label ).exists then
str2 = frame:preprocess('{{bandera2|' .. label ..'|nombre ='.. nombre .. '}}')
elseif link and label then
str2 = '[[' .. link .. '|' .. nombre .. ']]'
elseif label then
str2 = nombre
else
str2 = ''
end
return str2
end
function p.formatCoor(value)
local cadenacoor = value
return marco:preprocess('{{coord|' .. cadenacoor[tostring('latitude')] ..'|'.. cadenacoor[tostring('longitude')] .. '|format=dms}}')
end
-- Funciones para entidades de Wikidata
local noMostrarPremio={
['Q20899118'] = true, -- NPR Top 100 Science Fiction and Fantasy Books
}
function p.formatoPremio(valor)
local enlace, etiqueta, idEntidad = p.obtenerDatos(valor)
if idEntidad and noMostrarPremio[idEntidad] then
return
end
-- Eliminar de la etiqueta la categoría del premio
if etiqueta then
etiqueta = etiqueta:match('^(.*)%s+a%s.*$') or -- Ejemplo: Premio Nébula a la mejor novela corta --> Premio Nébula
etiqueta:match('^(.*)%s+al%s.*$') or -- Ejemplo: Premio Hugo al mejor relato --> Premio Hugo
etiqueta:match('^(.*) en la categoría') or -- Ejemplo: Premio Prometheus en la categoría Hall of Fame --> Premio Prometheus
etiqueta
end
return p.enlazar(enlace, etiqueta, idEntidad)
end
function p.formatoGentilicio(valor, opciones, frame)
local enlacePais, etiquetaPais, idEntidadPais = p.obtenerDatos(valor)
local gentilicio
if etiquetaPais then
gentilicio = frame:preprocess('{{gentilicio|'.. etiquetaPais .. '|fs}}')
if not gentilicio or gentilicio == '' then
gentilicio = etiquetaPais
end
end
return p.enlazar(enlacePais, gentilicio, idEntidadPais, opciones)
end
function p.formatoGentilicio2(valor, opciones, frame)
local enlacePais, etiquetaPais, idEntidadPais = p.obtenerDatos(valor)
local gentilicio
local entidad = mw.wikibase.getEntity()
local genero = entidad:formatPropertyValues( 'P21' )['value']
if etiquetaPais then
if genero == 'femenino' then
gentilicio = frame:preprocess('{{gentilicio|'.. etiquetaPais .. '|fs}}')
else
gentilicio = frame:preprocess('{{gentilicio|'.. etiquetaPais .. '|ms}}')
end
if not gentilicio or gentilicio == '' then
gentilicio = etiquetaPais
end
end
return p.enlazar(enlacePais, gentilicio, idEntidadPais, opciones)
end
function p.formatoLugar(valor, opciones, _, calificativos)
-- Función que devuelve algo de la forma Lugar, entidad territorial administrativa, país
local lugarEnlazado, entidadTerritorialAdministrativaEnlazada, paisEnlazado
-- Validar que está informado el id del lugar.
if not valor or not valor['numeric-id'] then
return
end
-- Obtener primero la entidad territorial administrativa y el país de los calificativos si es posible
-- No se obtiene primero el lugar, que sería lo más lógico, porque se obtendrá de forma diferente según
-- estén o no informados los calificativos
if calificativos then
entidadTerritorialAdministrativaEnlazada = p.enlazar(p.obtenerDatos(elementoTabla(calificativos,'P131',1,'datavalue','value')))
paisEnlazado = p.enlazar(p.obtenerDatos(elementoTabla(calificativos,'P17',1,'datavalue','value')))
end
if paisEnlazado then
lugarEnlazado = p.enlazar(p.obtenerDatos(valor))
else
-- Si el lugar no tiene el calificativo de país obtenerlo de la propiedad país de la
-- entidad de Wikidata del lugar.
-- De momento no se obtiene la entidad administrativa (tiene unas barbaridades...)
local idLugar, enlaceLugar, etiquetaLugar
local entidad
idLugar = 'Q' .. valor['numeric-id']
entidad = mw.wikibase.getEntityObject(idLugar)
if not entidad then
return
end
enlaceLugar = elementoTabla(entidad,'sitelinks','eswiki','title')
etiquetaLugar = elementoTabla(entidad,'labels','es','value')
lugarEnlazado = p.enlazar(enlaceLugar, etiquetaLugar, idLugar, opciones)
paisEnlazado = p.enlazar(p.obtenerDatos(elementoTabla(entidad,'claims','P17',1,'mainsnak','datavalue','value')))
end
if lugarEnlazado == paisEnlazado then -- La ciudad de El Vaticano tiene en Wikidata como país a sí misma
paisEnlazado = nil
end
return require('Módulo:Formato texto').separadosPorComa({lugarEnlazado, entidadTerritorialAdministrativaEnlazada, paisEnlazado})
end
function p.formatoUnidad(valor, opciones)
local cantidad = mw.ustring.gsub(valor.value['amount'], '+','')
local unidad = mw.wikibase.label(mw.ustring.gsub(valor.value['unit'], '^.-/(Q%d+)$', '%1'))
local textoUnidad
if unidad and tonumber(cantidad) > 1 and unidad:match("^.*[aeiou]$") then
textoUnidad = unidad..'s'
elseif unidad and tonumber(cantidad) > 1 then
textoUnidad = unidad..'es'
end
if not unidad or (opciones['formatoUnidad'] and opciones['formatoUnidad'] == 'número') then
return tonumber(cantidad)
elseif unidad and opciones['formatoUnidad'] and opciones['formatoUnidad'] == 'minutos' and unidad == 'segundo' then
return math.floor(tonumber(cantidad)/60) .. ':' .. (tonumber(cantidad)%60) .. ' ' .. 'minutos'
else
return p.formatoNumero(cantidad) .. ((textoUnidad and ' ' .. textoUnidad) or '')
end
end
function p.formatoNumero(valor)
if not tonumber(valor) then return valor end
local formato = valor
local k
while true do
formato, k = string.gsub(formato, "^(-?%d+)(%d%d%d)", '%1 %2')
if (k==0) then
break
end
end
return formato
end
-- Formatos de calificativos
function p.formatoPeriodo(valor)
local anyoInicio, anyoFin
local fechaInicio, fechaFin
local opcionesFecha= {['formatoTexto']='mayúscula', ['formatoFecha'] = 'año', ['enlace']='no'}
local fechasInicio = valor['P580']
local fechasFin = valor['P582']
local iFechaInicio = 1
local iFechaFin = 1
if not fechasInicio and not fechasFin then
return
end
local periodos = {}
if fechasInicio and fechasInicio[1] then
--if true then return require('Módulo:Tablas').tostring(fechasInicio[1]) end
anyoInicio = formatoDatoWikidata(fechasInicio[1],opcionesFecha , {})
fechaInicio= anyoInicio -- de momento
end
if fechasFin and fechasFin[1] then
anyoFin = formatoDatoWikidata(fechasFin[1], opcionesFecha, {})
fechaFin = anyoFin -- de momento
end
while fechaInicio or fechaFin do -- Por cada periodo
if fechaInicio and fechaFin and tonumber(fechaInicio) and tonumber(fechaFin) and (tonumber(fechaInicio) <= tonumber(fechaFin)) then
if anyoInicio == anyoFin then
table.insert(periodos, anyoInicio)
else
table.insert(periodos, anyoInicio .. '–' .. anyoFin)
end
iFechaInicio = iFechaInicio + 1
iFechaFin = iFechaFin + 1
if fechasInicio[iFechaInicio] then
anyoInicio = formatoDatoWikidata(fechasInicio[iFechaInicio],opcionesFecha , {})
fechaInicio= anyoInicio -- de momento
else
anyoInicio = nil
fechaInicio= nil
end
if fechasFin[iFechaFin] then
anyoFin = formatoDatoWikidata(fechasFin[iFechaFin],opcionesFecha , {})
fechaFin= anyoFin -- de momento
else
anyoFin = nil
fechaFin= nil
end
elseif anyoInicio then
table.insert(periodos, 'desde ' .. anyoInicio)
iFechaInicio = iFechaInicio + 1
if fechasInicio[iFechaInicio] then
anyoInicio = formatoDatoWikidata(fechasInicio[iFechaInicio],opcionesFecha , {})
fechaInicio= anyoInicio -- de momento
else
anyoInicio = nil
fechaInicio= nil
end
elseif anyoFin then
table.insert(periodos, 'hasta ' .. anyoFin)
iFechaFin = iFechaFin + 1
if fechasFin[iFechaFin] then
anyoFin = formatoDatoWikidata(fechasFin[iFechaFin],opcionesFecha , {})
fechaFin= anyoFin -- de momento
else
anyoFin = nil
fechaFin= nil
end
end
end
return table.concat(periodos, ', ')
end
-- Funciones internas
-- Las siguientes funciones hacen prácticamente lo mismo que la función
-- formatoIdEntidad del módulo Wikidata.
-- p.obtenerDatos obtiene los datos de la entidad y p.enlazar los formatea.
function p.obtenerDatos(valor)
if valor and valor['numeric-id'] then
local idEntidad = 'Q' .. valor['numeric-id']
local etiqueta = mw.wikibase.label( idEntidad )
local enlace = mw.wikibase.sitelink( idEntidad )
return enlace, etiqueta, idEntidad
end
end
local yaEnlazado = {}
function p.enlazar(enlace, etiqueta, idEntidad, opciones)
if not enlace and not etiqueta and not idEntidad then
return
end
if opciones then
-- Opciones de las etiquetas
if opciones.etiqueta and opciones.etiqueta ~= 'null' then -- Por averiguar dónde se usa.
etiqueta = opciones.etiqueta
end
-- Convertir el primer carácter a mayúscula en su caso
if etiqueta and opciones['mayúscula'] == 'sí' then
etiqueta = es:ucfirst(etiqueta)
end
-- Opciones del enlace
if opciones['enlace'] == 'no' then
-- No p.enlazar
enlace = nil
elseif opciones['debeExistir'] == 'sí' then
-- No devolver nada si no está informado el artículo de Wikipedia
if not enlace then
return
end
elseif opciones['enlace'] == 'sí' then
if not enlace and etiqueta and not require('Módulo:Páginas').existe(etiqueta) then
-- Tomar como enlace la etiqueta si no existe el correspondiente artículo
enlace = etiqueta
end
end
end
-- No enlazar varias veces lo mismo
if enlace and yaEnlazado[enlace] then
enlace = nil
end
-- Según esté informada la etiqueta o el enlace
local resultado
if etiqueta and enlace and etiqueta ~= enlace then --Ambos si no son iguales
resultado = '[[' .. enlace .. '|' .. etiqueta .. ']]'
yaEnlazado[enlace] = true
elseif enlace then -- Solo el enlace o ambps y son iguales
resultado = '[[' .. enlace .. ']]'
yaEnlazado[enlace] = true
elseif etiqueta then -- Solo la etiqueta
resultado = etiqueta
elseif idEntidad then -- Solo la entidad
-- Obtener la etiqueta y el enlace de Wikidata de la Wikipedia inglesa.
local entidad=mw.wikibase.getEntityObject(idEntidad)
--if true then return require('Módulo:Tablas').tostring(entidad) end
if entidad then
if entidad.labels and
entidad.labels.en then
etiqueta = entidad.labels.en.value
end
if entidad.sitelinks and entidad.sitelinks.enwiki then
enlace = entidad.sitelinks.enwiki.title
end
if etiqueta or enlace then
resultado = p.enlazarEnOtroIdioma(enlace, etiqueta, 'en')
end
end
if not resultado then
return '[[:d:'.. idEntidad .. '|sin etiquetar]]' ..
'[[Categoría:Wikipedia:Páginas con propiedades de Wikidata sin etiqueta]]'
end
end
-- Añadir cursivas
if opciones and opciones.cursivas == 'sí' then
resultado = "''" .. resultado .. "''"
end
return resultado
end
function p.formatId( value, options )
local wikidata = require('Módulo:Wikidata')
local id = 'Q'.. value['numeric-id']
local opciones = {separador = '<br>',propiedad = options.propiedadValor, uno = 'sí', entityId = id, formatoTexto = 'mayúscula'}
return wikidata.getPropiedad(opciones)
end
function p.formatBandera2( value, options )
local bandera = require('Módulo:Bandera')
local id = 'Q'.. value['numeric-id']
local label = mw.wikibase.label( 'Q' .. value['numeric-id'] ) or ''
local tipo = mw.ustring.gsub(label,'(%D+)%sde%s%D+','%1')
local coincidencia
local nombre
if options.cortar and options.cortar ~= '' then
coincidencia = mw.ustring.find( es:lc(options.cortar), es:lc(tipo))
end
if coincidencia then
nombre = mw.ustring.gsub(label,'%D+%sde%s(%D+)','%1')
elseif label and label ~= '' then
nombre = label
end
return bandera.banderaLua(id, '20px', '', nombre)
end
function p.formatFicha( value, options )
local ficha = require('Módulo:Ficha')
local opciones = {propiedadValor='P31'}
local etiqueta = p.formatId( value, opciones)
options.cortar = etiqueta
local parametros = {
child = 'si',
estiloetiqueta1 = 'border:0;font-weight:100;padding:0px 7px',
estilodatos1 = 'border:0;font-weight:100;padding:0px 7px 0px 2px',
etiqueta1='• '.. es:ucfirst(etiqueta),
datos1 = p.formatBandera2(value, options)}
return ficha.infobox(parametros)
end
function p.formatoId ( value )
return value['numeric-id'] and 'Q' .. value['numeric-id']
end
--*****************************************************************************
-- Funciones para un elemento/entidad de Wikidata
--*****************************************************************************
function p.formatoObraAutor(valor, opciones)
local idObra = 'Q' .. valor['numeric-id']
local entidadObra = mw.wikibase.getEntityObject(idObra)
local enlaceObra = elementoTabla(entidadObra,'sitelinks','eswiki','title')
local etiquetaObra = elementoTabla(entidadObra,'labels','es','value')
local tituloObraEnlazado = p.enlazar(enlaceObra, etiquetaObra, idObra, opciones)
local declaracionAutores = elementoTabla(entidadObra, 'claims', 'P50')
if declaracionAutores then
local autores = getPropiedadWikidata({['propiedad']='P50'}, entidadObra.claims['P50'])
if autores then
return "''" .. tituloObraEnlazado .. "'' de " .. autores
end
end
return "''" .. tituloObraEnlazado .. "''"
end
function p.formatoObraAnyo(valor, opciones)
local idObra = 'Q' .. valor['numeric-id']
local entidadObra = mw.wikibase.getEntityObject(idObra)
local enlaceObra = elementoTabla(entidadObra,'sitelinks','eswiki','title')
local etiquetaObra = elementoTabla(entidadObra,'labels','es','value')
local tituloObraEnlazado = p.enlazar(enlaceObra, etiquetaObra, idObra, opciones)
local declaracionFechaPublicacion = elementoTabla(entidadObra, 'claims', 'P577')
if declaracionFechaPublicacion then
local anyoPublicacion = getPropiedadWikidata({['propiedad']='P577', ['formatoFecha']='año', ['enlace']='no'}, declaracionFechaPublicacion)
if anyoPublicacion then
return "''" .. tituloObraEnlazado .. "'' (" .. anyoPublicacion .. ")"
end
end
return "''" .. tituloObraEnlazado .. "''"
end
function p.formatoObraTituloOriginalAnyo(valor, opciones)
local idObra = 'Q' .. valor['numeric-id']
local entidadObra = mw.wikibase.getEntityObject(idObra)
local enlaceObra = elementoTabla(entidadObra,'sitelinks','eswiki','title')
local etiquetaObra = elementoTabla(entidadObra,'labels','es','value')
local tituloObraEnlazado = p.enlazar(enlaceObra, etiquetaObra, idObra, opciones)
local tituloOriginal = elementoTabla(entidadObra, 'claims', 'P1476',1,'mainsnak','datavalue','value','text')
local declaracionFechaPublicacion = elementoTabla(entidadObra, 'claims', 'P577')
local anyoPublicacion
if declaracionFechaPublicacion then
anyoPublicacion = getPropiedadWikidata({['propiedad']='P577', ['formatoFecha']='año', ['enlace']='no'}, declaracionFechaPublicacion)
end
if tituloOriginal and anyoPublicacion then
return "''" .. tituloObraEnlazado .. "'' (''" .. tituloOriginal .. "'', " .. anyoPublicacion .. ")"
elseif tituloOriginal then
return "''" .. tituloObraEnlazado .. "'' (''" .. tituloOriginal .. "'')"
elseif anyoPublicacion then
return "''" .. tituloObraEnlazado .. "'' (" .. anyoPublicacion .. ")"
else
return "''" .. tituloObraEnlazado .. "''"
end
end
function p.formatoPersonaPremiadaPor(valor, _, _, calificativos)
local enlacePersona, etiquetaPersona, idEntidadPersona = p.obtenerDatos(valor)
local personaEnlazada = p.enlazar(enlacePersona, etiquetaPersona, idEntidadPersona, {['enlace'] = 'sí'})
local fecha
local enlaceObraPremiada, etiquetaObraPremiada, idEntidadObraPremiada
local obraPremiadaEnlazada
local opcionesFecha= {['formatoTexto']='mayúscula', ['formatoFecha'] = 'año', ['enlace']='no'}
if calificativos then
fecha = formatoDatoWikidata(elementoTabla(calificativos,'P585',1), opcionesFecha , {}) -- Primera fecha
enlaceObraPremiada, etiquetaObraPremiada, idEntidadObraPremiada = p.obtenerDatos(elementoTabla(calificativos,'P1686',1,'datavalue','value'))-- Premiado por
obraPremiadaEnlazada = p.enlazar(enlaceObraPremiada, etiquetaObraPremiada, idEntidadObraPremiada, {['enlace'] = 'sí'})
end
return (obraPremiadaEnlazada and ("''" .. obraPremiadaEnlazada .. "''") or '') .. (obraPremiadaEnlazada and personaEnlazada and ' de ' or '') .. personaEnlazada .. (fecha and ' (' .. fecha .. ')' or '')
end
--*****************************************************************************
-- Funciones para los tipos de dato URL
--*****************************************************************************
function p.formatoURL(valor)
return enlazarURL(valor)
end
--*****************************************************************************
-- Común
--*****************************************************************************
-- Formatear una tabla de identificadores de entidades de Wikidata
local function formatearTablaIdentificadores(identificadores)
-- Pendiente la parte de las opciones
local identificadoresFormateados = {}
local primero = true
for k,v in pairs(identificadores) do
if primero then
table.insert(identificadoresFormateados, p.enlazar(p.obtenerDatos(v)))
primero = false
else
table.insert(identificadoresFormateados, p.enlazar(p.obtenerDatos(v)))
end
end
-- No devolver nada si la lista no tiene elementos
if not primero then
return mw.text.listToText(identificadoresFormateados)
end
end
--*****************************************************************************
-- Funciones para una propiedad de una entidad
--*****************************************************************************
function p.formatoIdioma(entidad, propiedad, opciones)
local idiomas = {}
if not entidad or not entidad.claims then
return
end
local declaracionesIdiomas = entidad.claims[propiedad]
local identificadorIdioma
if not declaracionesIdiomas then
return
end
for k,v in pairs(declaracionesIdiomas) do
identificadorIdioma = 'Q' .. v.mainsnak.datavalue.value['numeric-id']
if identificadorIdioma == 'Q7976' then -- inglés estadounidense
insertarEnTabla(idiomas, 'Q1860') -- inglés
else
insertarEnTabla(idiomas, identificadorIdioma)
end
end
return formatearTablaIdentificadores(idiomas, opciones or {})
end
return p
8rl4xa286sam4rmronxii2ru0w2bwwo
Plantilla:Propiedad
10
217343
1653814
813212
2026-05-14T14:28:08Z
Ignacio Rodríguez
3603
borrar
1653814
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:Wikidata
|Wikidata
|propiedad = {{{1|}}}
|valor = {{{2|}}}
|separador = {{{3|null}}}
|valor-módulo = {{{4|}}}
|valor-función = {{{5|}}}
|legend = {{{6|}}}
|conjunción = {{{conjunción|{{{3|null}}}}}}
|calificador = {{{calificador|}}}
|dato = {{{dato|}}}
|uno = {{{uno|}}}
|rangoMayor = {{{rango mayor|{{{rango_mayor|}}}}}}
|formatoTexto = {{{formato texto|}}}
|formatoFecha = {{{formato fecha|}}}
|formatoUnidad = {{{formato unidad|}}}
|formatoCalificador = {{{formato calificador|}}}
|enlace = {{{link|{{{enlace|}}} }}}
|etiqueta = {{{etiqueta|null}}}
|prioridad = {{{prioridad|}}}
|tipo = {{{tipo|city}}}
|display = {{{display|inline,title}}}
|formato = {{{formato|dms}}}
|entityId = {{{entidad|}}}
|lista = {{{lista|}}}
|importar = {{{importar|}}}
|categorias = {{{categorías|}}}
|debeExistir = {{{debe existir|}}}
|propiedadValor= {{{propiedad_valor|}}}
|calificativo = {{{calificativo|}}}
|módulo calificativo = {{{módulo calificativo|}}}
}}<noinclude>{{borrar|1 único uso desde 2016, hemos usado otros enfoques en estos 10 años. Pensando en simplificar al máximo el Módulo:Wikidata [[User:Ignacio Rodríguez|'''Ignacio''']] - [[User talk:Ignacio Rodríguez|( '''話合''' )]] 14:28 14 may 2026 (UTC)}} {{documentación}}</noinclude>
2m8ijqhnf643svarhncrruq3xyxhqex
Módulo:Biocitas
828
217349
1653810
1487340
2026-05-14T14:02:14Z
Ignacio Rodríguez
3603
-wikinews (DEP) // calmar los dioses de lua
1653810
Scribunto
text/plain
local p = {}
local Wikidata = require('Módulo:Wikidata')
local Enlaces = require('Módulo:Enlaces')
local Str = require('Módulo:String')
local Entidad = mw.wikibase.getEntityObject() or '' -- Tabla con los datos en Wikidata de la persona.
--parámetros reconocidos. 1 = vigente, 0 = obsoleto
local params ={['texto']=1,['obras']=1,['documentos']=1,['foto']=1,['wikipedia']=0,['wikiquote']=0,['commons']=0,['wikispecies']=0,['wikidata']=1,['añomuerte']=1,['siglomuerte']=1,['añonacimiento']=1,['siglonacimiento']=1,['ordenar']=1,['inicial']=1,['añosmuerte']=0,['vivo']=1,['país']=1}
local categorias = ''
local withoutEpoque = true
-- Función que devuelve la lista de los valores de una propiedad en Wikidata formateados
local function propiedad(idPropiedad,opciones)
if Entidad and Entidad.claims then --and Entidad.claims[idPropiedad] then
if not opciones then
opciones = {}
end
idPropiedad = string.upper(idPropiedad)
opciones['propiedad'] = idPropiedad
local valorPropiedad = Wikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])
if not valorPropiedad or valorPropiedad == '' then
return ''
end
return valorPropiedad
else return ''
end
end
local function errorMessage(text)
-- Función que entrega un mensaje de error formateado como tal
local html = mw.html.create('div')
html:addClass('error')
:wikitext(text)
categorias=categorias..'[[Categoría:Wikisource:Artículos con errores en la plantilla Biocitas]]'
return tostring(html)
end
-- Función para eliminar contenido entre paréntesis
local function remove_parentheses(text)
-- Sustituye todo lo que está entre paréntesis (incluyendo los paréntesis) por una cadena vacía
if text==nil then return "" end
local texto = text:gsub("%b()", "")
if texto ~= nil then
return texto
else
return text
end
end
local function computeCenturyFromYear(year)
-- Dado un año entrega el siglo
if year >= 0 then
return math.ceil(year / 100)
else
return -math.ceil(-year / 100)
end
end
local function getTextForCentury(century)
-- Dado un siglo en número, entrega un texto preformateado con
-- números romanos y un indicador de antes de Cristo.
local romanNumbers1 = {'', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X'}
local romanNumbers2 = {'', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'}
local text = romanNumbers2[math.floor(math.abs(century) / 10) + 1] .. romanNumbers1[math.floor(math.abs(century) % 10) + 1]
if century > 0 then
return 'Siglo '..text
else
return 'Siglo '.. text .. ' a. C.'
end
end
local function getTextForYear(year)
-- transforma un año de formato -45 a 45 a. C.
local text = math.abs(year)
if year < 0 then
text = text .. ' a. C.'
end
return text
end
local function getDateFromArgs(args, field)
-- Obtiene datos (fecha de nacimiento, fallecimiento) de parámetros determinados en la plantilla {{Biocitas}}
-- con el formato AñoNacimiento, AñoMuerte, SigloNacimiento o SigloMuerte. TextoNacimiento o InciertoNacimiento también funciona
local struct = {
year = nil,
century = nil,
text = nil,
precision = 0
}
--extract year or century
local date = args['año' .. field]
if date == nil then
date = args[field]
end
if tonumber(date) ~= nil then
struct.year = tonumber(date)
if struct.year == 0 then
struct.text = errorMessage("¡El calendario gregoriano no tiene año 0!")
return struct
end
struct.century = computeCenturyFromYear(struct.year)
struct.precision = 9
elseif args['siglo' .. field] ~= nil then
struct.century = tonumber(args['siglo' .. field])
struct.precision = 7
end
--build text
if struct.year ~= nil then
struct.text = getTextForYear(struct.year)
elseif struct.century ~= nil then
struct.text = getTextForCentury(struct.century, true)
else
struct.text = date
end
if args['texto' .. field] ~= nil then
struct.precision = 0 --we don't know anything
struct.text = args['texto' .. field] .. ' ' .. struct.text
end
if args['incierto' .. field] ~= nil and struct.text ~= nil then
struct.precision = 0 --we don't know anything
struct.text = args['incierto' .. field] .. ' ' .. struct.text
end
return struct
end
local function parseWbTime(value)
local _,_, year = string.find(value.time, '([%+%-]%d%d%d+)%-')
year = tonumber(year)
return {
year = year,
century = computeCenturyFromYear(year),
text = nil,
precision = value.precision
}
end
local function getDateFromTimeStatement(statement, field)
local struct = {
year = nil,
century = nil,
text = nil,
precision = 0
}
local prefix = ''
local snak = statement.mainsnak
if snak.snaktype == 'novalue' then
return struct
end
if statement.qualifiers ~= nil then
if statement.qualifiers.P1480 ~= nil then
for _,qualifier in pairs(statement.qualifiers.P1480) do
if qualifier.datavalue.value['numeric-id'] == 5727902 then
struct = parseWbTime(snak.datavalue.value)
prefix = 'circa '
struct.precision = 8 --TODO: hacky
end
end
end
if statement.qualifiers.P1319 ~= nil then
for _,qualifier in pairs(statement.qualifiers.P1319) do
struct = parseWbTime(qualifier.datavalue.value)
prefix = 'después de'
struct.precision = 8 --TODO: hacky
end
elseif statement.qualifiers.P1326 ~= nil then
for _,qualifier in pairs(statement.qualifiers.P1326) do
struct = parseWbTime(qualifier.datavalue.value)
prefix = 'antes de '
struct.precision = 8 --TODO: hacky
end
elseif statement.qualifiers.P1317 ~= nil then
for _,qualifier in pairs(statement.qualifiers.P1317) do
struct = parseWbTime(qualifier.datavalue.value)
prefix = 'floruit '
struct.precision = 8 --TODO: hacky
end
else
struct = parseWbTime(snak.datavalue.value)
end
elseif snak.snaktype == 'value' then
struct = parseWbTime(snak.datavalue.value)
else
return struct
end
--Create text
if struct.precision >= 9 then
struct.text = prefix .. getTextForYear(struct.year)
elseif struct.precision == 8 then
struct.text = prefix .. getTextForYear(struct.year)
elseif struct.precision == 7 then
struct.text = prefix .. getTextForCentury(struct.century, true)
else
struct.text = errorMessage('La fecha de ' .. field .. ' tiene muy poca precisión en Wikidata')
end
return struct
end
local function getDateFromTimeStatements(statements, field)
-- Función que obtiene las fechas desde Wikidata (copiada literal sin adaptaciones desde la frWS)
if #statements == 0 then
return {
precision = 0
}
end
local time = nil
for _, statement in pairs(statements) do
local newTime = getDateFromTimeStatement(statement, field)
if time == nil then
time = newTime
elseif time.year ~= newTime.year then --si hay años contradictorios
time.precision = 8
--html:wikitext(errorMessage('Hay varios años de ' .. field .. ' posibles en Wikidata. Una manera de resolver este error es fijar una de las dos fechas como "preferida".'))
--return {
--text = errorMessage('Hay varios años de ' .. field .. ' posibles en Wikidata. Una manera de resolver este error es fijar una de las dos fechas como "preferida".'),
-- precision = 0
--}
end
end
if time == nil then
return {
precision = 0
}
end
return time
end
local function resolverFecha(arg, wd)
local fecha = arg
if arg.text == nil and wd ~= nil then
fecha = wd
elseif arg.text ~= nil then
categorias = categorias..'[[Categoría:Wikisource:Artículos con datos locales]]'
if wd and wd.text == nil then
categorias = categorias..'[[Categoría:Wikisource:Artículos con datos por trasladar a Wikidata]]'
end
end
return fecha
end
local function categoriaEpoca(fecha, tol)
local categoria = ''
if fecha.century ~= nil and (fecha.year == nil or fecha.year <= fecha.century * 100 + tol or fecha.precision <=8 ) then
if 14 <= fecha.century then
categoria='[[Categoría:Autores del ' .. getTextForCentury(fecha.century, false) .. ']]'
end
if 6 <= fecha.century and fecha.century <= 14 then
categoria=categoria..'[[Categoría:Autores de la Edad Media]]'
end
if fecha.century < 6 then
categoria='[[Categoría:Autores de la Antigüedad]]'
end
withoutEpoque = false
end
return categoria
end
function p.biocitas( frame ) -- función principal para llamar desde {{biocitas}}
if mw.title.getCurrentTitle().namespace ~= 106 then
return errorMessage('La plantilla Biocitas se utiliza solo en espacios de nombres Autor, por ejemplo Autor:Miguel de Cervantes')
end
local argus = {}
for k,v in pairs(frame:getParent().args) do -- crea una tabla con los parámetros incluídos en la plantilla, y elimina parámetros vacíos
if v ~= '' and type(k) ~= 'number' then
argus[mw.ustring.lower(k)] = v -- todos los parámetros en minúsculas por defecto:
end
end
local html = mw.html.create() -- cuerpo principal de la plantilla
local tabla = html:tag('table'):addClass('divgrande')
local divgrande = tabla:tag('tr')--:addClass('divgrande') -- div principal que contiene al resto
-- WIKIDATA! --
if Entidad == '' and argus['wikidata'] then
Entidad = mw.wikibase.getEntityObject(argus['wikidata'])
end
if Entidad == '' then
categorias=categorias..'[[Categoría:Wikisource:Artículos de autores no conectados a Wikidata]]'
html:wikitext(errorMessage('<small>Error: Los artículos de autores deben estar enlazados en Wikidata. '..
'Agrega un enlace a otro proyecto usando el link en la columna izquierda, '..
'o '..frame:preprocess('[https://www.wikidata.org/wiki/Special:NewItem?site=eswikisource&page={{FULLPAGENAMEE}} crea un nuevo elemento en Wikidata]')..'</small>'))
end
---- variables para manejar fechas de muerte y nacimiento
local nacimientoArg = getDateFromArgs(argus, 'nacimiento')
local muerteArg = getDateFromArgs(argus, 'muerte')
local floruitArg = getDateFromArgs(argus, 'floruit')
local nacimientoWikidata = nil
local muerteWikidata = nil
local floruitWikidata = nil
if Entidad ~= nil and Entidad ~= '' then --si existe la entidad en Wikidata, obtiene las fechas desde ahí.
nacimientoWikidata = getDateFromTimeStatements(Entidad:getBestStatements('P569'), 'nacimiento')
muerteWikidata = getDateFromTimeStatements(Entidad:getBestStatements('P570'), 'muerte')
floruitWikidata = getDateFromTimeStatements(Entidad:getBestStatements('P1317'), 'floruit')
floruitWikidata.precision = 8
end
local nacimiento = resolverFecha(nacimientoArg, nacimientoWikidata)
local muerte = resolverFecha(muerteArg, muerteWikidata)
local floruit = resolverFecha(floruitArg, floruitWikidata)
if nacimiento.precision >= 9 and nacimiento.year > 1300 then
categorias=categorias..'[[Categoría:N' .. nacimiento.year .. ']]'
end
if muerte.precision >= 9 and muerte.year > 1300 then
categorias=categorias..'[[Categoría:F' .. muerte.year .. ']]'
end
categorias=categorias..categoriaEpoca(nacimiento, -20)
categorias=categorias..categoriaEpoca(muerte, 5)
categorias=categorias..categoriaEpoca(floruit, 0)
if withoutEpoque then
categorias=categorias..'[[Categoría:Época desconocida]]'
end
--año de la muerte, para las plantillas
local anomuerte
local anosmuerte = argus['añosmuerte']
if muerte.year then
anomuerte = getTextForYear(muerte.year)
elseif muerte.century then
anomuerte = muerte.century*100
elseif argus['añomuerte'] ~= '' and argus['añomuerte'] ~= nil then
anomuerte = argus['añomuerte']
elseif argus['siglomuerte'] ~= '' and argus['siglomuerte'] ~= nil then
anomuerte = (tonumber(argus['siglomuerte']))*100
elseif floruit.year then
--muerte presunta 70 años después de florecer
anomuerte = getTextForYear(floruit.year + 70)
elseif floruit.century then
--si sólo se conoce el siglo, murió a mediados de siglo
anomuerte = floruit.century*100 - 50
end
--artículos sin información de año de muerte
if (argus['vivo']==nil or argus['vivo']=='') and (anomuerte == '' or anomuerte ==nil) and (muerte.century == '' or muerte.century ==nil) then
categorias = categorias..'[[Categoría:Wikisource:Artículos de autores sin información de año de muerte]]'
end
-- texto fechas
local textofechas = ''
if nacimiento.text or muerte.text then
textofechas = (nacimiento.text or '')..' - '..(muerte.text or '')
elseif floruit.text then
textofechas = 'fl. '..floruit.text
end
-- esqueleto y CSS de los divs internos
local foto = divgrande:tag('td'):addClass('bc-foto')
local medio = divgrande:tag('td'):addClass('bc-medio')
--local divtitulo = medio:tag('div'):addClass('bc-titulo')
local enlaces = divgrande:tag('td'):addClass('bc-enlaces')
local derechos = html:tag('div'):addClass('bc-derechos')
--variables locales
local sep = "<span style='display:inline-block; width:.5em;'> </span>"
local nombre = frame:preprocess("{{PAGENAME}}")
--Contenido de los divs secundarios
--divtitulo:wikitext("Ficha de ".. nombre:gsub(' %(.*%)','')) --en el título nombres sin paréntesis
-- Lista de enlaces
if (not argus['wikidata'] or argus['wikidata'] == '') and Entidad~=nil then
argus['wikidata']=Entidad.id --enlazar a elemento wikidata
end
---- Enlaces uno por uno ---
local listaenlaces = Enlaces.all(argus)
if argus['obras'] ~= 'none' then --Obras (aparece siempre por defecto a menos que se defina como none)
listaenlaces["obras"] = { ['name'] = 'Categoría de obras',
['image'] = 'Wikisource-logo.svg',
['text'] = 'Obras',
['prefix'] = ':Categoría:Obras de ',
['title'] = '',
}
if argus['obras'] ~= '' and argus['obras'] ~= nil then
listaenlaces["obras"]["title"] = argus['obras']
else
listaenlaces["obras"]["title"] = nombre
end
end
-- crea elementos para el resto de los enlaces
listaenlaces["documentos"] = { ['name'] = 'Categoría de documentos',
['image'] = 'Wikisource-logo.svg',
['text'] = 'Documentos ',
['prefix'] = ':Categoría:Documentos de ',
['title'] = argus['documentos'] or '',
}
-- texto propio de biocitas
listaenlaces["eswiki"]["text"] = "Biografía"
listaenlaces["eswikiquote"]["text"] = "Citas"
listaenlaces["commonswiki"]["text"] = "Multimedia"
listaenlaces["specieswiki"]["text"] = "Especies descritas"
listaenlaces["wikidata"]["text"] = "Metadatos"
local orden = {'obras', 'documentos', 'eswiki', 'eswikiquote', 'commonswiki', 'specieswiki', 'wikidata'}
local textoenlaces = Enlaces.formattedbiocitas(listaenlaces, orden)
enlaces:wikitext(textoenlaces)
--llave automágica
local apellidos = mw.text.trim((propiedad('p734',{['uno']='sí'}) or '')..' '..(propiedad('p1950',{['uno']='sí'}) ))
local nombres = (propiedad('P735',{['conjunción']=' '}) or '')
if apellidos == '' or apellidos == nil then --p.ej. Alonso de Villegas, Autor:Jerónimo Bécker, etc.
apellidos = nombres --Mejor que "Autores-," cuando no existe apellido
end
if string.sub(apellidos,1,3) == 'de ' then
apellidos = string.sub(apellidos,4)
end
local llave=(apellidos..', '..nombres) ~= ', ' and (apellidos..', '..nombres)
mw.log(llave)
-- Ordenar e Iniciales--
if argus['ordenar']==nil and llave then
argus['ordenar'] = llave
end
if argus['ordenar'] ~= nil then
if argus['inicial'] == nil then
argus['inicial'] = Str.CaracterParaOrdenar(argus['ordenar']) --Si no está especificada la inicial, la saca de la primera letra de la llave de ordenado.
end
html:wikitext(frame:preprocess('{{DEFAULTSORT:' .. argus['ordenar'] .. '}}'))
categorias=categorias..'[[Categoría:Autores-'..argus['inicial']..']]' --categoría Autores-X
else
html:wikitext(errorMessage("El parámetro «|Ordenar=» es obligatorio"))
categorias=categorias..'[[Categoría:Wikisource:Artículos de autores sin llave de ordenamiento]]' --categoría Autores-X
end
if argus['ordenar'] ~= nil then
-- Véase también
enlaces:tag('div')
:addClass('bc-enlace')
:wikitext("◄"..sep.."[[:Categoría:Autores-"..argus['inicial'].."|Autores-"..argus['inicial'].."]]") --enlace a Autores-X
end
--- Índice de autores ---
--indice = enlaces:tag('div')
--indice
-- :addClass('bc-enlace')
-- :wikitext("[[:Categoría:Autores|Índice de autores]]")
-- Texto de al medio
if argus['texto'] ~= '' and argus['texto'] ~= nil then
medio:wikitext(argus['texto'])
else
local description = remove_parentheses(mw.wikibase.getDescription())
medio:wikitext("'''"..nombre.."'''<br/>("..textofechas..')<br/>'..(description or ''))
categorias = categorias..'[[Categoría:Wikisource:Autores con texto automático]]'
end
-- Firma ( aun no se puede conectar con otras Q de wikidata :( )
--if argus['wikidata']== '' then
if propiedad ('p109') ~= '' then
medio:wikitext("<br><br> [[File:"..propiedad('p109',{['uno']='sí'}).."|frameless|99999x50px|center|Firma]]")
end
--else
-- if propiedad ('p109',{['entidad']=argus['wikidata']}) ~= '' then
-- medio:wikitext("<br><br> [[File:"..propiedad('p109',{['uno']='sí',['entidad']=argus['wikidata']}).."|frameless|center|Firma]]")
-- end
-- end
-- Retrato autor --
local sexo = propiedad('p21')
if argus['foto'] ~= '' and argus['foto'] ~= nil then
foto:wikitext("[[File:"..argus['foto'].."|frameless|99999x150px|center]]")
elseif propiedad('p18') ~= '' then
foto:wikitext("[[File:"..propiedad('p18',{['uno']='sí'}).."|frameless|99999x150px|"..propiedad('p18',{['calificador']='P2096',['idioma']='es'}).."|center]]")
else
local faltaFoto
local fotos = {'Silver - replace this image male.svg', 'Silver - replace this image female.svg','Falta foto.jpg'}
if sexo == "masculino" then
faltaFoto = fotos[1]
elseif sexo == "femenino" then
faltaFoto = fotos[2]
else
faltaFoto = fotos[3]
end
foto:wikitext("[[File:"..faltaFoto.."|frameless|99999x150px|center]]")
end
--Plantilla de derechos
if anomuerte ~='' and anomuerte ~= nil then
derechos
:wikitext(frame:preprocess("{{DP-Autor|"..anomuerte.."}}"))
elseif anosmuerte ~='' and anosmuerte ~= nil then
derechos
:wikitext(frame:preprocess("{{DP-AUTOR-"..anosmuerte.."}}"))
else
derechos
:wikitext(frame:preprocess("{{DP-AUTOR-none}}"))
end
-- categorías--
categorias=categorias.."[[Categoría:Autores]]"
if argus['vivo'] and mw.ustring.lower(argus['vivo']) ~= 'no' then
categorias=categorias.."[[Categoría:Personas vivas]]"
end
-- categorizar por país: primera prioridad la tienen
if argus['país'] ~= nil and argus['país'] ~='' then
categorias=categorias.."[[Categoría:Autores "..frame:preprocess("{{gentilicio|"..argus['país'].."|mp}}").."]]"
else
argus['país'] = propiedad('P27',{['conjunción']=',',['enlace']='no'})
if argus['país'] ~= nil and argus['país'] ~='' then
for _,v in ipairs(mw.text.split(argus['país'], '[,]')) do --el módulo Wikidata entrega la información en palabras separadas por coma. Esto convierte esa información en una tabla y itera en sus ítems (para autores con más de una nacionalidad)
--categoría Autores por país: usa plantilla {{gentilicio}}
categorias=categorias.."[[Categoría:Autores "..frame:preprocess("{{gentilicio|"..v.."|mp}}").."]]"
end
else
categorias=categorias.."[[Categoría:Wikisource:Artículos de autores sin país]]"
end
end
for k,v in pairs(argus) do
if params[k] then
if params[k] == 0 then
categorias = categorias..'[[Categoría:Wikisource:Artículos que usan parámetros obsoletos en la plantilla Biocitas]]' --añade categoría de seguimiento a parámetros obsoletos (declarados arriba)
end
else
html:wikitext(errorMessage('Error: parámetro '..k..' no reconocido'))
categorias=categorias..'[[Categoría:Wikisource:Artículos que usan parámetros no reconocidos en la plantilla Biocitas]]'
end
end
if mw.title.getCurrentTitle().namespace ~= 106 then --solo categorías en el espacio principal
categorias = ''
end
html:wikitext(categorias)
return tostring(html) .. '\n__NOTOC__'
end
return p
a7i3b8z81uk5farfl2x75lzcjituf0e
Módulo:Biocitas/pruebas
828
217415
1653862
1488630
2026-05-15T01:34:02Z
Ignacio Rodríguez
3603
actualizo zona de pruebas
1653862
Scribunto
text/plain
local p = {}
local Wikidata = require('Módulo:Wikidata')
local Enlaces = require('Módulo:Enlaces')
local Str = require('Módulo:String')
local Entidad = mw.wikibase.getEntityObject() or '' -- Tabla con los datos en Wikidata de la persona.
--parámetros reconocidos. 1 = vigente, 0 = obsoleto
local params ={['texto']=1,['obras']=1,['documentos']=1,['foto']=1,['wikipedia']=0,['wikiquote']=0,['commons']=0,['wikispecies']=0,['wikidata']=1,['añomuerte']=1,['siglomuerte']=1,['añonacimiento']=1,['siglonacimiento']=1,['ordenar']=1,['inicial']=1,['añosmuerte']=0,['vivo']=1,['país']=1}
local categorias = ''
local withoutEpoque = true
-- Función que devuelve la lista de los valores de una propiedad en Wikidata formateados
local function propiedad(idPropiedad,opciones)
if Entidad and Entidad.claims then --and Entidad.claims[idPropiedad] then
if not opciones then
opciones = {}
end
idPropiedad = string.upper(idPropiedad)
opciones['propiedad'] = idPropiedad
local valorPropiedad = Wikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])
if not valorPropiedad or valorPropiedad == '' then
return ''
end
return valorPropiedad
else return ''
end
end
local function errorMessage(text)
-- Función que entrega un mensaje de error formateado como tal
local html = mw.html.create('div')
html:addClass('error')
:wikitext(text)
categorias=categorias..'[[Categoría:Wikisource:Artículos con errores en la plantilla Biocitas]]'
return tostring(html)
end
-- Función para eliminar contenido entre paréntesis
local function remove_parentheses(text)
-- Sustituye todo lo que está entre paréntesis (incluyendo los paréntesis) por una cadena vacía
if text==nil then return "" end
local texto = text:gsub("%b()", "")
if texto ~= nil then
return texto
else
return text
end
end
local function computeCenturyFromYear(year)
-- Dado un año entrega el siglo
if year >= 0 then
return math.ceil(year / 100)
else
return -math.ceil(-year / 100)
end
end
local function getTextForCentury(century)
-- Dado un siglo en número, entrega un texto preformateado con
-- números romanos y un indicador de antes de Cristo.
local romanNumbers1 = {'', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X'}
local romanNumbers2 = {'', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'}
local text = romanNumbers2[math.floor(math.abs(century) / 10) + 1] .. romanNumbers1[math.floor(math.abs(century) % 10) + 1]
if century > 0 then
return 'Siglo '..text
else
return 'Siglo '.. text .. ' a. C.'
end
end
local function getTextForYear(year)
-- transforma un año de formato -45 a 45 a. C.
local text = math.abs(year)
if year < 0 then
text = text .. ' a. C.'
end
return text
end
local function getDateFromArgs(args, field)
-- Obtiene datos (fecha de nacimiento, fallecimiento) de parámetros determinados en la plantilla {{Biocitas}}
-- con el formato AñoNacimiento, AñoMuerte, SigloNacimiento o SigloMuerte. TextoNacimiento o InciertoNacimiento también funciona
local struct = {
year = nil,
century = nil,
text = nil,
precision = 0
}
--extract year or century
local date = args['año' .. field]
if date == nil then
date = args[field]
end
if tonumber(date) ~= nil then
struct.year = tonumber(date)
if struct.year == 0 then
struct.text = errorMessage("¡El calendario gregoriano no tiene año 0!")
return struct
end
struct.century = computeCenturyFromYear(struct.year)
struct.precision = 9
elseif args['siglo' .. field] ~= nil then
struct.century = tonumber(args['siglo' .. field])
struct.precision = 7
end
--build text
if struct.year ~= nil then
struct.text = getTextForYear(struct.year)
elseif struct.century ~= nil then
struct.text = getTextForCentury(struct.century, true)
else
struct.text = date
end
if args['texto' .. field] ~= nil then
struct.precision = 0 --we don't know anything
struct.text = args['texto' .. field] .. ' ' .. struct.text
end
if args['incierto' .. field] ~= nil and struct.text ~= nil then
struct.precision = 0 --we don't know anything
struct.text = args['incierto' .. field] .. ' ' .. struct.text
end
return struct
end
local function parseWbTime(value)
local _,_, year = string.find(value.time, '([%+%-]%d%d%d+)%-')
year = tonumber(year)
return {
year = year,
century = computeCenturyFromYear(year),
text = nil,
precision = value.precision
}
end
local function getDateFromTimeStatement(statement, field)
local struct = {
year = nil,
century = nil,
text = nil,
precision = 0
}
local prefix = ''
local snak = statement.mainsnak
if snak.snaktype == 'novalue' then
return struct
end
if statement.qualifiers ~= nil then
if statement.qualifiers.P1480 ~= nil then
for _,qualifier in pairs(statement.qualifiers.P1480) do
if qualifier.datavalue.value['numeric-id'] == 5727902 then
struct = parseWbTime(snak.datavalue.value)
prefix = 'circa '
struct.precision = 8 --TODO: hacky
end
end
end
if statement.qualifiers.P1319 ~= nil then
for _,qualifier in pairs(statement.qualifiers.P1319) do
struct = parseWbTime(qualifier.datavalue.value)
prefix = 'después de'
struct.precision = 8 --TODO: hacky
end
elseif statement.qualifiers.P1326 ~= nil then
for _,qualifier in pairs(statement.qualifiers.P1326) do
struct = parseWbTime(qualifier.datavalue.value)
prefix = 'antes de '
struct.precision = 8 --TODO: hacky
end
elseif statement.qualifiers.P1317 ~= nil then
for _,qualifier in pairs(statement.qualifiers.P1317) do
struct = parseWbTime(qualifier.datavalue.value)
prefix = 'floruit '
struct.precision = 8 --TODO: hacky
end
else
struct = parseWbTime(snak.datavalue.value)
end
elseif snak.snaktype == 'value' then
struct = parseWbTime(snak.datavalue.value)
else
return struct
end
--Create text
if struct.precision >= 9 then
struct.text = prefix .. getTextForYear(struct.year)
elseif struct.precision == 8 then
struct.text = prefix .. getTextForYear(struct.year)
elseif struct.precision == 7 then
struct.text = prefix .. getTextForCentury(struct.century, true)
else
struct.text = errorMessage('La fecha de ' .. field .. ' tiene muy poca precisión en Wikidata')
end
return struct
end
local function getDateFromTimeStatements(statements, field)
-- Función que obtiene las fechas desde Wikidata (copiada literal sin adaptaciones desde la frWS)
if #statements == 0 then
return {
precision = 0
}
end
local time = nil
for _, statement in pairs(statements) do
local newTime = getDateFromTimeStatement(statement, field)
if time == nil then
time = newTime
elseif time.year ~= newTime.year then --si hay años contradictorios
time.precision = 8
--html:wikitext(errorMessage('Hay varios años de ' .. field .. ' posibles en Wikidata. Una manera de resolver este error es fijar una de las dos fechas como "preferida".'))
--return {
--text = errorMessage('Hay varios años de ' .. field .. ' posibles en Wikidata. Una manera de resolver este error es fijar una de las dos fechas como "preferida".'),
-- precision = 0
--}
end
end
if time == nil then
return {
precision = 0
}
end
return time
end
local function resolverFecha(arg, wd)
local fecha = arg
if arg.text == nil and wd ~= nil then
fecha = wd
elseif arg.text ~= nil then
categorias = categorias..'[[Categoría:Wikisource:Artículos con datos locales]]'
if wd and wd.text == nil then
categorias = categorias..'[[Categoría:Wikisource:Artículos con datos por trasladar a Wikidata]]'
end
end
return fecha
end
local function categoriaEpoca(fecha, tol)
local categoria = ''
if fecha.century ~= nil and (fecha.year == nil or fecha.year <= fecha.century * 100 + tol or fecha.precision <=8 ) then
if 14 <= fecha.century then
categoria='[[Categoría:Autores del ' .. getTextForCentury(fecha.century, false) .. ']]'
end
if 6 <= fecha.century and fecha.century <= 14 then
categoria=categoria..'[[Categoría:Autores de la Edad Media]]'
end
if fecha.century < 6 then
categoria='[[Categoría:Autores de la Antigüedad]]'
end
withoutEpoque = false
end
return categoria
end
function p.biocitas( frame ) -- función principal para llamar desde {{biocitas}}
if mw.title.getCurrentTitle().namespace ~= 106 then
return errorMessage('La plantilla Biocitas se utiliza solo en espacios de nombres Autor, por ejemplo Autor:Miguel de Cervantes')
end
local argus = {}
for k,v in pairs(frame:getParent().args) do -- crea una tabla con los parámetros incluídos en la plantilla, y elimina parámetros vacíos
if v ~= '' and type(k) ~= 'number' then
argus[mw.ustring.lower(k)] = v -- todos los parámetros en minúsculas por defecto:
end
end
local html = mw.html.create() -- cuerpo principal de la plantilla
local tabla = html:tag('table'):addClass('divgrande')
local divgrande = tabla:tag('tr')--:addClass('divgrande') -- div principal que contiene al resto
-- WIKIDATA! --
if Entidad == '' and argus['wikidata'] then
Entidad = mw.wikibase.getEntityObject(argus['wikidata'])
end
if Entidad == '' then
categorias=categorias..'[[Categoría:Wikisource:Artículos de autores no conectados a Wikidata]]'
html:wikitext(errorMessage('<small>Error: Los artículos de autores deben estar enlazados en Wikidata. '..
'Agrega un enlace a otro proyecto usando el link en la columna izquierda, '..
'o '..frame:preprocess('[https://www.wikidata.org/wiki/Special:NewItem?site=eswikisource&page={{FULLPAGENAMEE}} crea un nuevo elemento en Wikidata]')..'</small>'))
end
---- variables para manejar fechas de muerte y nacimiento
local nacimientoArg = getDateFromArgs(argus, 'nacimiento')
local muerteArg = getDateFromArgs(argus, 'muerte')
local floruitArg = getDateFromArgs(argus, 'floruit')
local nacimientoWikidata = nil
local muerteWikidata = nil
local floruitWikidata = nil
if Entidad ~= nil and Entidad ~= '' then --si existe la entidad en Wikidata, obtiene las fechas desde ahí.
nacimientoWikidata = getDateFromTimeStatements(Entidad:getBestStatements('P569'), 'nacimiento')
muerteWikidata = getDateFromTimeStatements(Entidad:getBestStatements('P570'), 'muerte')
floruitWikidata = getDateFromTimeStatements(Entidad:getBestStatements('P1317'), 'floruit')
floruitWikidata.precision = 8
end
local nacimiento = resolverFecha(nacimientoArg, nacimientoWikidata)
local muerte = resolverFecha(muerteArg, muerteWikidata)
local floruit = resolverFecha(floruitArg, floruitWikidata)
if nacimiento.precision >= 9 and nacimiento.year > 1300 then
categorias=categorias..'[[Categoría:N' .. nacimiento.year .. ']]'
end
if muerte.precision >= 9 and muerte.year > 1300 then
categorias=categorias..'[[Categoría:F' .. muerte.year .. ']]'
end
categorias=categorias..categoriaEpoca(nacimiento, -20)
categorias=categorias..categoriaEpoca(muerte, 5)
categorias=categorias..categoriaEpoca(floruit, 0)
if withoutEpoque then
categorias=categorias..'[[Categoría:Época desconocida]]'
end
--año de la muerte, para las plantillas
local anomuerte
local anosmuerte = argus['añosmuerte']
if muerte.year then
anomuerte = getTextForYear(muerte.year)
elseif muerte.century then
anomuerte = muerte.century*100
elseif argus['añomuerte'] ~= '' and argus['añomuerte'] ~= nil then
anomuerte = argus['añomuerte']
elseif argus['siglomuerte'] ~= '' and argus['siglomuerte'] ~= nil then
anomuerte = (tonumber(argus['siglomuerte']))*100
elseif floruit.year then
--muerte presunta 70 años después de florecer
anomuerte = getTextForYear(floruit.year + 70)
elseif floruit.century then
--si sólo se conoce el siglo, murió a mediados de siglo
anomuerte = floruit.century*100 - 50
end
--artículos sin información de año de muerte
if (argus['vivo']==nil or argus['vivo']=='') and (anomuerte == '' or anomuerte ==nil) and (muerte.century == '' or muerte.century ==nil) then
categorias = categorias..'[[Categoría:Wikisource:Artículos de autores sin información de año de muerte]]'
end
-- texto fechas
local textofechas = ''
if nacimiento.text or muerte.text then
textofechas = (nacimiento.text or '')..' - '..(muerte.text or '')
elseif floruit.text then
textofechas = 'fl. '..floruit.text
end
-- esqueleto y CSS de los divs internos
local foto = divgrande:tag('td'):addClass('bc-foto')
local medio = divgrande:tag('td'):addClass('bc-medio')
--local divtitulo = medio:tag('div'):addClass('bc-titulo')
local enlaces = divgrande:tag('td'):addClass('bc-enlaces')
local derechos = html:tag('div'):addClass('bc-derechos')
--variables locales
local sep = "<span style='display:inline-block; width:.5em;'> </span>"
local nombre = frame:preprocess("{{PAGENAME}}")
--Contenido de los divs secundarios
--divtitulo:wikitext("Ficha de ".. nombre:gsub(' %(.*%)','')) --en el título nombres sin paréntesis
-- Lista de enlaces
if (not argus['wikidata'] or argus['wikidata'] == '') and Entidad~=nil then
argus['wikidata']=Entidad.id --enlazar a elemento wikidata
end
---- Enlaces uno por uno ---
local listaenlaces = Enlaces.all(argus)
if argus['obras'] ~= 'none' then --Obras (aparece siempre por defecto a menos que se defina como none)
listaenlaces["obras"] = { ['name'] = 'Categoría de obras',
['image'] = 'Wikisource-logo.svg',
['text'] = 'Obras',
['prefix'] = ':Categoría:Obras de ',
['title'] = '',
}
if argus['obras'] ~= '' and argus['obras'] ~= nil then
listaenlaces["obras"]["title"] = argus['obras']
else
listaenlaces["obras"]["title"] = nombre
end
end
-- crea elementos para el resto de los enlaces
listaenlaces["documentos"] = { ['name'] = 'Categoría de documentos',
['image'] = 'Wikisource-logo.svg',
['text'] = 'Documentos ',
['prefix'] = ':Categoría:Documentos de ',
['title'] = argus['documentos'] or '',
}
-- texto propio de biocitas
listaenlaces["eswiki"]["text"] = "Biografía"
listaenlaces["eswikiquote"]["text"] = "Citas"
listaenlaces["commonswiki"]["text"] = "Multimedia"
listaenlaces["specieswiki"]["text"] = "Especies descritas"
listaenlaces["wikidata"]["text"] = "Metadatos"
local orden = {'obras', 'documentos', 'eswiki', 'eswikiquote', 'commonswiki', 'specieswiki', 'wikidata'}
local textoenlaces = Enlaces.formattedbiocitas(listaenlaces, orden)
enlaces:wikitext(textoenlaces)
--llave automágica
local apellidos = mw.text.trim((propiedad('p734',{['uno']='sí'}) or '')..' '..(propiedad('p1950',{['uno']='sí'}) ))
local nombres = (propiedad('P735',{['conjunción']=' '}) or '')
if apellidos == '' or apellidos == nil then --p.ej. Alonso de Villegas, Autor:Jerónimo Bécker, etc.
apellidos = nombres --Mejor que "Autores-," cuando no existe apellido
end
if string.sub(apellidos,1,3) == 'de ' then
apellidos = string.sub(apellidos,4)
end
local llave=(apellidos..', '..nombres) ~= ', ' and (apellidos..', '..nombres)
mw.log(llave)
-- Ordenar e Iniciales--
if argus['ordenar']==nil and llave then
argus['ordenar'] = llave
end
if argus['ordenar'] ~= nil then
if argus['inicial'] == nil then
argus['inicial'] = Str.CaracterParaOrdenar(argus['ordenar']) --Si no está especificada la inicial, la saca de la primera letra de la llave de ordenado.
end
html:wikitext(frame:preprocess('{{DEFAULTSORT:' .. argus['ordenar'] .. '}}'))
categorias=categorias..'[[Categoría:Autores-'..argus['inicial']..']]' --categoría Autores-X
else
html:wikitext(errorMessage("El parámetro «|Ordenar=» es obligatorio"))
categorias=categorias..'[[Categoría:Wikisource:Artículos de autores sin llave de ordenamiento]]' --categoría Autores-X
end
if argus['ordenar'] ~= nil then
-- Véase también
enlaces:tag('div')
:addClass('bc-enlace')
:wikitext("◄"..sep.."[[:Categoría:Autores-"..argus['inicial'].."|Autores-"..argus['inicial'].."]]") --enlace a Autores-X
end
--- Índice de autores ---
--indice = enlaces:tag('div')
--indice
-- :addClass('bc-enlace')
-- :wikitext("[[:Categoría:Autores|Índice de autores]]")
-- Texto de al medio
if argus['texto'] ~= '' and argus['texto'] ~= nil then
medio:wikitext(argus['texto'])
else
local description = remove_parentheses(mw.wikibase.getDescription())
medio:wikitext("'''"..nombre.."'''<br/>("..textofechas..')<br/>'..(description or ''))
categorias = categorias..'[[Categoría:Wikisource:Autores con texto automático]]'
end
-- Firma ( aun no se puede conectar con otras Q de wikidata :( )
--if argus['wikidata']== '' then
if propiedad ('p109') ~= '' then
medio:wikitext("<br><br> [[File:"..propiedad('p109',{['uno']='sí'}).."|frameless|99999x50px|center|Firma]]")
end
--else
-- if propiedad ('p109',{['entidad']=argus['wikidata']}) ~= '' then
-- medio:wikitext("<br><br> [[File:"..propiedad('p109',{['uno']='sí',['entidad']=argus['wikidata']}).."|frameless|center|Firma]]")
-- end
-- end
-- Retrato autor --
local sexo = propiedad('p21')
if argus['foto'] ~= '' and argus['foto'] ~= nil then
foto:wikitext("[[File:"..argus['foto'].."|frameless|99999x150px|center]]")
elseif propiedad('p18') ~= '' then
foto:wikitext("[[File:"..propiedad('p18',{['uno']='sí'}).."|frameless|99999x150px|"..propiedad('p18',{['calificador']='P2096',['idioma']='es'}).."|center]]")
else
local faltaFoto
local fotos = {'Silver - replace this image male.svg', 'Silver - replace this image female.svg','Falta foto.jpg'}
if sexo == "masculino" then
faltaFoto = fotos[1]
elseif sexo == "femenino" then
faltaFoto = fotos[2]
else
faltaFoto = fotos[3]
end
foto:wikitext("[[File:"..faltaFoto.."|frameless|99999x150px|center]]")
end
--Plantilla de derechos
if anomuerte ~='' and anomuerte ~= nil then
derechos
:wikitext(frame:preprocess("{{DP-Autor|"..anomuerte.."}}"))
elseif anosmuerte ~='' and anosmuerte ~= nil then
derechos
:wikitext(frame:preprocess("{{DP-AUTOR-"..anosmuerte.."}}"))
else
derechos
:wikitext(frame:preprocess("{{DP-AUTOR-none}}"))
end
-- categorías--
categorias=categorias.."[[Categoría:Autores]]"
if argus['vivo'] and mw.ustring.lower(argus['vivo']) ~= 'no' then
categorias=categorias.."[[Categoría:Personas vivas]]"
end
-- categorizar por país: primera prioridad la tienen
if argus['país'] ~= nil and argus['país'] ~='' then
categorias=categorias.."[[Categoría:Autores "..frame:preprocess("{{gentilicio|"..argus['país'].."|mp}}").."]]"
else
argus['país'] = propiedad('P27',{['conjunción']=',',['enlace']='no'})
if argus['país'] ~= nil and argus['país'] ~='' then
for _,v in ipairs(mw.text.split(argus['país'], '[,]')) do --el módulo Wikidata entrega la información en palabras separadas por coma. Esto convierte esa información en una tabla y itera en sus ítems (para autores con más de una nacionalidad)
--categoría Autores por país: usa plantilla {{gentilicio}}
categorias=categorias.."[[Categoría:Autores "..frame:preprocess("{{gentilicio|"..v.."|mp}}").."]]"
end
else
categorias=categorias.."[[Categoría:Wikisource:Artículos de autores sin país]]"
end
end
for k,v in pairs(argus) do
if params[k] then
if params[k] == 0 then
categorias = categorias..'[[Categoría:Wikisource:Artículos que usan parámetros obsoletos en la plantilla Biocitas]]' --añade categoría de seguimiento a parámetros obsoletos (declarados arriba)
end
else
html:wikitext(errorMessage('Error: parámetro '..k..' no reconocido'))
categorias=categorias..'[[Categoría:Wikisource:Artículos que usan parámetros no reconocidos en la plantilla Biocitas]]'
end
end
if mw.title.getCurrentTitle().namespace ~= 106 then --solo categorías en el espacio principal
categorias = ''
end
html:wikitext(categorias)
return tostring(html) .. '\n__NOTOC__'
end
return p
a7i3b8z81uk5farfl2x75lzcjituf0e
Plantilla:Sangría/doc
10
221135
1653805
979765
2026-05-14T13:46:49Z
Ignacio Rodríguez
3603
advertencia
1653805
wikitext
text/x-wiki
{{Subpágina documentación}}
<!-- POR FAVOR, AÑADE LAS CATEGORÍAS E INTERWIKIS AL FINAL DE ESTA PÁGINA. -->
<!-- Si te dispones a documentar una plantilla de mantenimiento, por favor considera adoptar el formato de [[Wikipedia:Documentación de plantillas de mantenimiento]]-->
== Uso ==
'''ATENCIÓN: Esta plantilla no debe usarse para formatear los textos en general, sino únicamente en las escasísimas excepciones en que un párrafo se «sangra» por un motivo en particular de una manera distinta al resto del texto'''.
{{epc|sangría|«número»|«texto»}}
=== Ejemplos ===
* {{epc|sangría|3em|texto}} da como resultado:
{{sangría|3em|texto}}
* {{epc|sangría|3em|Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.}} da como resultado:
{{sangría|3em|Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.}}
<includeonly>
<!-- Coloca las categorías de la plantilla a continuación y los interwikis en Wikidata -->
[[Categoría:Wikisource:Plantillas de formato de texto]]
</includeonly>
457li5obiefuc3o5yhbc0m4cthcguos
Módulo:Encabezado
828
221955
1653827
1648193
2026-05-14T15:37:32Z
Ignacio Rodríguez
3603
delink centralizado
1653827
Scribunto
text/plain
require('strict')
local p = {}
local Wikidata = require('Módulo:Wikidata')
local QID = mw.wikibase.getEntityIdForCurrentPage()
local Str = require('Módulo:String')
local delink = Str.delink
local Args = require('Módulo:Arguments')
local Enlaces = require('Módulo:Enlaces')
local categorias = {}
local errorcats = {}
local lang = mw.language.new('es')
--parámetros reconocidos. 1 = vigente, 0 = obsoleto. En orden alfabético:
local params = {['ano']=1,['anterior']=1,['audio']=1,['autor']=1,["bilingüe"]=1,['catálogo']=0,['commons']=1,['commonscat']=1,['derechos']=1,['desambiguación']=1,
['editor']=1, ['editorial']=1, ['enlaces']=1,['históricos']=1,['ilustrador']=1,['imprenta']=1, ['lugar']=1, ['más info']=1,['meta']=1,['noano']=1,['notas']=1,
['progreso']=1, ['próximo']=1, ['sección']=1,['sección autor']=1,['sub-titulo']=1,['subsección']=1,['subpágina']=1,['titulo']=1,['traductor']=1,['última muerte']=1,
['volumen']=1, ['wikcionario']=1,['wikidata']=1,['wikilibros']=1,['wikinoticias']=1,['wikipedia']=1,['wikiquote']=1,['wikispecies']=1,['wikiversidad']=1}
local enlacePagina = mw.title.getCurrentTitle().text
local textoenlace=mw.uri.encode(enlacePagina, "QUERY")
local altparams= {['título']='titulo', ['title']='titulo',
['subtítulo']='sub-titulo', ['subtitulo']='sub-titulo', ['sub-título']='sub-titulo', ['sub-title']='sub-titulo', ['subtitle']='sub-titulo',
['left']='anterior',
['right']='próximo', ['siguiente']='próximo',
['author']='autor',
['traducción']='traductor',
['año']='ano',
['bilingue']='bilingüe',
['noaño']='noano',
['nota']='notas',
['subpagina']='subpágina',
['seccion']='sección',
['seccion autor']='sección autor', ['seccion-autor']='sección autor', ['sección-autor']='sección autor'
}
local function aCadena(t)
if type(t) == 'string' then return t end
return mw.text.listToText(t, ', ', ' y ')
end
local function nav_link(argus, class, arrow, content)
local span = mw.html.create('span'):addClass(class..'-span')
span:tag('span'):addClass(class..'-span-arrow')
if class=='prev' then span:wikitext(arrow .. ' ' .. content) end
if class=='next' then span:wikitext(content .. ' ' .. arrow) end
if argus['enlaces'] and mw.ustring.lower(argus['enlaces']) == 'no' then
span:cssText('display:none')
end
return tostring(span)
end
local function errorMessage(text)
-- Función que entrega un mensaje de error formateado como tal
local html = mw.html.create('div')
html:addClass('error')
:wikitext(text)
table.insert(errorcats, '[[Categoría:Wikisource:Páginas con errores en la plantilla Encabe]]')
return tostring(html)
end
local function linktarget(s)
if not s:match("%[%[") then
return s
end
local result = s
-- Find the display area of the wikilink
if result:match("|") then -- Find if we're dealing with a pipecd link.
result = result:match("%[%[(.+)%|.+%]%]")
else
result = result:match("%[%[(.-)%]%]")
end
return result
end
local function link(s)
if s:find("[%[%{%<]") then
return s
else
return '[[Autor:'..s..'|'..s..']]'
end
end
local deAutor = function(s) --Para [[Autor:AAA|BBB]], devuelve AAA
-- remover entidades html
s = s:gsub("<[%a%d%s%\"'/#;:=]+>", "")
local m = mw.ustring.match(s, '%[%[Autor:(.+)%|.+%]%]')
if m and m ~= '' then return m end
m = mw.ustring.match(s, '%[%[Autor:(.+)%]%]')
if m and m ~= '' then return m end
--enlaces a wikidata u otros
m = mw.ustring.match(s, '%[%[.+%|(.+)%]%]')
if m and m ~= '' then return m end
return delink(s)
end
local function enlaceMicroformato(param, valor)
if valor and valor ~= '' then
if type(valor) == 'string' then
return mw.html.create('span')
:addClass('ws-' .. param) --ws-author, ws-title, etc.
:wikitext(delink(valor))
elseif type(valor) == 'table' then
local spans = {}
for _, v in pairs(valor) do
table.insert(spans, tostring(mw.html.create('span')
:addClass('ws-' .. param)
:wikitext(delink(v)))
)
end
return table.concat(spans)
end
end
return ''
end
local function microformato(d, argus)
local microformat = mw.html.create('div')
:cssText('display:none')
:attr('id', 'ws-data')
:addClass('ws-noexport')
-- todo: no captura datos del Índice si tiene otro Wikidata (p.ej. Q88887973)
-- todo: los que no están en [[Plantilla:Proofreadpage header template]] (lugar, volumen, nivel) no llegan del
-- índice y sólo los captura de Wikidata.
if d.titulo and d.titulo ~= '' then
microformat:node( enlaceMicroformato( 'title', d.titulo ) )
microformat:node( enlaceMicroformato( 'key', d.titulo ) ) --todo: mejorable
end
if d.ano and d.ano ~= '' then
microformat:node( enlaceMicroformato( 'year', d.ano ) )
end
if d.autor and d.autor ~= '' then
microformat:node( enlaceMicroformato( 'author', d.autor ) )
end
if d.traductor and d.traductor ~= '' then
microformat:node( enlaceMicroformato( 'translator', d.traductor ) )
end
if d.ilustrador and d.ilustrador ~= '' then
microformat:node( enlaceMicroformato( 'illustrator', d.ilustrador ) )
end
if argus["sección"] and argus["sección"] ~= '' then
microformat:node( enlaceMicroformato( 'chapter', argus["sección"] ) )
end
if d.imprenta and d.imprenta ~= '' then --ojo: Editorial ~= Editor ~= Imprenta
microformat:node( enlaceMicroformato( 'publisher', d.imprenta ) )
end
if d.lugar and d.lugar ~= '' then
microformat:node( enlaceMicroformato( 'place', d.lugar ) )
end
if d.nivel and d.nivel ~= '' then
microformat:node( enlaceMicroformato( 'progress', d.nivel ) ) --puede que esté roto
end
if d.volumen and d.volumen ~= '' then
microformat:node( enlaceMicroformato( 'volume', d.volumen ) )
end
--todo: pdte. (¿adaptar de [[:ca:Module:Header]]?)
--if argus.index then
-- microformat:node( enlaceMicroformato( 'scan', argus.index ) )
-- if argus.image and mw.ustring.match(argus.image, '^%d+$') ~= nil then
-- microformat:node( enlaceMicroformato( 'cover', argus.index .. '/' .. argus.image ) )
-- end
-- end
--todo: ¿extraer de listaenlaces? argus.x ~= listaenlaces
if argus.wikipedia and argus.wikipedia ~= '' then
microformat:node( enlaceMicroformato( 'wikipedia', argus.wikipedia ) )
end
if argus.wikiquote and argus.wikiquote ~= '' then
microformat:node( enlaceMicroformato( 'wikiquote', argus.wikiquote ) )
end
if argus.commonscat and argus.commonscat ~= '' then
microformat:node( enlaceMicroformato( 'commons', argus.commons ) )
end
if argus.notas and argus.notas ~= '' then
microformat:tag('div') --no puede ser span
:addClass('ws-summary')
:wikitext(argus.notas)
end
return tostring(microformat)
end
-- Elije entre info local o Wikidata
local function resolverWikidataNivel(argus, parametro)
local ws = argus[parametro] --nivel
local badges = Wikidata.badge{args={qid=argus['wikidata'], ws=ws, indicator=true}}
return mw.getCurrentFrame():preprocess(badges)
end
local function resolverWikidata(argus, parametro, PID)
local ws = argus[parametro]
if not ws or ws == '' then
ws = Wikidata.claim{item=argus['wikidata'], property=PID, lang="es", list=false}
end
if ws and ws~= '' then return ws end
end
local function resolverWikidataPersona(argus, parametro, PID)
local ws = argus[parametro]
if ws == 'no' then return end
if ws and ws~= '' then
ws = mw.text.split(ws, '[/,]')
for i, v in ipairs(ws) do
v = mw.text.trim(v)
if v == 'Wikisource' then
ws[i] = '[[Ayuda:Directrices para traducciones|Wikisource]]'
else
ws[i] = link(v)
end
end
elseif not ws or ws == '' then
ws = Wikidata.claim{item=argus['wikidata'], property=PID, lang="es", tabla=true}
end
if ws and ws~= '' then return ws end
end
local function consolidado(argus)
local data = {}
local props = {
titulo = {'titulo', 'P1476'},
subtitulo = {'sub-titulo', 'P1680'},
ano = {'ano', 'P577'},
lugar = {'lugar', 'P291'},
imprenta = {'imprenta', 'P872'},
volumen = {'volumen', 'P478'},
edicionde = {'versiones', 'P629'},
partede = {'partede', 'P361'},
autor = {'autor','P50', persona = true},
traductor = {'traductor', 'P655', persona = true},
ilustrador = {'ilustrador', 'P110', persona = true},
nivel = {'progreso', nivel=true},
}
for k, v in pairs(props) do
if v.nivel then
data[k] = resolverWikidataNivel(argus, v[1])
elseif v.persona then
data[k] = resolverWikidataPersona(argus, v[1], v[2])
else
data[k] = resolverWikidata(argus, v[1], v[2])
end
end
return data
end
local function buscaDesam(title)
local match = string.match( title.text, '(.-) %(.-%)')
if not match then return end
local desam = mw.title.new(match)
for i, cat in ipairs(desam.categories) do
if cat == 'Wikisource:Páginas de desambiguación' then
return match
end
end
end
local function personaCats(t, catprefix, categorias)
if t then
for i, v in ipairs(t) do
local delinked = delink(v)
if (delinked == 'Anónimo') or (delinked == 'valor desconocido') then
t[i] = '[[Autor:Anónimo|Anónimo]]'
table.insert(categorias, '[[Categoría:'..catprefix..' de autor anónimo]]')
else
table.insert(categorias, '[[Categoría:'..catprefix..' de '..deAutor(v):match("^%s*(.-)%s*$") ..']]')
end
end
end
if catprefix ~= '' then return categorias end
return ''
end
function p.encabe( frame )
local titulo = mw.title.getCurrentTitle()
local html = mw.html.create()
local argus = Args.getArgs(frame)
argus = Args.alias(argus, altparams)
local essub = titulo.isSubpage
if argus['subpágina'] == 'no' then
essub = false
end
-- QID real prevalece sobre el importado desde el índice (importante en subdivisiones)
if QID and QID ~= '' then
argus['wikidata'] = QID or argus['wikidata'] or ''
end
-- obtener todos los datos
local d = consolidado(argus)
--variables matemática derechos de autor
local anosmuerte
local anospub
if d.ano and tonumber(d.ano) ~= nil then
anospub = tonumber(lang:formatDate('Y')) - tonumber(d.ano)
end
if argus['última muerte'] and tonumber(argus['última muerte']) ~= nil then
anosmuerte = tonumber(lang:formatDate('Y')) - tonumber(argus['última muerte'])
end
-- estructura HTML
local divgrande = html:tag('div'):attr('id','headertemplate'):addClass('noprint ws-noexport notheme') -- div principal que contiene al resto
local main = divgrande:tag('div'):addClass('main-div')
local anterior = main:tag('div'):attr('id','headerprevious')
local medio = main:tag('div'):addClass('middle-div')
local proximo = main:tag('div'):attr('id','headernext')
----- enlaces de navegación
if argus['anterior'] and argus['anterior'] ~= '' then
anterior:wikitext(nav_link(argus, 'prev', '← ', argus['anterior']))
end
if argus['próximo'] and argus['próximo'] ~= '' then
proximo:wikitext(nav_link(argus, 'next', ' →', argus['próximo']))
end
if d.partede then
-- TODO: hacer algo con las obras que son parte de otras
end
-- datos bibliográficos
if d.titulo and d.titulo ~= '' then
medio:wikitext("'''''".. d.titulo .."'''''")
if d.subtitulo then
medio:wikitext(': '..'<span style="font-size:83%;">'.. d.subtitulo ..'</span>')
end
if d.ano and not argus['noano'] then
medio:wikitext(' ('.. d.ano ..')')
if tonumber(d.ano) ~= nil then
table.insert(categorias, '[[Categoría:P'.. d.ano ..']]')
end
end
medio:wikitext('<br>')
else
table.insert(errorcats, '[[Categoría:Wikisource:Textos sin título]]')
end
if d.autor then
personaCats(d.autor, '', {})
medio:wikitext('de '.. aCadena(d.autor) ..'<br>')
end
if d.traductor then
personaCats(d.traductor, 'Traducciones', categorias)
medio:wikitext('traducción de '..aCadena(d.traductor)..'<br>')
end
if d.ilustrador then
personaCats(d.ilustrador, 'Ilustraciones', categorias)
medio:wikitext('ilustración de '..aCadena(d.ilustrador)..'<br>')
end
if argus['más info'] then
medio:wikitext(argus['más info']..'<br>')
end
if argus['sección'] then
medio:wikitext("''"..argus['sección'].."''")
if argus['sección autor'] then
medio:wikitext(' de '..aCadena(resolverWikidataPersona(argus, 'sección autor')))
end
if argus['subsección'] then
medio:tag('span'):cssText('font-size: 83%;'):wikitext('<br>'..argus['subsección'])
end
end
if not argus['desambiguación'] and not essub then
argus['desambiguación'] = buscaDesam(titulo)
end
-- ENLACES A PROYECTOS HERMANOS
local inferior = main:tag('div'):addClass('noprint plainlinks lower-div')
local listaenlaces = Enlaces.all(argus)
-- TODO: pasarlo al módulo enlaces, o es muy específico de encabezado?
if d.edicionde then
listaenlaces[3] = {
['name'] = 'Otras versiones',
['image'] = 'OOjs_UI_icon_book-ltr.svg',
['text'] = 'otras versiones',
['prefix'] = '',
['title'] = linktarget(d.edicionde),}
end
--matematica y manejo derechos de autor
if argus['derechos'] then
listaenlaces[1] = {['text'] = argus.derechos,
['image'] = 'PD-icon.svg',
['prefix'] = ':Wikisource:Duración de derechos de autor por país#',
['title'] = argus.derechos}
if (argus['última muerte'] == 'seudónimo' or argus['última muerte'] == 'anónimo') and (anospub ~= nil) then
local numero = math.floor((anospub - 1)/10)
if numero > 10 then numero = 10 end
listaenlaces[2] = {['image'] = nil,
['text'] = tostring(numero*10)..' p.a.p. o menos',
['prefix'] = ':Wikisource:Duración de derechos de autor por país#',
['title'] = tostring(numero*10)..' p.a.p.'}
table.insert(categorias, '[[Categoría:'..tostring(numero*10)..' p.a.p.]]')
elseif argus['última muerte'] and (anosmuerte ~= nil) then
local numero = math.floor((anosmuerte - 1)/10)
if numero > 4 then --a partir de 50 p.m.a.
if numero > 10 then numero = 10 end
listaenlaces[2] = {['image'] = nil,
['text'] = tostring(numero*10)..' p.m.a. o menos',
['prefix'] = ':Wikisource:Duración de derechos de autor por país#',
['title'] = tostring(numero*10)..' p.m.a.'}
table.insert(categorias, '[[Categoría:'..tostring(numero*10)..' p.m.a.]]')
end
end
local cadena = argus.derechos:gsub(" y ", ", ")
-- Usar string.gmatch para separar por comas y procesar directamente
for nombre in cadena:gmatch("([^,]+)") do
table.insert(categorias, '[[Categoría:Publicado en '.. nombre:match("^%s*(.-)%s*$") ..']]')
end
--categorias = categorias..'[[Categoría:Publicado en '.. argus.derechos ..']]'
end
-- inserta enlaces
inferior:wikitext(Enlaces.formattedlinks(listaenlaces))
if argus['bilingüe'] and argus['bilingüe'] ~= '' then
inferior:wikitext('['..titulo:fullUrl({['match']=argus['bilingüe']})..' ver texto bilingüe]')
end
--Enlaces de descarga
if not essub then
local LinkExport='https://ws-export.wmcloud.org/?lang=es&page='..textoenlace..'&format='
local w = "<div style=\"font-size:80%\">Descargar como "
w = w .. "[[Archivo:EPUB silk icon.svg|12px|link="..LinkExport.."epub|Descargar en formato ePub]] "
w = w .. "[[Archivo:Document-pdf.svg|15px|link="..LinkExport.."pdf|Descargar en formato PDF]] "
w = w .. "[[Archivo:Mobi_icon.svg|22px|link="..LinkExport.."mobi|Descargar en formato mobi]]</div>"
inferior:wikitext(w)
end
if argus['notas'] and argus['notas'] ~= '' then
divgrande:tag('div'):addClass('notes'):wikitext("'''Nota:''' "..argus['notas']):tag('hr')
end
if argus['audio'] and argus['audio'] ~= '' then
divgrande:tag('div'):addClass('notes'):wikitext(frame:expandTemplate{ title = 'Multimedia', args = { argus['audio'] } })
end
--categorías automáticas
if not essub then
table.insert(categorias, '[[Categoría:ES-'..Str.CaracterParaOrdenar(titulo.rootText)..']]')
else
categorias = {'[[Categoría:'..titulo.rootText..']]'}
html:wikitext('__EXPECTED_UNCONNECTED_PAGE__')
end
for k,v in pairs(argus) do
if params[k] or altparams[k] then
if params[k] == 0 then
table.insert(errorcats, '[[Categoría:Wikisource:Páginas que usan parámetros obsoletos en la plantilla Encabe]]') --añade categoría de seguimiento a parámetros obsoletos (declarados arriba)
end
else
html:wikitext(errorMessage('Error: parámetro '..k..' no reconocido'))
table.insert(errorcats, '[[Categoría:Wikisource:Páginas que usan parámetros no reconocidos en la plantilla Encabe]]')
end
end
if titulo.namespace ~= 0 then --solo categorías en el espacio principal
categorias = {}
end
table.sort(categorias)
html:wikitext(table.concat(categorias))
html:wikitext(table.concat(errorcats))
html:wikitext(microformato(d, argus))
return tostring(html)
end
return p
9gepevbn1njudd2774syfk39b0ajy2j
Módulo:Documento ONU
828
224684
1653837
1547694
2026-05-14T16:02:05Z
Ignacio Rodríguez
3603
lua lints
1653837
Scribunto
text/plain
-- Módulo en desarrollo
-- TODO Detectar automáticamente tipo de resolución, período y número desde el título de la página
local p = {}
local Enlaces = require('Módulo:Enlaces')
local function toRoman(number)
local romanNumbers1 = {'', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X'}
local romanNumbers2 = {'', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'}
return romanNumbers2[math.floor(math.abs(number) / 10) + 1] .. romanNumbers1[math.floor(math.abs(number) % 10) + 1]
end
function p.documento(frame)
local argus = {}
local ordenar = ''
local fuente= 'https://undocs.org/es/'
for k,v in pairs(frame:getParent().args) do -- crea una tabla con los parámetros incluídos en la plantilla, y elimina parámetros vacíos
if v ~= '' and type(k) ~= 'number' then
argus[mw.ustring.lower(k)] = v -- todos los parámetros en minúsculas por defecto:
end
end
local enlacePagina = mw.title.getCurrentTitle().text
local texto = mw.uri.encode(enlacePagina, "QUERY")
local html = mw.html.create() -- cuerpo principal de la plantilla
local divgrande = html:tag('div'):addClass('noprint') -- div principal que contiene al resto
local tabla = divgrande:tag('table'):css('font-size','87%'):css('width', '100%')
local fila1 = tabla:tag('tr')
local celda1=fila1:tag('td'):attr('width','15%'):css('text-align','left')
local celda2=fila1:tag('td'):css('text-align','center')
local celda3=fila1:tag('td'):attr('width','15%'):css('text-align','right')
local fila2=tabla:tag('tr')
local celda4=fila2:tag('td'):attr('colspan','3'):css('font-size','120%'):css('text-align','center'):css('background','#B7C4E4'):css('border','1px solid #4488cc'):css('padding','12px')
local anterior = nil
local siguiente = nil
-- inferencia número del título
if not argus['número'] and string.match( enlacePagina, 'Resolución (%d+)') then
argus['número'] = string.match( enlacePagina, 'Resolución (%d+)')
end
if argus['anterior']~='' and argus['anterior']~=nil then --Para el caso de que la resolución anterior no siga la regularidad numérica
anterior=argus['anterior'] --se pasa el número por parámetro de la plantilla
else
if tonumber(argus['número'])~=nil then
anterior= tostring(tonumber(argus['número'])-1) --Para número de resolución anterior
end
end
if argus['siguiente']~='' and argus['siguiente']~=nil then --Para el caso de que la resolución siguiente no siga la regularidad numérica
siguiente=argus['siguiente'] --se pasa el número por parámetro de la plantilla
else
if tonumber(argus['número'])~=nil then
siguiente=tostring(tonumber(argus['número'])+1) --Para número de resolución siguiente
end
end
-- Según tipos de resoluciones
if argus['tipo'] == 'S/RES' then --Resoluciones del Consejo de Seguridad
if argus['número']>'1' and anterior~=nil then
celda1:wikitext("[[Resolución "..anterior.." del Consejo de Seguridad de las Naciones Unidas|<span style=\"color: darkgrey;\">« Resolución "..anterior.." </span>]]")
end
celda2:wikitext("[[Resoluciones del Consejo de Seguridad (ONU)|<span style=\"color: darkgrey;\">Lista de resoluciones</span>]]")
if siguiente~=nil then
celda3:wikitext("[[Resolución "..siguiente.." del Consejo de Seguridad de las Naciones Unidas|<span style=\"color: darkgrey;\"> Resolución "..siguiente.." »</span>]]")
end
celda4:wikitext("<span style=\"font-size: 120%; font-weight: bold; font-style: oblique;\"><span style=\"font-size: 115%;\">Resolución "..argus['número'].."</span> del Consejo de Seguridad de las Naciones Unidas,</span><br/>")
celda4:wikitext("aprobada por el Consejo de Seguridad")
if argus['sesión']~='' and argus['sesión']~=nil then
celda4:wikitext(" en su ".. argus['sesión']..".ª sesión")
if argus['fecha']~='' and argus['fecha']~=nil then
celda4:wikitext(", celebrada el "..argus['fecha'].." de " ..argus['año']..".")
end
if argus['nota']~='' and argus['nota']~=nil then
celda4:wikitext(argus['nota'])
end
end
fuente=fuente .. "S/RES/" .. argus['número'] .. "%20(" .. argus['año'] ..")"
-- Categoría específica
if tonumber(argus['número'])~=nil then
ordenar=string.format('Resolución %04d del Consejo de Seguridad de las Naciones Unidas',argus['número'])
end
if mw.title.getCurrentTitle().namespace==0 then
html:wikitext("[[Categoría:Resoluciones del Consejo de Seguridad de las Naciones Unidas|"..ordenar.."]]")
end
elseif argus['tipo'] == 'A/RES' then --Resoluciones de la Asamblea General
--TODO Falta enlazar ultima resolución de un periodo en siguiente, con la primera del siguiente período
celda2:wikitext("[[Resoluciones aprobadas por la Asamblea General de las Naciones Unidas durante el "..argus['período'].."º período de sesiones|<span style=\"color: darkgrey;\">Resoluciones aprobadas en el "..argus['período'].."º período de sesiones</span>]]")
celda4:wikitext("<span style=\"font-size: 120%; font-weight: bold; font-style: oblique;\"><span style=\"font-size: 115%;\">")
-- Si el periodo es mayor a 30
if tonumber(argus['período'])>30 then --cambia la forma de denominación de resolucion, utilizando números para el período
celda4:wikitext("Resolución "..argus['período'].."/"..argus['número'].."</span> de la Asamblea General de las Naciones Unidas,</span><br/>")
if anterior~=nil then
celda1:wikitext("[[Resolución "..argus['período'].."/"..anterior.." de la Asamblea General de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">« Resolución "..argus['período'].."/"..anterior.." </span>]]")
end
if siguiente~=nil then
celda3:wikitext("[[Resolución "..argus['período'].."/"..siguiente.." de la Asamblea General de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\"> Resolución "..argus['período'].."/"..siguiente.." »</span>]]")
end
fuente=fuente .. "A/RES/" .. argus['período'] .. "/" .. argus['número']
else -- hasta el período 30, se utilizaban números romanos del I al XXX
fuente=fuente .. "A/RES/" .. argus['número'] .. "("..toRoman(argus['período'])..")"
celda4:wikitext("Resolución "..argus['número'].." ("..toRoman(argus['período'])..") </span> de la Asamblea General de las Naciones Unidas,</span><br/>")
if (argus['período']~='1' or argus['número']~='1') and anterior~=nil then
celda1:wikitext("[[Resolución "..anterior.." ("..toRoman(argus['período'])..") de la Asamblea General de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">« Resolución "..anterior.." ("..toRoman(argus['período'])..") </span>]]")
end
if siguiente~=nil then
celda3:wikitext("[[Resolución "..siguiente.." ("..toRoman(argus['período'])..") de la Asamblea General de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\"> Resolución "..siguiente.." ("..toRoman(argus['período'])..") »</span>]]")
end
end
if argus['sesión']~='' and argus['sesión']~=nil then
celda4:wikitext("aprobada por la ".. argus['sesión']..".ª sesión plenaria")
if argus['fecha']~='' and argus['fecha']~=nil then
celda4:wikitext(" del "..argus['fecha'].." de " ..argus['año']..".")
end
end
--Categoría específica
if tonumber(argus['número'])~=nil then
ordenar=string.format('Resolución %04d de la Asamblea General de las Naciones Unidas',argus['número'])
end
if mw.title.getCurrentTitle().namespace==0 then
html:wikitext("[[Categoría:Resoluciones aprobadas por la Asamblea General de las Naciones Unidas durante el "..argus['período'].."º período de sesiones|"..ordenar.."]]")
end
elseif argus['tipo'] == 'A/HRC/RES' then --Resoluciones del Consejo de Derechos Humanos, ejemplo https://undocs.org/es/A/HRC/RES/26/20
celda2:wikitext("[[Resoluciones aprobadas por el Consejo de Derechos Humanos de las Naciones Unidas durante el "..argus['período'].."º período de sesiones|<span style=\"color: darkgrey;\">Resoluciones aprobadas en el "..argus['período'].."º período de sesiones</span>]]")
celda4:wikitext("<span style=\"font-size: 120%; font-weight: bold; font-style: oblique;\"><span style=\"font-size: 115%;\">")
-- Si el periodo es mayor a 30
if tonumber(argus['período'])>30 then --cambia la forma de denominación de resolucion, utilizando números para el período
celda4:wikitext("Resolución "..argus['período'].."/"..argus['número'].."</span> del Consejo de Derechos Humanos de las Naciones Unidas,</span><br/>")
if anterior~=nil then
celda1:wikitext("[[Resolución "..argus['período'].."/"..anterior.." del Consejo de Derechos Humanos de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">« Resolución "..argus['período'].."/"..anterior.." </span>]]")
end
if siguiente~=nil then
celda3:wikitext("[[Resolución "..argus['período'].."/"..siguiente.." del Consejo de Derechos Humanos de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\"> Resolución "..argus['período'].."/"..siguiente.." »</span>]]")
end
fuente=fuente .. "A/HRC/RES/" .. argus['período'] .. "/" .. argus['número']
else -- hasta el período 30, se utilizaban números romanos del I al XXX
fuente=fuente .. "A/HRC/RES/" .. argus['número'] .. "("..toRoman(argus['período'])..")"
celda4:wikitext("Resolución "..argus['número'].." ("..toRoman(argus['período'])..") </span> del Consejo de Derechos Humanos de las Naciones Unidas,</span><br/>")
if (argus['período']~='1' or argus['número']~='1') and anterior~=nil then
celda1:wikitext("[[Resolución "..anterior.." ("..toRoman(argus['período'])..") del Consejo de Derechos Humanos de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">« Resolución "..anterior.." ("..toRoman(argus['período'])..") </span>]]")
end
if siguiente~=nil then
celda3:wikitext("[[Resolución "..siguiente.." ("..toRoman(argus['período'])..") del Consejo de Derechos Humanos de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\"> Resolución "..siguiente.." ("..toRoman(argus['período'])..") »</span>]]")
end
end
if argus['fecha']~='' and argus['fecha']~=nil then
celda4:wikitext(" Aprobada el "..argus['fecha'].." de " ..argus['año']..".")
end
--Categoría específica
if tonumber(argus['número'])~=nil then
ordenar=string.format('Resolución %04d del Consejo de Derechos Humanos de las Naciones Unidas',argus['número'])
end
if mw.title.getCurrentTitle().namespace==0 then
html:wikitext("[[Categoría:Resoluciones aprobadas por el Consejo de Derechos Humanos de las Naciones Unidas durante el "..argus['período'].."º período de sesiones|"..ordenar.."]]")
end
elseif argus['tipo'] == 'E/RES' then --Resoluciones del Consejo Económico y Social
--TODO Falta enlazar ultima resolución de un periodo en siguiente, con la primera del siguiente período
celda2:wikitext("[[Resoluciones aprobadas por el Consejo Económico y Social durante el "..argus['período'].."º período de sesiones|<span style=\"color: darkgrey;\">Resoluciones aprobadas en el "..argus['período'].."º período de sesiones</span>]]")
celda4:wikitext("<span style=\"font-size: 120%; font-weight: bold; font-style: oblique;\"><span style=\"font-size: 115%;\">")
-- Si el periodo es mayor a 30
if tonumber(argus['período'])>30 then --cambia la forma de denominación de resolucion, utilizando números para el período
celda4:wikitext("Resolución "..argus['período'].."/"..argus['número'].."</span> de el Consejo Económico y Social de las Naciones Unidas,</span><br/>")
if anterior~=nil then
celda1:wikitext("[[Resolución "..argus['período'].."/"..anterior.." del Consejo Económico y Social de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">« Resolución "..argus['período'].."/"..anterior.." </span>]]")
end
if siguiente~=nil then
celda3:wikitext("[[Resolución "..argus['período'].."/"..siguiente.." del Consejo Económico y Social de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\"> Resolución "..argus['período'].."/"..siguiente.." »</span>]]")
end
fuente=fuente .. "E/RES/" .. argus['período'] .. "/" .. argus['número']
else -- hasta el período 30, se utilizaban números romanos del I al XXX
fuente=fuente .. "E/RES/" .. argus['número'] .. "("..toRoman(argus['período'])..")"
celda4:wikitext("Resolución "..argus['número'].." ("..toRoman(argus['período'])..") </span> del Consejo Económico y Social de las Naciones Unidas,</span><br/>")
if (argus['período']~='1' or argus['número']~='1') and anterior~=nil then
celda1:wikitext("[[Resolución "..anterior.." ("..toRoman(argus['período'])..") del Consejo Económico y Social de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">« Resolución "..anterior.." ("..toRoman(argus['período'])..") </span>]]")
end
if siguiente~=nil then
celda3:wikitext("[[Resolución "..siguiente.." ("..toRoman(argus['período'])..") del Consejo Económico y Social de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\"> Resolución "..siguiente.." ("..toRoman(argus['período'])..") »</span>]]")
end
end
if argus['fecha']~='' and argus['fecha']~=nil then
celda4:wikitext(" Aprobada el "..argus['fecha'].." de " ..argus['año']..".")
end
--Categoría específica
if tonumber(argus['número'])~=nil then
ordenar=string.format('Resolución %04d del Consejo Económico y Social de las Naciones Unidas',argus['número'])
end
if mw.title.getCurrentTitle().namespace==0 then
html:wikitext("[[Categoría:Resoluciones aprobadas por el Consejo Económico y Social de las Naciones Unidas durante el "..argus['período'].."º período de sesiones|"..ordenar.."]]")
end
--Fin E/RES
end
celda4:wikitext("<div style=\"font-size:80%\">Descargar como [[Archivo:EPUB silk icon.svg|12px|link=//tools.wmflabs.org/wsexport/tool/book.php?lang=es&format=epub&page=" .. texto .."|Descargar en formato ePub]] [[Archivo:Document-pdf.svg|15px|link=//tools.wmflabs.org/wsexport/tool/book.php?lang=es&page=" .. texto .. "&format=pdf-a5|Descargar en formato PDF]] [[Archivo:Mobi_icon.svg|22px|link=//tools.wmflabs.org/wsexport/tool/book.php?lang=es&page=" .. texto .. "&format=mobi|Descargar en formato mobi]] — Fuente [[Archivo:Logo of the United Nations (B&W).svg|18px|link=" .. fuente .. "|Fuente ONU]]</div>")
local enlaces = Enlaces.all(argus)
local formatted = Enlaces.formattedlinks(enlaces)
celda4:wikitext(formatted)
--Categoría común
if mw.title.getCurrentTitle().namespace==0 then
html:wikitext("[[Categoría:D"..argus['año'].."|"..ordenar.."]]")
end
return tostring(html)
end
return p
evaueogymlc5xdcawnomgqc999tk7bl
Módulo:Fechas/doc
828
225033
1653838
845044
2026-05-14T16:02:54Z
Ignacio Rodríguez
3603
borrar
1653838
wikitext
text/x-wiki
{{Subpágina documentación}}
=== Uso ===
{{borrar|sin uso}}
<includeonly>
<!-- Coloca las categorías de la plantilla a continuación y los interwikis en Wikidata -->
[[Categoría:Wikisource:Módulos]]
</includeonly>
9hhgswsiakl3ngo1kbx7jz77tqh4f6l
Módulo:Ficha
828
226249
1653840
849588
2026-05-14T17:19:51Z
Ignacio Rodríguez
3603
limpieza código, dioses lua, disminuyo dependencias inútiles
1653840
Scribunto
text/plain
--
-- Este módulo es para implementar en {{Ficha}}
--
local p = {}
local HtmlBuilder = require('Module:HtmlBuilder')
-- local CategorizacionAByAD = require('Módulo:Categorización de buenos y destacados')
local args
local root
local anchoImagen = '245px'
local function union(t1, t2)
-- devuelve la unión de los valores de dos tablas, como una secuencia
local vals = {}
for k, v in pairs(t1) do
vals[v] = true
end
for k, v in pairs(t2) do
vals[v] = true
end
local ret = {}
for k, v in pairs(vals) do
table.insert(ret, k)
end
return ret
end
local function depurarVacias(contenido)
if contenido and contenido ~= '' then
return contenido
end
end
local function getArgNums(prefix)
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
local function anadirfila(rowArgs)
if rowArgs.seccion then
root
.tag('tr')
.tag('th')
.attr('colspan', 3)
.addClass(rowArgs.clasefila)
.css('text-align', 'center')
.cssText(rowArgs.estiloseccion or args.estiloseccion)
.wikitext(rowArgs.seccion)
elseif rowArgs.datos then
local fila = root.tag('tr')
fila.addClass(rowArgs.clasefila)
if rowArgs.etiqueta then
fila
.tag('th')
.attr('scope', 'row')
.css('text-align', 'left')
.addClass(rowArgs.clasefila)
.cssText (rowArgs.estiloetiqueta or args.estiloetiqueta)
.wikitext(rowArgs.etiqueta)
.done()
end
local datosCelula = fila.tag('td')
if rowArgs.etiqueta then
datosCelula
.attr('colspan', 2)
else
datosCelula
.attr('colspan', 3)
.css('text-align', 'center')
end
datosCelula
.addClass(rowArgs.clase)
.cssText (rowArgs.estilodatos or args.estilodatos)
-- Se añade un salto de línea porque si no se hace así y por ejemplo en los
-- datos hay una lista con asteriscos en el primer elemento se muestra
-- un asterisco.
-- Se trata de un error que ya ocurre con tablas normales sin LUA. Por ejemplo
-- {|
-- | * elemento1
-- * elemento2
-- |}
-- El salto de línea ya se producía en la plantilla Ficha/fila
.wikitext('\n' .. rowArgs.datos)
--.newline()
end
end
local function hacerTitulo() -- Cabecera de la ficha
if not args.titulo then return end
local cabecera
if args.media == 'si' and args.clasetitulo then
cabecera = 'media ' .. args['clasetitulo']
elseif args.media == 'si' then
cabecera = 'media '
elseif args.tipocabecera then
cabecera = 'cabecera ' .. args.tipocabecera
elseif args.clasetitulo then
cabecera = 'cabecera ' .. args.clasetitulo
else
cabecera = 'cabecera '
end
root
.tag('tr')
.tag('th')
.attr('colspan', 3)
.addClass(cabecera)
.css('text-align', 'center')
.css('background-color', args.colorfondo or args.colorfondotitulo or 'transparent')
.css('color', args.colortexto or 'black')
.cssText(args.estilotitulo)
.wikitext(args.titulo)
end
local function hacerFilaArriba()
if not args.arriba and not args.titulo2 then return end
root
.tag('tr')
.tag('th')
.attr('colspan', 3)
.addClass(args.clasearribaor or args.clasetitulo2)
.css('text-align', 'center')
.css('font-size', '125%')
.css('font-weight', 'bold')
.cssText(args.estiloarriba or args.estilotitulo2)
.wikitext(args.arriba or args.titulo2)
end
local function hacerPieDeTabla()-- Pie de tabla, aparecerá abajo de la ficha
if not args.piedetabla then return end
root
.tag('tr')
.tag('td')
.attr('colspan', '3')
.addClass(args.clasepiedetabla)
.css('text-align', 'center')
.cssText(args.estilopiedetabla)
.wikitext(args.piedetabla)
end
local function hacerImagenInferior()-- Imagen que aparecerá en la parte inferior de la tabla
if not args.imageninferior then return end
local imageninferior
if args['tamañoimageninferior'] == nil or args['tamañoimageninferior'] == '' then
args['tamañoimageninferior'] = anchoImagen
end
if string.find(args.imageninferior, '[{[]') == nil then
imageninferior = ('[[Archivo:' .. args.imageninferior .. '|'.. args['tamañoimageninferior'] .. ']]' )
else
imageninferior = args.imageninferior
end
root
.tag('tr')
.tag('td')
.attr('colspan', '3')
.addClass(args.claseimageninferior)
.css('text-align', 'center')
.cssText(args.estiloimageninferior)
.newline()
.wikitext(imageninferior)
.tag('br', {selfClosing = true})
.done()
.tag('span')
.cssText(args.estilopieinferior)
.wikitext(args.pieinferior)
.newline()
end
local function hacerImagenSuperior()-- Imagen que aparecerá en la parte superior de la tabla
if not args.imagensuperior then return end
if args['tamañoimagensuperior'] == nil or args['tamañoimagensuperior'] == '' then
args['tamañoimagensuperior'] = anchoImagen
end
local imagensuperior
if string.find(args.imagensuperior, '[{[]') == nil then
imagensuperior = ('[[Archivo:' .. args.imagensuperior .. '|'.. args['tamañoimagensuperior'] .. ']]' )
else
imagensuperior = args.imagensuperior
end
root
.tag('tr')
.tag('td')
.attr('colspan', '3')
.addClass(args.claseimagensuperior)
.css('text-align', 'center')
.cssText(args.estiloimagensuperior)
.newline()
.wikitext(imagensuperior)
.tag('br', {selfClosing = true})
.done()
.tag('span')
.cssText(args.estilopiesuperior)
.wikitext(args.piesuperior)
.newline()
end
local function hacerSubtitulos()-- Subtítulos de la ficha
if args.subtitulo then
args.subtitulo1 = args.subtitulo
end
if args.clasesubtitulo then
args.clasesubtitulo1 = args.clasesubtitulo
end
local subtitulonumero = getArgNums('subtitulo')
for k, num in ipairs(subtitulonumero) do
anadirfila({
datos = args['subtitulo' .. num],
estilodatos = args['estilosubtitulo' .. num] or args.estilosubtitulo,
clase = args.clasesubtitulo,
clasefila = args['clasesubtitulo' .. num]
})
end
end
local function hacerfilassuperiores()-- filas encima de imagenes laterales
if args.datosup then
args.datosup1 = args.datosup
end
if args.clasedatosup then
args.clasedatosup1 = args.clasedatosup
end
if args.estilodatosup then
args.estilodatosup1 = args.estilodatosup
end
local datosupnumero = getArgNums('datosup')
for k, num in ipairs(datosupnumero) do
anadirfila({
datos = args['datosup' .. num],
estilodatos = args['estilodatosup' .. num],
clase = args.clasedatosup,
clasefila = args['clasedatosup' .. num]
})
end
end
local function hacerImageneslaterales()
-- Imagenes que apareceran arriba de forma geminada por ejemplo escudos y banderas
if args['tamañoimagenizquierda'] == "" or args['tamañoimagenizquierda'] == nil then
args['tamañoimagenizquierda'] = '100px'
end
if args['tamañoimagenderecha'] == "" or args['tamañoimagenderecha'] == nil then
args['tamañoimagenderecha'] = '100px'
end
if args.imagenderecha and args.imagenizquierda then
root
.tag('tr')
.tag('td')
--.attr('cellspacing', '0em')
--.attr('padding','0em')
.attr('colspan', '3')
.css('align', 'center')
.tag('table') -- tiene que ir dentro de una tabla para que las filas no lo deformen
.css('width', '100%')
.addClass('mergedrow')
.tag('tr')
.tag('td')
.css('text-align', 'center')
.css('background-color', 'transparent')
.addClass(args.claseimagenizquierda)
.css('align', 'center')-- Se alinea en el centro horizontal
.css('text-align', 'center') -- Se alinea en el centro horizontal
.css('vertical-align', 'middle')-- Se alinea en el centro vertical
.cssText(args.estiloimagenizquierda)
.wikitext('[[Archivo:' .. args.imagenizquierda .. '|' .. args['tamañoimagenizquierda'] .. ']]' )
.tag('br')
.tag('span')
.cssText(args.estilopieizquierdo)
.wikitext(args.pieizquierdo)
.tag('td')
.css('text-align', 'center')-- Se alinea en el centro horizontal
.css('align', 'center')-- Se alinea en el centro horizontal
.css('vertical-align', 'middle')-- Se alinea en el centro vertical
.css('background-color', 'transparent')
.addClass(args.claseimagenderecha)
.cssText(args.estiloimagenderecha)
.wikitext('[[Archivo:' .. args.imagenderecha .. '|' .. args['tamañoimagenderecha'] .. ']]' )
.tag('br')
.tag('span')
.cssText(args.estilopiederecho)
.wikitext(args.piederecho)
.newline()
elseif args.imagenderecha or args.imagenizquierda then
-- Si solo una de las dos, la imagen que aparezca estará en el centro
local imagenL
if args.imagenderecha ~= '' and args.imagenderecha ~= nil then
imagenL = 'imagenderecha'
elseif args.imagenizquierda ~= '' and args.imagenizquierda ~= nil then
imagenL = 'imagenizquierda'
end
local pieL
if args.imagenderecha then
pieL = 'piederecho'
elseif args.imagenizquierda then
pieL = 'pieizquierdo'
end
root
.tag('tr')
.tag('td')
.attr('colspan', '3')
.addClass(args['clase' .. imagenL])
.css('text-align', 'center')
.cssText(args['estilo' .. imagenL])
.newline()
.wikitext('[[Archivo:' .. args[imagenL] .. '|'.. args['tamaño'..imagenL] .. ']]' )
.tag('br')
.tag('span')
.cssText(args['estilo' .. pieL])
.wikitext(args[pieL])
end
end
local function hacerImagenes() -- Puede crear un número infinito de imágenes
if args.imagen then
args.imagen1 = args.imagen
end
if args['tamañoimagen'] then
args['tamañoimagen1'] = args['tamañoimagen']
end
if args.pie then
args.pie1 = args.pie
end
local imagenums = getArgNums('imagen')
for k, num in ipairs(imagenums) do
local pie = args['pie' .. num]
local flotante = args['imagenflotante' .. num] or false
if args['tamañoimagen'..num] == nil then
args['tamañoimagen'..num] = anchoImagen
end
local imagen
local cadenaBusqueda = mw.ustring.gsub(args['imagen'..num],'UNIQ','[') -- Para que no de problemas con ciertas plantillas
if mw.ustring.find(cadenaBusqueda, '[{[|]') == nil then -- Comprueba si hay [ o { para no añadir prefijo
imagen = ('[[Archivo:' .. args['imagen' .. num] .. '|'.. args['tamañoimagen' ..num] .. ']]' )
else
imagen = args['imagen'..num]
end
local datos = HtmlBuilder.create().wikitext(imagen)
if pie and not flotante then
datos
.tag('br', {selfClosing = true})
.done()
end
if pie then
datos
.tag('span')
.cssText(args.estilopie)
.wikitext(pie)
end
anadirfila({
datos = tostring(datos),
estilodatos = args.estiloimagen,
clase = args.claseimagen,
clasefila = args['claseimagen' .. num]
})
end
end
local function hacerFilas()
local filanum = union(getArgNums('seccion'), getArgNums('datos'))
table.sort(filanum)
for k, num in ipairs(filanum) do
anadirfila({
estilosubtitulo = depurarVacias(args['estilosubtitulo' .. num]),
seccion = depurarVacias(args['seccion' .. num]),
estiloseccion = depurarVacias(args['estilosección' .. num]),
etiqueta = depurarVacias(args['etiqueta' .. num]),
datos = depurarVacias(args['datos' .. num]),
estiloetiqueta = depurarVacias(args['estiloetiqueta' .. num]),
estilodatos = depurarVacias(args['estilodatos' .. num]),
clase = depurarVacias(args['clase' .. num]),
clasefila = depurarVacias(args['clasefila' .. num])
})
end
end
local function tieneDatosFila(fila)
-- Función que devuelve true si la fila o grupo de filas (en el caso de
-- secciones) tiene datos.
if fila.tipo == 'sección' or fila.tipo == 'seccion' then
for k, filaSeccion in ipairs(fila) do
if tieneDatosFila(filaSeccion) then
return true
end
end
elseif fila.tipo == 'sucesión' or fila.tipo == 'sucesion' then
if depurarVacias(fila[1]) or depurarVacias(fila['anterior']) or
depurarVacias(fila[3]) or depurarVacias(fila['siguiente']) then
return true
end
else
if depurarVacias(fila[2]) or depurarVacias(fila['datos']) then
return true
end
end
return false
end
local function anadirSucesion(argumentosSucesion)
local fila = root.tag('tr')
fila.css('font-size', '88%')
fila.css('text-align', 'center')
local celda
local width
width = '33%'
celda = fila.tag('td')
celda
.css('width', width)
.css('padding', '0.2em 0.1em 0.2em 0')
.css('vertical-align', 'middle')
if argumentosSucesion['estilo fuente'] then
celda
.tag('span')
.css('font-style', argumentosSucesion['estilo fuente'])
.wikitext(argumentosSucesion.anterior)
else
celda.wikitext(argumentosSucesion.anterior)
end
if argumentosSucesion['año anterior'] then
celda
.tag('br')
.wikitext('(' .. argumentosSucesion['año anterior'] .. ')')
end
celda = fila.tag('td')
celda
.css('width', width)
.css('padding', '0.2em 0.1em')
.css('vertical-align', 'middle')
.css('background-color', argumentosSucesion.color or '#E6E8FA')
celda
.tag('span')
.css('font-weight', 'bold')
.css('font-style', argumentosSucesion['estilo fuente'] or '')
.wikitext(argumentosSucesion.actual or args.titulo)
if argumentosSucesion['año'] then
celda
.tag('br')
.wikitext('(' .. argumentosSucesion['año'] .. ')')
end
celda = fila.tag('td')
celda
.css('width', width)
.css('padding', '0.2em 0 0.2em 0.1em')
.css('vertical-align', 'middle')
if argumentosSucesion['estilo fuente'] then
celda
.tag('span')
.css('font-style', argumentosSucesion['estilo fuente'])
.wikitext(argumentosSucesion.siguiente)
else
celda.wikitext(argumentosSucesion.siguiente)
end
if argumentosSucesion['año siguiente'] then
celda
.tag('br')
.wikitext('(' .. argumentosSucesion['año siguiente'] .. ')')
end
end
local function hacerFilasTabla(tabla)
-- Función que compone las filas de una tabla bien la ficha o bien una sección de la misma.
for k, fila in ipairs(tabla) do
if tieneDatosFila(fila) then
if fila.tipo == 'sección' or fila.tipo == 'seccion' then
-- Añadir el título de la sección (si está informado)
local tituloSeccion = depurarVacias(fila.titulo) or depurarVacias(fila['título'])
if tituloSeccion then
anadirfila({
estiloseccion = fila['estilotitulo'] or fila['estilotítulo'],
seccion = tituloSeccion
})
end
hacerFilasTabla(fila)
elseif fila.tipo == 'sección desplegable' or fila.tipo == 'seccion desplegable' then -- FALTA
elseif fila.tipo == 'sucesión'or fila.tipo == 'sucesion' then
anadirSucesion({
['anterior'] = depurarVacias(fila[1]) or depurarVacias(fila['anterior']),
['actual'] = depurarVacias(fila['actual']),
['siguiente'] = depurarVacias(fila[3]) or depurarVacias(fila['siguiente']),
['año anterior'] = depurarVacias(fila['año anterior']),
['año'] = depurarVacias(fila['año']),
['año siguiente'] = depurarVacias(fila['año siguiente']),
['estilo fuente'] = depurarVacias(fila['estilo fuente']),
['color'] = depurarVacias(fila['color'])
})
elseif fila.tipo == 'dos columnas' then -- FALTA
elseif fila.tipo == 'tres columnas' then -- FALTA
else -- Etiqueta + Datos o solo Datos
anadirfila({
etiqueta = depurarVacias(fila[1]) or depurarVacias(fila['etiqueta']),
datos = depurarVacias(fila[2]) or depurarVacias(fila['datos']),
estiloetiqueta = fila['estiloetiqueta'] or tabla['estiloetiqueta'],
estilodatos = fila['estilodatos'] or tabla['estilodatos'],
clase = fila['clase'] or tabla['clase'],
clasefila = fila['clasefila'] or tabla['clasefila']
})
end
end
end
end
local function hacerBarraDeNavegacion()-- Crea en la parte inferior un enlace a la plantilla que se de con nombre
if not args.nombre then return end
root
.tag('tr')
.tag('td')
.attr('colspan', '3')
.css('text-align', 'right')
.wikitext(mw.getCurrentFrame():expandTemplate({
title = 'navbar',
args = { args.nombre, mini = 1 }
}))
end
local function hacerBarraWikidata()-- Crea en la parte inferior un enlace al ítem de Wikidata
local enlacePagina = mw.title.getCurrentTitle().text
local etiquetaPagina = mw.ustring.gsub(enlacePagina,'%s%(.*%)','')
local entidad = args.entidad or mw.wikibase.getEntityObject()
local textoPie
if (args.child == 'si' or args.integrada == 'sí' or args.wikidata == 'no') or (mw.title.getCurrentTitle().namespace ~= 0 and mw.title.getCurrentTitle().namespace ~= 104 and not args.entidad) then
textoPie = ''
elseif entidad ~= "" and entidad ~= nil then
textoPie = '<small>[<span class= plainlinks>[[d:' .. tostring(entidad) .. '|editar datos en Wikidata]]</span>]</small>'
--if args.entidad and (mw.title.getCurrentTitle().namespace == 0 or mw.title.getCurrentTitle().namespace == 104) then
-- textoPie = textoPie .. '[[Categoría:Wikipedia:Artículos con fichas que utilizan acceso arbitrario]]'
--end
else
textoPie = "<small>'''Página no enlazada a [[w:Wikidata|Wikidata]]'''\n"..
"* Si no existe en otras Wikisource: [<span class=plainlinks>[//www.wikidata.org/w/index.php?title=Special:NewItem&site=eswikisource&page="..mw.uri.encode(enlacePagina, "WIKI") .."&label="..mw.uri.encode(etiquetaPagina, "WIKI") .." crea nuevo ítem]]</span>\n"..
"* Si existe en otras Wikisource: [<span class=plainlinks>[[:d:Special:ItemByTitle|busca ítem para enlazar]]</span>]\n"..
"y añade el enlace en español: ".. enlacePagina ..".</small>"
end
if textoPie ~= '' then
root
.tag('tr')
.tag('td')
.attr('colspan', '3')
.css('text-align', 'left')
.wikitext(textoPie)
end
end
local function hacerCategoriasSeguimiento()
--if args.decat ~= 'si' and #(getArgNums('datos')) == 0 and not args[1] and mw.title.getCurrentTitle().namespace == 0 then
-- root.wikitext('[[Categoría:Wikipedia:Artículos que usan ficha sin datos en filas]]')
--end
--if CategorizacionAByAD.hasAnyBadge() == '1' then
-- root.wikitext(CategorizacionAByAD.badgesCategories())
--end
end
local function _infobox()
if args.child ~= 'si' and args.integrada ~= 'sí' then
root = HtmlBuilder.create('table')
root -- Estilo de toda la ficha
.addClass('plainlinks')
.addClass(args.clase)
.cssText('clear:both;Float:right;width:30%;margin: 0px 5px 5px 5px;font-size:95%; font-size:95%; border:solid 1px #6688AA;padding:5px;background:#F9FBFB') -- Lo mismo que la plantilla:Ficha
.cssText(args.estilo)
--if args.estilo and (mw.title.getCurrentTitle().namespace == 10) then -- Para que sólo lo añada en el espacio de nombres plantilla
-- root.wikitext('[[Categoría:Wikipedia:Fichas con el parámetro estilo]]')
--end
hacerTitulo()
hacerFilaArriba()
else
root = HtmlBuilder.create()
if args.titulo then
root.wikitext("'''" .. args.titulo .. "'''")
end
end
hacerSubtitulos()
hacerImagenSuperior()
hacerImageneslaterales()
hacerfilassuperiores()
hacerImagenes()
if not args[1] then
hacerFilas()
else
hacerFilasTabla(args)
end
hacerImagenInferior()
hacerPieDeTabla()
hacerBarraDeNavegacion()
hacerBarraWikidata()
hacerCategoriasSeguimiento()
return tostring(root)
end
local function touchParameters(prefixTable, origArgs, step)
-- Analiza los parámetros con los prefijos dados, en orden por lotes lotes y con el tamaño especificado a step.
-- Esto es para evitar referencias etc aparezca en el orden equivocado.
if type(prefixTable) ~= 'table' or type(origArgs) ~= 'table' then
error("Entrada no válida detectada para la función touchParameters. Ambos parámetros deben ser tablas.", 2)
end
if step and type(step) ~= 'number' then
error("Detectado valor no numérico en step.", 2)
end
step = step or 20 -- Si no se le da el tamaño a step, el valor predeterminado es 20.
local temp
local a = 1 -- variable de contador.
local moreArgumentsExist = true
for j,v in ipairs(prefixTable) do
if type(v) ~= "string" then
error("Detectado un valor que no es string en el prefijo de la tabla por la función touchParameters.", 2)
end
temp = origArgs[v]
end
while moreArgumentsExist == true do
moreArgumentsExist = false
for i = a, a + step - 1 do
for j,v in ipairs(prefixTable) do
temp = origArgs[v .. tostring(i)]
if temp then
moreArgumentsExist = true
end
end
end
a = a + step
end
end
function p.infobox(frame)
local origArgs
-- Si se llama a través de #invoke, utilice los argumentos pasados a la plantilla de invocación.
-- De lo contrario, para fines de prueba, asume args que se pasan directamente como parámetros.
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
-- Analizar los parámetros de datos en el mismo orden que la plantilla {{ficha}} lo hace, por lo que
-- referencias etc. se mostrarán en los lugares previstos.
local temp
temp = origArgs.titulo
temp = origArgs.arriba
touchParameters({'subtitulo'}, origArgs, 5)
touchParameters({'imagen', 'pie'}, origArgs, 5)
touchParameters({'seccion', 'etiqueta', 'datos'}, origArgs, 20)
temp = origArgs.piedetabla
-- El analizador de funciones considera que una cadena vacía es falsa, por lo que para preservar el anterior
-- comportamiento de {{Ficha}}, debe cambiar los argumentos vacíos a cero, por lo que Lua los considerará
-- que son falsos también (excepto parámetros 'title cursiva', que especifica un comportamiento diferente
-- dependiendo de si está ausente o vacío)
args = {}
for k, v in pairs(origArgs) do
if v ~= '' then
args[k] = v
end
end
return _infobox()
end
return p
lqagy4pfsmtjnst6okl4hofvtv6swdf
Módulo:Demo/doc
828
245800
1653821
982175
2026-05-14T15:16:26Z
Ignacio Rodríguez
3603
1653821
wikitext
text/x-wiki
{{Subpágina de documentación}}
=== Uso ===
Implementa {{ep|demo}}
== Véase también ==
* [[Module:Zona de pruebas]]: Para practicar/experimentar/probar módulos
<includeonly>
<!-- Coloca las categorías de la plantilla a continuación y los interwikis en Wikidata -->
[[Categoría:Wikisource:Módulos]]
</includeonly>
anoj1eplzo2onw7un4m108824mm3zz2
Módulo:Imprenta
828
250643
1653833
1653761
2026-05-14T15:54:13Z
Ignacio Rodríguez
3603
srict
1653833
Scribunto
text/plain
local p = {}
local Wikidata = require('Módulo:Wikidata')
local Entidad = mw.wikibase.getEntityObject() or '' -- Tabla con los datos en Wikidata
local Enlaces = require('Módulo:Enlaces')
-- Función que devuelve la lista de los valores de una propiedad en Wikidata formateados
local function propiedad(idPropiedad,opciones)
if Entidad and Entidad.claims then --and Entidad.claims[idPropiedad] then
if not opciones then
opciones = {}
end
opciones['propiedad'] = idPropiedad
local valorPropiedad = Wikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])
if not valorPropiedad or valorPropiedad == '' then
return ''
end
return valorPropiedad
else return ''
end
end
--parámetros reconocidos. 1 = vigente, 0 = obsoleto
local categorias = ''
local params = {['nombre']=1,['dirección']=1,['más info']=1,
['wikipedia'] =1 , ['commons'] =1 , ['commonscat'] =1 , ['wikiquote'] =1 ,
['wikcionario'] =1 , ['wikilibros'] =1 , ['wikiversidad'] =1,
['wikispecies'] =1 , ['meta'] =1 , ['wikidata'] =1}
local altparams= {['direccion']='dirección', ['mas info']='más info'
}
local function errorMessage(text)
-- Función que entrega un mensaje de error formateado como tal
local html = mw.html.create('div')
html:addClass('error')
:wikitext(text)
categorias=categorias..'[[Categoría:Wikisource:Páginas con errores en la plantilla Imprenta]]'
return tostring(html)
end
function p.encabe( frame )
local argus = {}
local titulo = mw.title.getCurrentTitle()
for k,v in pairs(frame:getParent().args) do -- crea una tabla con los parámetros incluídos en la plantilla, y elimina parámetros vacíos
if v ~= '' and type(k) ~= 'number' then
argus[mw.ustring.lower(k)] = v -- todos los parámetros en minúsculas por defecto:
end
end
-- HTML
local html = mw.html.create()
-- corregir parámetros con nombres alternativos
for k,v in pairs(altparams) do
if argus[k] and not argus[v] then
argus[v] = argus[k]
elseif argus[k] and argus[v] then
html:wikitext(errorMessage('Error: los parámetros '..k..' y '..v..' son redundantes.'))
categorias=categorias..'[[Categoría:Wikisource:Páginas que usan parámetros redundantes en la plantilla Imprenta]]'
end
end
local divgrande = html:tag('div'):attr('id','headertemplate'):addClass('noprint ws-noexport'):cssText('text-align: center; padding: 1em; background-color:#F1F1DE; color: black; overflow:auto; border-radius:0.7em; box-shadow:0.2em 0.3em 0.2em #B7B7B7; display:table;width:95%') -- div principal que contiene al resto
local anterior = divgrande:tag('div'):attr('id','headerprevious'):cssText('padding:0;display:table-cell;vertical-align:middle;width:16%')
--if argus['anterior'] and argus['anterior'] ~= '' then
local anteriorspan = anterior:tag('span'):cssText('float: left; display: block;font-size:smaller')
anteriorspan:tag('span'):cssText(';margin-right: 0.5em; position: relative; top: 1.5px'):wikitext('← ')
anteriorspan:wikitext(' '..'[[:Categoría:Imprentas y editoriales|Imprentas y editoriales]]')
--if argus['enlaces'] and mw.ustring.lower(argus['enlaces']) == 'no' then
-- anteriorspan:cssText('display:none')
--end
--end
local medio = divgrande:tag('div'):cssText('width:68%;display:table-cell;vertical-align:middle;')
local nombre = frame:preprocess("{{PAGENAME}}")
if argus['nombre'] then
medio:wikitext("'''''"..argus['nombre'].."'''''")
else
medio:wikitext("'''''"..nombre.."'''''")
end
medio:tag('br')
if argus['dirección'] ~= nil and argus['dirección']~= '' then
medio:wikitext("''"..argus['dirección'].."''")
if argus['más info'] then
medio:tag('br')
medio:tag('span'):cssText('font-size: 83%;'):wikitext(argus['más info'])
end
elseif propiedad('p159') ~= '' then
medio:wikitext("''"..propiedad('p159',{['uno']='sí'}).."''")
if argus['más info'] then
medio:tag('br')
medio:tag('span'):cssText('font-size: 83%;'):wikitext(argus['más info'])
end
end
local proximo = divgrande:tag('div'):attr('id','headernext'):cssText('padding:0;display:table-cell;vertical-align:middle;width:16%')
local proximospan = proximo:tag('span'):cssText('float: right; display: block;font-size:smaller')
if propiedad('p154') ~= '' then --P154 = logotipo
local logotipo = '[[File:'..propiedad('p154',{['uno']='sí'})..'|100px]]'
proximospan:wikitext(logotipo)
end
if argus['próximo'] and argus['próximo']~= '' then
proximospan:wikitext(' '..argus['próximo'])
proximospan:tag('span'):cssText('margin-left: 0.5em; position: relative; top: 1.5px'):wikitext(' →')
if argus['enlaces'] and mw.ustring.lower(argus['enlaces']) == 'no' then
proximospan:cssText('display:none')
end
end
--enlaces pequeños en la parte inferior
local inferior = medio:tag('div'):addClass('noprint plainlinks'):cssText('clear: both; padding: 0.5em; text-align: center; margin:0 auto; font-size: 80%')
--enlaces parte inferior
local listaenlaces = Enlaces.all(argus)
local textoenlaces = Enlaces.formattedlinks(listaenlaces)
inferior:wikitext(textoenlaces)
if argus['notas'] and argus['notas'] ~= '' then
html:tag('div'):cssText('font-size:90%;width:95%;margin:auto'):wikitext("'''Nota:''' "..argus['notas']):tag('hr')
end
--categorías automáticas
categorias = categorias..'[[Categoría:Imprentas y editoriales]]'
for k,v in pairs(argus) do
if params[k] or altparams[k] then
if params[k] == 0 then
categorias = categorias..'[[Categoría:Wikisource:Páginas que usan parámetros obsoletos en la plantilla Imprenta]]' --añade categoría de seguimiento a parámetros obsoletos (declarados arriba)
end
else
html:wikitext(errorMessage('Error: parámetro '..k..' no reconocido'))
categorias=categorias..'[[Categoría:Wikisource:Páginas que usan parámetros no reconocidos en la plantilla Imprenta]]'
end
end
if titulo.namespace ~= 100 then --solo categorías en el espacio portal
categorias = ''
end
divgrande:wikitext(categorias)
return tostring(html)
end
return p
sbm32pjp2d3ubm37phwx8mt6qxmpx3k
Módulo:Categoría de autor
828
256271
1653835
1587833
2026-05-14T15:57:55Z
Ignacio Rodríguez
3603
local
1653835
Scribunto
text/plain
local p = {}
local prefijos ={ 'Obras', 'Documentos', 'Traducciones', 'Poesías', 'Discursos',
'Sonetos', 'Cuentos', 'Novelas', 'Epístolas', 'Ensayos', 'Artículos', 'Teatro', 'Fábulas',
'Canciones' , 'Odas', 'Romances', 'Villancicos', 'Entremeses', 'Autos Sacramentales',
'Jácaras', 'Mojigangas', 'Décimas' , 'Tangos', 'Decretos', 'Ilustraciones' ,
'Biografías', 'Bulas', 'Encíclicas', 'Tragedias', 'Comedias', 'Idilios', 'Crónicas', 'Zarzuelas', 'Sainetes' }
local Enlaces = require('Módulo:Enlaces')
function p.cat( frame )
local argus = {}
for k,v in pairs(frame.args) do
argus[k] = v
end
for k,v in pairs(frame:getParent().args) do -- crea una tabla con los parámetros incluídos en la plantilla, y elimina parámetros vacíos
argus[k] = v
end
local titulo = mw.title.getCurrentTitle().baseText
local categoria = ''
local autor=''
local tipo
local html = mw.html.create() -- cuerpo principal de la plantilla
for i,cadena in ipairs(prefijos) do
if mw.ustring.find(titulo,cadena) then
tipo = cadena
categoria='[[Categoría:'.. cadena ..' por autor]]'
autor=mw.ustring.sub(titulo,mw.ustring.len(cadena) + 4) -- mas 4 por el ' de '
break
end
end
if tipo=='Biografías' then
autor=mw.ustring.sub(titulo,mw.ustring.len(tipo) + 14) -- mas 14 por el ' escritas por '
end
autor = argus[2] or autor --posibilidad de autor explícito cuando es diferente del nombre de la categoría
if not(tipo=='Documentos' or tipo=='Obras' or tipo=='Decretos' or tipo=='Bulas' or tipo=='Encíclicas' or tipo=='Discursos') then
categoria=categoria .. '[[Categoría:Obras de ' .. autor ..'|'..mw.title.getCurrentTitle().text.. ']]'
end
if tipo=='Epístolas' or tipo=='Decretos' or tipo=='Bulas' or tipo=='Encíclicas' or tipo=='Discursos' then
if mw.title.new( 'Documentos de ' .. autor, 'Categoría' ).exists == true then
categoria=categoria .. '[[Categoría:Documentos de ' .. autor ..'|'..mw.title.getCurrentTitle().text.. ']]'
end
end
local div = html:tag('div'):addClass('divgrande')
local celda1= div:tag('div'):addClass('celda1')
local celda2= div:tag('div'):addClass('celda2')
celda1:wikitext('\'\'\'[[Autor:'..autor..'|◄]] Autor: [[Autor:'..autor..'|'..autor..']]\'\'\'')
html:wikitext(categoria)
if argus[1]~=nil then
html:wikitext(frame:preprocess('{{DEFAULTSORT:' .. argus[1] .. '}}'))
else
html:wikitext(frame:preprocess('{{DEFAULTSORT:' .. autor .. '}}'))
end
-- ACÁ PRUEBAS CON ENLACES --
local QID = mw.wikibase.getEntityIdForTitle( 'Autor:'..autor )
argus['wikidata'] = QID
local listaenlaces = Enlaces.all(argus)
celda2:wikitext(Enlaces.formattedlinks(listaenlaces))
return tostring(html)
end
return p
9xn76okyd17a98smfsw3hc12eo1476x
Módulo:Categoría de autor/doc
828
256302
1653834
1013597
2026-05-14T15:56:38Z
Ignacio Rodríguez
3603
fuera de desarrollo hace 7 años, de amplio uso como está
1653834
wikitext
text/x-wiki
{{Subpágina de documentación}}
=== Uso ===
En plantilla {{tl|Categoría de autor}}
<includeonly>
<!-- Coloca las categorías de la plantilla a continuación y los interwikis en Wikidata -->
[[Categoría:Wikisource:Módulos]]
</includeonly>
ach36409lf8imonjld9ryd236kvjmc6
Módulo:Línea
828
258961
1653839
1540308
2026-05-14T16:06:32Z
Ignacio Rodríguez
3603
local
1653839
Scribunto
text/plain
-- Modulo para plantillas de líneas
local p = {}
local opciones = {
['ac'] = 'Arrow Cross',
['al'] = 'Arrow Left',
['ar'] = 'Arrow Right',
['atl'] = 'Arrow Thin Left',
['atr'] = 'Arrow Thin Right',
['bcrb'] = 'Black Crescent bottom',
['bcrl'] = 'Black Crescent left',
['bcrr'] = 'Black Crescent right',
['bcrt'] = 'Black Crescent top',
['c'] = 'Circle',
['cll'] = 'Curl Left',
['clr'] = 'Curl Right',
['co'] = 'Circle open',
['col'] = 'Colon',
['crb'] = 'Crescent bottom',
['crl'] = 'Crescent left',
['crr'] = 'Crescent right',
['crt'] = 'Crescent top',
['d'] = 'Diamond',
['do'] = 'Diamond open',
['el'] = 'Ellipse',
['elo'] = 'Ellipse open',
['fc'] = 'Flare Centre',
['fct'] = 'Flare Centre 5px',
['fcw'] = 'Flare Centre White',
['fl'] = 'Flare Left',
['fr'] = 'Flare Right',
['fy1'] = 'Fancy1',
['fy2'] = 'Fancy2',
['fy3'] = 'Fancy3',
['fy4'] = 'Fancy4',
['lo'] = 'loops',
['lz'] = 'Lozenge',
['lzt'] = 'Lozenge 5px',
['qc'] = 'Quatrefoil in circle',
['r'] = 'Rectangle',
['s'] = 'Square',
['so'] = 'Square open',
['sp'] = 'Span',
['str'] = 'Star',
['tl'] = 'Tear Left',
['tr'] = 'Tear Right',
['ltr'] = 'Lefttriangle',
['rtr'] = 'Righttriangle',
['w'] = 'Wave',
}
local sugerencias= {
["sp"] = "5, 10, 20, 40, 50, 100",
["w"] = "1 a 40",
["s"] = "5 10",
["so"] = "5 10",
["d"] = "4, 6, 10",
["do"] = "7",
["c"] = "6",
["co"] = "6, 10, 20",
["el"] = "15",
["fl"] = "11,12,15,30,40",
["fr"] = "11,12,15,30,40",
["fc"] = "14, 22, 140",
["tl"] = "20, 40",
["tr"] = "20, 40",
["cll"] = "10",
["clr"] = "10",
["fy1"] = "40",
["fy2"] = "100",
["fy3"] = "40",
["str"] = "6, 10"
}
local altparams= {
['align']='alinear',
['a']='alinear',
['width']='ancho',
['e']='espacio',
['height']='altura',
['h']='altura',
['style']='estilo',
['class']='clase'
}
function p.adornada( frame )
local argus = {}
for k,v in pairs(frame.args) do
argus[k] = v
end
for k,v in pairs(frame:getParent().args) do -- crea una tabla con los parámetros incluídos en la plantilla, y elimina parámetros vacíos
argus[k] = v
end
for k,v in pairs(altparams) do --parámetros con nobmres alternativos.
if argus[k] and not argus[v] then
argus[v] = argus[k]
end
end
local html = mw.html.create() -- cuerpo principal de la plantilla
local div=html:tag('div'):addClass('adornada')
local i=1
while argus[i]~= nil and argus[i+1]~=nil do
-- si no lo reconocemos, pasarlo idéntico nomás
if not opciones[argus[i]] then
opciones[argus[i]] = argus[i]
end
local filename = "Rule Segment - "..opciones[argus[i]].." - " ..argus[i+1].."px.svg"
local file = mw.title.new(filename, 'File')
if file.file.exists then
div:wikitext("[[Archivo:"..filename .."|middle|alt=|link=]]")
else
div:wikitext("<small>[ "..filename.." no existe. ]</small>")
if sugerencias[argus[i]] then
div:wikitext("<small>{'''Sugerencias''': "..sugerencias[argus[i]]..". }</small>")
end
end
i=i+2
end
if argus['espacio']~=nil then
div:css('margin-top',argus['espacio'])
div:css('margin-bottom',argus['espacio'])
end
return tostring(html)
end
function p.comun( frame )
local argus = {}
for k,v in pairs(frame.args) do
argus[k] = v
end
for k,v in pairs(frame:getParent().args) do -- crea una tabla con los parámetros incluídos en la plantilla, y elimina parámetros vacíos
argus[k] = v
end
for k,v in pairs(altparams) do --parámetros con nobmres alternativos.
if argus[k] and not argus[v] then
argus[v] = argus[k]
end
end
local html = mw.html.create() -- cuerpo principal de la plantilla
local div=html:tag('div')
if argus['alinear']~=nil then
if argus['alinear']=='left' or argus['alinear']=='izquierda' then
div:css('margin','0em auto 0em 0em')
elseif argus['alinear']=='right' or argus['alinear']=='derecha' then
div:css('margin','0em 0em 0em auto')
else
div:css('margin','0em auto 0em auto')
end
else
div:css('margin','0em auto 0em auto')
end
if argus['ancho']~=nil or argus[1]~=nil then
div:css('width',argus['ancho'] or argus[1])
end
local clase='comun'
if argus['clase']~=nil then
clase=argus['clase']
end
local hr =div:tag('hr'):addClass(clase)
if argus['espacio']~=nil then
hr:css('margin-top',argus['espacio'])
hr:css('margin-bottom',argus['espacio'])
end
if argus['altura']~=nil then
hr:css('height',argus['altura'])
end
local color
if argus['color'] then
if mw.ustring.sub( argus['color'], 0, 1 ) == '#' then
color = argus['color']
else
color = frame:expandTemplate{ title = 'RGB', args = { argus['color'] } }
end
color = mw.ustring.gsub(color, '#', '#')
hr:css('background-color',color)
end
if argus['estilo'] then --estilo personalizado, al final para poder sobreescribir todo
hr:cssText(argus['estilo'])
end
return tostring(html)
end
return p
mjxg02vle758ct8ywpt9n81wqp6z2ma
Plantilla:Barra
10
271857
1653825
1135861
2026-05-14T15:29:42Z
Ignacio Rodríguez
3603
saltos de línea
1653825
wikitext
text/x-wiki
<templatestyles src="Barra/estilo.css" /><!--
Outer span defines the strike-though.
If CSS is not available, this will disappear.
--><span class="__bar"><!--
inner span holds the em-dashes, which are transparent.
If CSS is not available, these will appear again.
--><span class="__bar_inner">{{loop|{{{1|6}}}|—}}</span><!--
--></span><noinclude>
{{documentación}}
<noinclude>
orexl67avlftdn43s1pqm9299ntyw7l
Módulo:Enlaces
828
272116
1653811
1653772
2026-05-14T14:05:35Z
Ignacio Rodríguez
3603
calmar dioses de Lua, funciones y variables no usadas
1653811
Scribunto
text/plain
--The sister project linking module
local p = {}
local function getsize(tab)
local count = 0
for _,_ in pairs(tab) do
count = count + 1
end
return count
end
local aliases = {
['commons'] = 'commonswiki',
['commonscat'] = 'commonswiki',
['wikilibros'] = 'eswikibooks',
['wikibooks'] = 'eswikibooks',
['wikipedia'] = 'eswiki',
['wikiquote'] = 'eswikiquote',
['wikicitas'] = 'eswikiquote',
['wikispecies'] = 'specieswiki',
['wikiespecies'] = 'specieswiki',
['wikiversity'] = 'eswikiversity',
['wikiversidad'] = 'eswikiversity',
['desambiguación'] = 'desambiguacion',
['wiktionary'] = 'eswiktionary',
['wikcionario'] = 'eswiktionary',
['wikiviajes'] = 'eswikivoyage',
['wikivoyage'] = 'eswikivoyage'
}
p.relevants = { --{['name']='',['image']='',['text']='',['prefix']='',}
['commonswiki'] = { ['name'] = 'Wikimedia Commons',
['image'] = 'Commons-logo.svg|link=c:',
['text'] = 'multimedia',
['prefix'] = 'c:',
['title'] = '',
},
['eswikibooks'] = { ['name'] = 'Wikibooks',
['image'] = 'Wikibooks-logo.svg|link=wikibooks:',
['text'] = 'libro',
['prefix'] = 'wikibooks:es:',
['title'] = '',},
['eswiki'] = { ['name'] = 'Wikipedia',
['image'] = 'Wikipedia-logo-simple.png|link=w:',
['text'] = 'artículo enciclopédico',
['prefix'] = 'w:es:',
['title'] = '',},
['eswiktionary'] = { ['name'] = 'Wiktionary',
['image'] = 'Wiktionary-logo.svg|link=wikt:',
['text'] = 'diccionario',
['prefix'] = 'wikt:es:',
['title'] = '',},
['eswikiquote'] = { ['name'] = 'Wikiquote',
['image'] = 'Wikiquote-logo.svg|link=wikiquote:',
['text'] = 'citas',
['prefix'] = 'wikiquote:es:',
['title'] = '',},
['specieswiki'] = { ['name'] = 'Wikispecies',
['image'] = 'Wikispecies-logo.svg|link=species:',
['text'] = 'taxonomía',
['prefix'] = 'species:',
['title'] = '',},
['eswikiversity'] = { ['name'] = 'Wikiversity',
['image'] = 'Wikiversity-logo.svg|link=wikiversity:',
['text'] = 'clase',
['prefix'] = 'wikiversity:es:',
['title'] = '',},
['eswikivoyage'] = { ['name'] = 'Wikivoyage',
['image'] = 'Wikivoyage-logo.svg|link=Wikivoyage:',
['text'] = 'clase',
['prefix'] = 'wikivoyage:es:',
['title'] = '',},
['wikidata'] = { ['name'] = 'Wikidata',
['image'] = 'Wikidata-logo.svg|link=d:',
['text'] = 'metadatos',
['prefix'] = 'd:',
['title'] = '',},
['desambiguacion']= { ['name'] = 'Desambiguación',
['image'] = 'Disambiguation.svg',
['text'] = 'títulos similares',
['prefix'] = '',
['title'] = '',},
}
-- toma los enlaces directamente desde los parámetros de la plantilla. Ejemplo, |Wikipedia= en {{encabezado}}
function p.getlinksfromargs( args, relevantsList )
local lang = mw.language.getContentLanguage()
local output = relevantsList
for key, value in pairs( args ) do
if value ~='' then
key = lang:lcfirst(tostring(key))
if (aliases[key]) then
key=aliases[key] --si hay alias, usarlo
end
if (output[key]) then
output[key]["title"] = value
end
end
end
return output
end
function p.getlinksfromwikidata(relevantsList, QID )
local output = relevantsList
local Entidad = mw.wikibase.getEntityObject(QID)
if Entidad then
output["wikidata"]["title"]=Entidad.id
if Entidad["sitelinks"] and getsize(Entidad["sitelinks"]) > 1 then
for k, v in pairs(Entidad["sitelinks"]) do
if output[k] then
output[k]["title"]=v["title"]
end
end
elseif Entidad["claims"] and Entidad["claims"]["P629"] then
-- edición de...
local P629 = Entidad["claims"]["P629"][1]["mainsnak"]["datavalue"]["value"]["id"]
local newEntidad = mw.wikibase.getEntityObject(P629)
newEntidad["sitelinks"] = newEntidad["sitelinks"] or {} --inicializar en caso de obras originales sin sitelinks
for k, v in pairs(newEntidad["sitelinks"]) do
if output[k] then
output[k]["title"]=v["title"]
end
end
end
-- categoría en commons
if output['commonswiki']['title'] == '' and Entidad["claims"] and Entidad["claims"]["P373"] then
output['commonswiki']['title'] = 'Category:'..Entidad["claims"]["P373"][1]["mainsnak"]["datavalue"]["value"]
end
end
return output
end
--todos los enlaces
function p.all(args)
local QID
if args.wikidata and args.wikidata ~= '' then
QID = args.wikidata
else
QID = mw.wikibase.getEntityIdForCurrentPage()
end
-- Wikidata y luego args, en ese orden
local output = p.getlinksfromwikidata(p.relevants, QID)
output = p.getlinksfromargs( args, output )
return output
end
function p.formattedlinks (relevantList)
local linklist = {}
for k, v in pairs(relevantList) do
if v.title ~= '' then
local link = '<span style="white-space:nowrap;">'
if v.image then
link = link..'[[File:'.. v.image ..'|16px]] '
end
link = link..'[[' .. v.prefix .. v.title .. '|' .. v.text .. ']]</span>'
table.insert(linklist, link)
end
end
local noofwords = table.maxn( linklist )
local output
if (noofwords == 0) then
output = ''
elseif ( noofwords == 1 ) then
output = linklist[1] .. '.'
else
output = table.concat( linklist, ' ', 1, noofwords ) .. '.'
end
return ( output )
end
--funcion para {{biocitas}}
function p.formattedbiocitas (relevantList, order)
local linklist = {}
for _, x in pairs(order) do
local v = relevantList[x]
if v and v["title"] ~= '' then
local link = '<div class="bc-enlace">[[File:'..v['image']..
'|16px]]<span style=\'display:inline-block; width:.5em;\'> </span>[[' ..
v['prefix'] .. v['title'] .. '|' .. v['text'] .. ']]</div>'
table.insert(linklist, link)
end
end
local noofwords = table.maxn( linklist )
local output
if (noofwords == 0) then
output = ''
else
output = table.concat( linklist, '\n', 1, noofwords )
end
return ( output )
end
-- The main function to run the module
function p.main( frame )
local links = p.all(frame)
return p.formattedlinks(links)
end
return p
r1y4dm78bw31fb5klff90osnepokt4m
Índice:Anales de la Sociedad Científica Argentina - Tomo 23.djvu
104
279049
1653865
1595701
2026-05-15T01:55:54Z
Ignacio Rodríguez
3603
1653865
proofread-index
text/x-wiki
{{:MediaWiki:Proofreadpage_index_template
|Titulo=
|Subtitulo=
|Volumen=[[Anales de la Sociedad Científica Argentina/Tomo 23|Tomo 23]]
|Autor=
|Editor=
|Traductor=
|Prologuista=
|Imprenta=
|Editorial=
|Ilustrador=
|Ano=
|Lugar=
|derechos=Argentina
|Fuente={{IA|analesdelasocied23soci}}
|Imagen=7
|Progreso=C
|Paginas=<pagelist
1="Cover"
2to6="–"
7="Title"
8=4
293to297="–"
298="Cover"
/>
|Notas={{Página:Anales de la Sociedad Científica Argentina - Tomo 23.djvu/293}}
|Wikidata=Q124988361
|Serie={{ASCA volúmenes}}
|Header=
|Footer=
|Modernizacion=default
|Dict=
|ultima-muerte=
}}
e118jfhfs6jh53vgbibcpmzelqt4upw
Módulo:Proofreadpage index template
828
350732
1653864
1651890
2026-05-15T01:55:10Z
Ignacio Rodríguez
3603
reajuste de limpieza de código y corrección de alguno que otro errorcillo
1653864
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Adaptado de https://en.wikisource.org/wiki/Module:Proofreadpage_index_template
-- y https://ca.wikisource.org/wiki/Module:Proofreadpage_index_template
-- This is a module to implement logic for [[MediaWiki:Proofreadpage index template]]
--------------------------------------------------------------------------------
-- Ejemplo (función p.fields):
-- {{#invoke:Proofreadpage index template|fields|NomPag=El Robinson suizo (1864).pdf|NomPagE=El_Robinson_suizo_(1864).pdf|Paginas=tabla|Wikidata=Q107297266}}
--------------------------------------------------------------------------------
local Wikidata = require('Module:Wikidata')
local getArgs = require('Module:Arguments').getArgs
local p = {} --p stands for package
-- mapping of field ID to field properties
local headings = {
title = { txt = 'Título', index='Titulo', p='P1476', list=false},
subtitle = { txt = 'Subtítulo', index='Subtitulo', p='P1680', list=false},
serie = { txt = 'Serie o colección', index='Serie', p='P361', list=true}, --P361:"forma parte de"
volume = { txt = 'Volumen', index='Volumen', p='P478', list=false},
author = { txt = 'Autor [[Archivo:Commons-emblem-notice.svg|20px|alt=|frameless|link=Ayuda:Autores]]',
index = 'Autor', p='P50', list=true },
editor = { txt = 'Editor', index='Editor', p='P98', list=true},
illustrator = { txt = 'Ilustrador', index='Ilustrador', p='P110', list=true},
translator = { txt = 'Traductor', index='Traductor', p='P655', list=true},
introducer = { txt = 'Prologuista', index='Prologuista', p='P2679', list=true},
year = { txt = 'Año', index='Ano', p='P577', fmt=" j xg Y", list=false},
editorial = { txt = 'Editorial [[Archivo:Commons-emblem-notice.svg|20px|alt=|frameless|link=Portal:Imprentas_y_editoriales]]',
index='Editorial', p='P123', list=true},
printer = { txt = 'Imprenta [[Archivo:Commons-emblem-notice.svg|20px|alt=|frameless|link=Portal:Imprentas_y_editoriales]]',
index='Imprenta', p='P872', list=true},
place = { txt = 'Lugar', index='Lugar', p='P291', fmt='label', list=true},
country = { txt = 'País [[Archivo:PD-icon.svg|15px|alt=|frameless|link=Wikisource:Derechos_de_autor]]',
index = 'derechos', fmt='label'}, --derechos (P495) pasar a Wikidata realmente?
editionof = { txt = 'Obra', index='Obra', p='P629', list=true},
source = { txt = 'Fuente [[Archivo:Commons-emblem-notice.svg|20px|alt=|frameless|link=Wikisource:Recursos_libres]]',
index= 'Fuente'},
modernizar = { txt = 'Modernización de la ortografía [[Archivo:Commons-emblem-notice.svg|20px|alt=|frameless|link=Wikisource:Modernización_de_textos]]',
index='Modernizacion'},
quality = { txt = 'Progreso', index='Progreso'},
wikidata = { txt = 'Metadatos', index='Wikidata'},
}
local ciudad_a_pais = {
-- Argentina
["Buenos Aires"] = "Argentina",
["La Plata"] = "Argentina",
["Santa Fe"] = "Argentina",
-- Chile
["La Serena"] = "Chile",
["Santiago de Chile"] = "Chile",
["Valparaíso"] = "Chile",
["Concepción"] = "Chile",
-- Colombia
["Bogotá"] = "Colombia",
-- Costa Rica
["San José"] = "Costa Rica",
-- Cuba
["La Habana"] = "Cuba",
-- México
["México"] = "México",
["Veracruz"] = "México",
["Puebla"] = "México",
["Guadalajara"] = "México",
["Monterrey"] = "México",
["Zacatecas"] = "México",
-- Panamá
["Panamá"] = "Panamá",
-- Paraguay
["Asunción"] = "Paraguay",
-- Perú
["Lima"] = "Perú",
-- Uruguay
["Montevideo"] = "Uruguay",
-- Venezuela
["Caracas"] = "Venezuela",
-- España
["Madrid"] = "España",
["Barcelona"] = "España",
["Murcia"] = "España",
["Sevilla"] = "España",
["Valencia"] = "España",
["Tarragona"] = "España",
["Zaragoza"] = "España",
["Cádiz"] = "España",
["Málaga"] = "España",
["Vigo"] = "España",
-- Otros
["New York"] = "Estados Unidos",
["Manila"] = "Filipinas",
["London"] = "Reino Unido",
["Paris"] = "Francia",
["Rome"] = "Italia",
["Lisboa"] = "Portugal"
}
local ciudades_rexp = {
-- Argentina
["Buenos%-Aires"] = "Buenos Aires",
["Santa F[eé]"] = "Santa Fe",
-- Chile
["Santiago, Chile"] = "Santiago de Chile",
["Santiago"] = "Santiago de Chile",
["Valpara[íi]so"] = "Valparaíso",
["Concepci.n"] = "Concepción",
-- Colombia
["Bogot[áa]"] = "Bogotá",
-- Costa Rica
["San Jos[eé]"] = "San José",
-- Cuba
["Habana"] = "La Habana",
-- México
["Ciudad de M[eé][xjg]ico"] = "México",
["M[eé][xjg]ico"] = "México",
["Vera[ ]*[Cc]ruz"] = "Veracruz",
["Monter+ey"] = "Monterrey",
-- Panamá
["Panam[áa]"] = "Panamá",
-- Paraguay
["Asunci[óo]n"] = "Asunción",
-- España
["Se[uv]illa"] = "Sevilla",
["C[áa]diz"] = "Cádiz",
["M[áa]laga"] = "Málaga",
-- Otros
["Nueva York"] = "New York",
["Londres"] = "London",
["Par[ií]s"] = "Paris",
["Rom[ae]"] = "Rome",
["Lisbon"] = "Lisboa"
}
local function get_country(city)
if ciudad_a_pais[city] then
return ciudad_a_pais[city]
else
for i, k in ipairs(ciudades_rexp) do
if city:match(k) then
return ciudad_a_pais[ciudades_rexp[k]]
end
end
end
end
local function get_heading(id)
if headings[id] then
return headings[id].txt
end
error( "Can't find heading for ID: " .. id )
end
local function construct_image(content, nompage, qid, nompag)
if nompage == nil or nompage == '' then error('nompage no puede ser nulo') end
local s = ''
--Miramos si en WD hay 1 o más P996, capturamos el que coincida, y le miramos el P4714 (nº pág. con título).
local P4714 = ''
if qid then
local FileOnCommonsStmts = mw.wikibase.getAllStatements (qid, 'P996');
if FileOnCommonsStmts then
for _, stmt in pairs( FileOnCommonsStmts ) do
local commonsFilename = stmt['mainsnak']['datavalue']['value']
--decode: nompag podría venir con "'" en lugar de "'" (apóstrofe)
if mw.text.decode(nompag) == commonsFilename then
P4714 = Wikidata.claim{item=qid, property="P996", qualifier="P4714", lang="es", list=false}
end
end
end
end
s = s .. '<tr><td valign="top">'
if content then
else
if P4714 == '' then
content = '1' --si no hay nada de nada
else
content = P4714
end
if content == nil then content = '1' end
end
if tonumber(content) == nil then
s = s .. content
else
s = s .. '<span id="ws-cover" style="display:none; speak:none;">'
s = s .. nompage .. "/" .. content .. "</span>"
s = s .. '[[File:' .. nompage .. '|page=' .. content .. '|frameless]]'
end
s = s .. '</td>'
s = s .. '<td valign="top"><table style="margin-left:0">' --se cierran en construct_field_paginas
return s
end
local function construct_field_paginas(content, nompage)
if nompage == nil or nompage == '' then return "Error en construct_field_pagines (nompage)" end
if content == nil or content == '' then return "Error en construct_field_pagines (content)" end
local s = ''
s = s .. '</table></td></tr>'
s = s .. '<tr><td valign="top" colspan="2"><span class="plainlinks">'
s = s .. '<b>[//es.wikisource.org/wiki/File:' .. nompage .. '?action=purge Páginas]</b></span>'
s = s .. ' ([[Ayuda:Nivel_de_las_páginas|Nivel]])\n'
s = s .. '<div style="padding-left:0.5em; background-color:#F0F0F0; color:black;">\n' .. content .. '</div></td></tr>'
s = s .. '</table></td>'
return s
end
local function construct_field_sumario(content)
local s = ''
if content then
s = '<td width="33%" valign="top">' .. content .. '</td>'
end
return s
end
--------------------------------------------------------------------------------
-- Get an Item based on what's passed in the 'wikidata' or 'page' parameters of
-- the args, or the current page's ID otherwise.
local function getItem( args )
local id = nil
if type( args ) == 'string' and args ~= '' then
id = args
end
return mw.wikibase.getEntity( id )
end
--------------------------------------------------------------------------------
-- Exported method. Get wikitext for displaying an edition's badges from Wikidata.
-- Adaptado de https://ca.wikisource.org/wiki/Module:Edition
local function getBadge( args )
local item = getItem( args ) --por defecto, id de la página
if args.qid ~= nil then --pero si pasamos un qid, id pasado
item = mw.wikibase.getEntity(args.qid)
end
if not ( item and item.sitelinks and item.sitelinks.eswikisource and item.sitelinks.eswikisource.badges ) then
return ''
end
local badges = item.sitelinks.eswikisource.badges
local out = ''
for _, badge in pairs( badges ) do
local badgeOut = ''
local badgeItem = mw.wikibase.getEntity( badge )
local wikisourceBadgeClass = 'Q75042035'
if badgeItem.claims.P31[1].mainsnak.datavalue.value.id == wikisourceBadgeClass and badgeItem.claims.P18 ~= nil then
if badge ~= nil then
badgeOut = badgeOut .. badge --Q20748091 (no corr.), Q20748092 (corr.), Q20748093 (val.), Q20748094 (err.)
end
out = out .. badgeOut
end
end
return mw.getCurrentFrame():preprocess( out )
end
local function consolidado(args)
local c = {}
c.qid = args['Wikidata']
c.nompag = args['NomPag']
for id in pairs(headings) do
local idx = headings[id]
c[id] = {}
if idx.index then --toma datos del índice
c[id].WS = args[idx.index]
end
if c.qid and idx.p then --tiene propiedad en Wikidata
c[id].WD = Wikidata.claim{item=c.qid, property=idx.p, lang="es", list=idx.list, formatting=idx.fmt}
end
-- content: prioridad WS
c[id].content = c[id].WS or c[id].WD
end
return c
end
-- construct a basic "field" row
local function construct_field(id, c)
if id == nil then error( "Error en construct_field" ) end
local qid = c.qid
local idx = c[id]
local content = idx.content
local CatError = "[[Categoría:Índices con discrepancias respecto a Wikidata"
local contentAux = idx.WS
local siWDsiWS = idx.WD and idx.WS --hay contenido en WD y en WS (se puede borrar)
local noWDsiWS = not idx.WD and idx.WS --no hay contenido en WD pero sí en WS (no borrar hasta migrarlo a WD)
local siWDnoWS = idx.WD and not idx.WS
local eqWDWS = siWDsiWS and idx.WD == idx.WS
local caterror = false --campo generó error
if id == 'translator' or id =='illustrator' or id == 'editor' or id == 'introducer'
or id == 'editorial' or id == 'printer' or id == 'serie' or id == 'editionof' then
if content == 'valor desconocido' then
content = 'Anónimo'
end
end
-- casos especiales
if id == 'author' then
if content == 'valor desconocido' then
content = '[[:Categoría:Obras de autores anónimos|Anónimo]]'
end
local cadena_autor = Wikidata.claim{item=qid, property='P2093', lang="es", list=true}
if content and cadena_autor then
content = content .. ', ' .. cadena_autor
elseif not content and cadena_autor then
content = cadena_autor
end
end
if id == 'title' then
if not idx.WS then
local wSiteLink = mw.wikibase.getSitelink(qid)
if wSiteLink then
if idx.WD then
content = "''[[" .. wSiteLink .. "|" .. idx.WD .. "]]''"
else
content = "''[[" .. wSiteLink .. "]]''"
end
elseif idx.WD then
content = "''[["..idx.WD.."]]''"
end
end
end
if id == 'modernizar' then
if content then
if content == 'S' then
content = '[[Wikisource:Modernización de textos|Ortografía antigua — El lector puede elegir modernizar la ortografía]]'
else
content = '[[Wikisource:Modernización de textos|No modernizar]]'
end
end
end
if id == 'source' then
if content == nil then
if c.nompag == nil then
content = CatError .. "|Nompag]]"
caterror = 'ERROR: Nompag'
else --todo: se podría buscar los identificadores de Wikidata P675 (GB), P724 (IA), etc.
content = "[[:File:" .. c.nompag .. "|Archivo]][[Categoría:Índices sin fuente]]"
end
else
-- revisar: en general la fuente la explicitamos localmente con una plantilla
-- tenemos que trackear si está en Wikidata? cual propiedad?
-- noWDsiWS = true
end
end
if id == 'wikidata' then
if content == nil then
return "[[Categoría:Índices no conectados a Wikidata]]"
end
content = "[[File:Wikidata-logo.svg|20px|link=d:" .. contentAux .. "]] [[d:" .. contentAux .. "|" .. contentAux .. "]]"
if mw.wikibase.entityExists(qid) == false then
content = content .. CatError .. "|Qid]]"
caterror = 'ERROR: QID NO EXISTE'
end
if #mw.wikibase.getBestStatements(qid,'P996') == 0 then
local wTitulo = mw.title.getCurrentTitle() --Nombre sin "Índice:"
if wTitulo.text then
local wArchivo = mw.title.new( wTitulo.text, 'File' )
if wArchivo.exists then
--Archivo no está en Commons pero sí localmente en Wikisource (casos excepcionales)
else
--No hay archivo local ni P996: hay que añadirlo (archivo en Commons) al ítem en Wikidata.
content = content .. CatError .. "|Commons]]"
caterror = 'ERROR: SIN P996 (archivo en Commons)'
end
else
content = content .. CatError .. "|Error]]"
caterror = 'ERROR: SIN TEXTO EN ÍNDICE'
end
elseif c.nompag then
local FileMatch = ''
local FileOnCommonsStmts = mw.wikibase.getAllStatements (qid, 'P996');
for _, stmt in pairs( FileOnCommonsStmts ) do
local commonsFilename = stmt['mainsnak']['datavalue']['value']
if mw.text.decode(c.nompag) == mw.text.decode(commonsFilename) then --decode por si apóstrofe llega como "'"
FileMatch = commonsFilename
end
end
if FileMatch == '' then
content = content .. CatError .. "|Fichero]]"
caterror = 'ERROR: P996 REFIERE OTRO FICHERO'
end
end
end
if id == 'quality' then
if qid then
local badges = getBadge(qid)
if badges then
-- revisar: lo mismo que en source, necesidad de trackear?
-- if content then siWDsiWS = true end
content = "C"
if badges == "Q20748091" then content = "C" end
if badges == "Q20748092" then content = "V" end
if badges == "Q20748093" then content = "T" end
if badges == "Q20748094" then content = "L" end
else
--if content then noWDsiWS = true end
end
if contentAux then --tiene preferecia lo informado a mano
content = contentAux
end
end
if content == nil then
content = "[[Categoría:Índices no corregidos]][[:Categoría:Índices no corregidos|Por corregir]]"
elseif content == 'C' then
content = "[[Categoría:Índices no corregidos]][[:Categoría:Índices no corregidos|Por corregir]]"
elseif content == 'P' then
content = "[[Categoría:Índices sin pagelist]][[:Categoría:Índices sin pagelist|Por corregir - pendiente crear <nowiki><pagelist/></nowiki>]]"
elseif content == 'V' then
content = "[[Categoría:Índices corregidos]][[:Categoría:Índices corregidos|Corregido — Todas las páginas corregidas pero no todas validadas]]"
elseif content == 'T' then
content = "[[Categoría:Índices validados]][[:Categoría:Índices validados|Terminado — Todas las páginas validadas]]"
elseif content == 'L' then
content = "[[Categoría:Índices dañados]][[:Categoría:Índices dañados|Archivo fuente debe ser arreglado antes de corregirlo]]"
elseif content == 'E' then
content = "[[Categoría:Índices en extractos]][[:Categoría:Índices en extractos|Extracto]]"
else
content = "[[Categoría:Índices no corregidos]][[:Categoría:Índices no corregidos|Por corregir]]"
end
end
-- categorías de seguimiento
if id == 'editionof' then
if content == nil or content == '' then
return '[[Categoría:Índices sin obra asociada]]'
else
content = '[[Categoría:Índices con obra asociada]]'..content
end
end
-- parámetros que no deben pasar a Wikidata
if id == 'serie' then
noWDsiWS = false
end
if content == nil or content == '' then
return ''
end
local title = get_heading( id )
if siWDnoWS == true then
local lapiz = ' <span class="penicon" data-bridge-edit-flow="single-best-value">'
.. "[[File:Arbcom ru editing.svg|10px|baseline|"
.. string.gsub(mw.message.new('Wikibase-client-data-bridge-bailout-suggestion-go-to-repo-button'):inLanguage("es"):plain(), '{{WBREPONAME}}', 'Wikidata')
if id == 'title' then
content = content .. lapiz .. "|link=https://www.wikidata.org/wiki/" .. qid .. "?uselang=es#sitelinks-wikisource]]</span>"
else
local P = headings[id].p
if P and P ~= '' then
content = content .. lapiz .. "|link=https://www.wikidata.org/wiki/" .. qid .. "?uselang=es#" .. P .. "]]</span>"
end
end
end
if siWDsiWS then
content = content .. "[[Categoría:Índices con datos en Wikidata]]"
title = title .. "<span style='color:blue; font-size:75%;' title='Datos en Wikidata'>*</span>"
end
if noWDsiWS then
content = content .. "[[Categoría:índices con datos para Wikidata]]"
title = title .. "<span style='color:green; font-size:75%;' title='Datos para Wikidata'>*</span>"
end
if eqWDWS then
content = content .. "[[Categoría:índices con datos duplicados en Wikidata]]"
title = title .. "<span style='color:green; font-size:75%;' title='Datos duplicados en Wikidata'>*</span>"
end
if caterror and caterror ~= '' then
title = title .. "<span style='color:red; font-size:75%;' title='"..caterror.."'>*</span>"
end
local s = ''
s = s .. '\n<tr>'
s = s .. '<th valign="top" align="left"><b>' .. title .. '</b></th>\n'
s = s .. '<td>' .. content .. '</td>\n'
s = s .. '</tr>\n'
return s
end
function p.fields(frame)
local args = getArgs(frame)
if args['Lugar'] and get_country(args['Lugar']) then
args['derechos'] = get_country(args['Lugar'])
end
local c = consolidado(args)
local s = ""
s = s .. '<table width="100%"><tr><td valign="top"><table>'
s = s .. construct_image(args['Imagen'], args['NomPagE'], args['Wikidata'], args['NomPag'])
-- Tras la imagen, intentamos mostrar una fila por campo (si no hay contenido, no aparece)
s = s .. construct_field('author', c)
s = s .. construct_field('translator', c)
s = s .. construct_field('editor', c)
s = s .. construct_field('introducer', c)
s = s .. construct_field('title', c)
s = s .. construct_field('subtitle', c)
s = s .. construct_field('volume', c)
s = s .. construct_field('year', c)
s = s .. construct_field('place', c)
s = s .. construct_field('country', c)
s = s .. construct_field('printer', c)
s = s .. construct_field('editorial', c)
s = s .. construct_field('illustrator', c)
s = s .. construct_field('editionof', c)
s = s .. construct_field('source', c)
s = s .. construct_field('serie', c)
s = s .. construct_field('modernizar', c)
s = s .. construct_field('wikidata', c)
s = s .. construct_field('quality', c)
s = s .. '<tr><td colspan="2">[[Archivo:Commons-emblem-notice.svg|20px|enlace=|alt=|frameless]] [[Ayuda:Índices|Ayuda]]</td></tr>'
s = s .. construct_field_paginas(args['Paginas'], args['NomPagE'])
s = s .. construct_field_sumario(args['Notas'])
s = s .. '</tr></table>'
return s
end
return p
ikfc5305vdt9jlx46za1uk2oov8n7yj
Índice:Viaje al Interior de Tierra del Fuego (1906).pdf
104
355927
1653867
1598979
2026-05-15T01:56:46Z
Ignacio Rodríguez
3603
1653867
proofread-index
text/x-wiki
{{:MediaWiki:Proofreadpage_index_template
|Titulo=
|Subtitulo=
|Volumen=
|Autor=
|Editor=
|Traductor=
|Prologuista=
|Imprenta=
|Editorial=
|Ilustrador=
|Ano=
|Lugar=
|derechos=Argentina
|Fuente=[http://repositorio.segemar.gov.ar/308849217/622 Obra] en el [https://repositorio.segemar.gov.ar/ Repositorio SegemAR]
|Imagen=1
|Progreso=C
|Paginas=<pagelist 1="Portada" 2="—" 3="4" 95="Índice" 96="-" />
|Notas={{Página:Viaje al Interior de Tierra del Fuego (1906).pdf/95}}
|Wikidata=Q129789603
|Serie=
|Header=
|Footer=
|Modernizacion=N
|Dict=
|ultima-muerte=1923
}}
bm1qwrbbjng6us2y69c6jlg7s4he52j
Índice:Colección de documentos ineditos relativos al descubrimiento, conquista y organización de las antiguas posesiones españolas de ultramar - IA colecciondocument12seririch.djvu
104
357851
1653866
1596267
2026-05-15T01:56:26Z
Ignacio Rodríguez
3603
1653866
proofread-index
text/x-wiki
{{:MediaWiki:Proofreadpage_index_template
|Titulo=
|Subtitulo=
|Volumen=12
|Autor=
|Editor=
|Traductor=
|Prologuista=
|Imprenta=
|Editorial=
|Ilustrador=
|Ano=1885-1932
|Lugar=
|derechos=
|Fuente={{IA|colecciondocument12seririch}}
|Imagen=1
|Progreso=C
|Paginas=<pagelist
1to8="-"
9="Portada"
10to11="-"
12=6
407to414="-"
/>
|Notas=
|Wikidata=Q130460387
|Serie=
|Header=
|Footer=
|Modernizacion=default
|Dict=
|ultima-muerte=
}}
ixhxemz0xbihxzfxdevn584ishoeyo7
Módulo:Galería
828
358608
1653828
1553232
2026-05-14T15:39:18Z
Ignacio Rodríguez
3603
delink centralizado / lints lua
1653828
Scribunto
text/plain
--[[
Genera galerías a partir de una lista de Índices
]]
require('strict')
local langs = {
Titulo = 'title',
Ano = 'pubYear',
Autor = 'author',
Traductor = 'translator',
Ilustrador = 'illustrator',
Prologuista = 'introducer',
}
local p = {}
local getArgs = require('Módulo:Arguments').getArgs
local delink = require('Módulo:String').delink
local loadWikidata = function(fields, work)
for field in pairs(langs) do
if not fields[field] or fields[field] == '' then
local workfield = work[langs[field]]
if type(workfield) == 'table' then
workfield = tostring(require('Módulo:Enlace libro').renderAuthorLinks( workfield, 'wst-worklink-authors' ))
end
fields[field] = workfield
end
end
return fields
end
function p.galeria(frame)
local args = getArgs(frame)
local content = {}
if args[1] == nil then return '' end
for file in mw.text.gsplit(args[1], '\n') do
if file =='' then
-- pass
else
if mw.ustring.match(file, 'Índice:') then
file = mw.ustring.sub(file, 8)
end
local index = mw.ext.proofreadPage.newIndex( file )
if not index.title.exists then
-- pass
else
local fields = index.fields
local work = require('Módulo:Obra').newWork(file)
fields = loadWikidata(fields, work)
local archivo = 'Archivo:' .. file
local page = fields.Imagen
local titulo = fields.Titulo
local anyo = fields.Ano
local roles = ''
local coma = false
for i, role in ipairs{'Autor', 'Traductor', 'Ilustrador', 'Prologuista'} do
local Role = fields[role]
if Role and Role ~= '' then
if coma then
roles = roles..', <br>'
end
coma = true
if role == 'Autor' then
roles = roles..'por ' .. Role
elseif role == 'Traductor' then
roles = roles..'traducido por ' .. Role
elseif role == 'Ilustrador' then
roles = roles..'ilustrado por ' .. Role
elseif role == 'Prologuista' then
roles = roles..'prólogo por ' .. Role
end
end
end
local str = archivo .. '|page='..page..'|link=Índice:'..file..'|'
str = str .. "'''" .. titulo .. "''' (".. anyo..")<br/> <span style=\"font-size: 83%;\">"
if roles ~= '' then
str = str..roles
end
str = str..'</span>'
-- TODO: parámetro para no mostrar links de descarga
titulo = delink(titulo)
local dlink = frame:expandTemplate{ title = 'descarga2', args={titulo} }
str= str..'<br/>'..dlink
table.insert(content, str)
end
end
end
local all = table.concat(content, '\n')
local tag = frame:extensionTag( 'gallery', all, { heights = 200, widths = 200, mode="packed" } )
return tag
end
return p
q1pdzevcgryng7nrlr1auhwx36ut8yv
Módulo:Interproyecto
828
365012
1653816
1502816
2026-05-14T14:37:45Z
Ignacio Rodríguez
3603
rip wikinews
1653816
Scribunto
text/plain
local p = {}
local Wikidata = require('Módulo:Wikidata')
local Entidad = mw.wikibase.getEntityObject() or '' -- Tabla con los datos en Wikidata
local Str = require('Módulo:String')
local Enlaces = require('Módulo:Enlaces')
--parámetros reconocidos. 1 = vigente, 0 = obsoleto. En orden alfabético:
local params = {['commons']=1,['commonscat']=1,['wikiviajes']=1, ['wikcionario']=1,['wikidata']=1,['wikilibros']=1,['wikinoticias']=1,['wikipedia']=1,['wikiquote']=1,['wikispecies']=1,['wikiversidad']=1}
-- Función que devuelve la lista de los valores de una propiedad en Wikidata formateados
function propiedad(idPropiedad,opciones)
if Entidad and Entidad.claims then --and Entidad.claims[idPropiedad] then
if not opciones then
opciones = {}
end
idPropiedad = string.upper(idPropiedad)
opciones['propiedad'] = idPropiedad
valorPropiedad = Wikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])
if not valorPropiedad or valorPropiedad == '' then
return ''
end
return valorPropiedad
else return ''
end
end
function p.interproyecto( frame )
local frame = frame:getParent()
local titulo = mw.title.getCurrentTitle()
local argus = {}
for k,v in pairs(frame.args) do -- crea una tabla con los parámetros incluídos en la plantilla, y elimina parámetros vacíos
if v ~= '' and type(k) ~= 'number' then
argus[mw.ustring.lower(k)] = v -- todos los parámetros en minúsculas por defecto:
end
end
-- WIKIDATA! --
if Entidad == '' and argus['wikidata'] then
Entidad = mw.wikibase.getEntityObject(argus['wikidata'])
end
local nombre = frame:preprocess("{{PAGENAME}}")
-- Lista de enlaces
if (not argus['wikidata'] or argus['wikidata'] == '') and Entidad~=nil then
argus['wikidata']=Entidad.id --enlazar a elemento wikidata
end
---- Enlaces uno por uno ---
listaenlaces = Enlaces.all(argus)
listaenlaces["eswiki"]["text"] = "Enciclopedia"
listaenlaces["eswikiquote"]["text"] = "Citas"
listaenlaces["commonswiki"]["text"] = "Multimedia"
listaenlaces["specieswiki"]["text"] = "Especies descritas"
listaenlaces["wikidata"]["text"] = "Metadatos"
listaenlaces["eswikibooks"]["text"] = "Libros"
listaenlaces["eswikiversity"]["text"] = "Clases"
listaenlaces["eswiktionary"]["text"] = "Diccionario"
listaenlaces["eswikivoyage"]["text"] = "Viajes"
orden = { 'eswiki', 'eswikiquote','eswiktionary', 'eswikibooks' , 'eswikiversity' , 'eswikinews', 'commonswiki', 'specieswiki', 'eswikivoyage' ,'wikidata'}
textoenlaces = Enlaces.formattedbiocitas(listaenlaces, orden)
local contenido = mw.html.create( 'div' )
:addClass( 'ws-noexport' )
:css( 'margin', '5px')
:css( 'float', 'right' )
:css( 'box-sizing', 'border-box')
:css( 'border', '1px solid #808080')
:css( 'width', '30%');
local nodoimagen = contenido:tag( 'div' )
:css(' margin', '5px')
:css('text-align','center');
--P41
if argus['imagen'] ~= '' and argus['imagen'] ~= nil then
nodoimagen:wikitext("[[File:"..argus['imagen'].."|frameless|99999x150px|center]]")
elseif propiedad('p41') ~= '' then
nodoimagen:wikitext("[[File:"..propiedad('p41',{['uno']='sí'}).."|frameless|99999x150px|Bandera|center]]")
elseif propiedad('p18') ~= '' then
nodoimagen:wikitext("[[File:"..propiedad('p18',{['uno']='sí'}).."|frameless|99999x150px|"..propiedad('p18',{['calificador']='P2096',['idioma']='es'}).."|center]]")
end
nodoimagen:done()
local nodonombre = contenido:tag( 'div' )
:css(' margin', '5px')
:css( 'text-align' , 'center')
:css( 'background' , '#6688AA')
:css('color', 'white')
:css('font-weight','bold')
:css('font-size', '120%');
if argus['nombre'] ~= '' and argus['nombre'] ~= nil then
nodonombre:wikitext( argus['nombre'] )
else
nodonombre:wikitext( nombre )
end
nodonombre:done()
local nodoenlaces = contenido:tag( 'div' )
:css(' margin', '5px')
:css('text-align','center');
nodoenlaces:wikitext(textoenlaces)
nodoenlaces:done()
return contenido:done()
end
return p
tj166244nzqa4pgifweepkh3efykhqq
1653829
1653816
2026-05-14T15:43:38Z
Ignacio Rodríguez
3603
strict
1653829
Scribunto
text/plain
local p = {}
local Wikidata = require('Módulo:Wikidata')
local propiedad = Wikidata.getPropiedad
local Entidad = mw.wikibase.getEntityObject() or '' -- Tabla con los datos en Wikidata
local Enlaces = require('Módulo:Enlaces')
function p.interproyecto( frame )
frame = frame:getParent()
-- local titulo = mw.title.getCurrentTitle()
local argus = {}
for k,v in pairs(frame.args) do -- crea una tabla con los parámetros incluídos en la plantilla, y elimina parámetros vacíos
if v ~= '' and type(k) ~= 'number' then
argus[mw.ustring.lower(k)] = v -- todos los parámetros en minúsculas por defecto:
end
end
-- WIKIDATA! --
if Entidad == '' and argus['wikidata'] then
Entidad = mw.wikibase.getEntityObject(argus['wikidata'])
end
local nombre = frame:preprocess("{{PAGENAME}}")
-- Lista de enlaces
if (not argus['wikidata'] or argus['wikidata'] == '') and Entidad~=nil then
argus['wikidata']=Entidad.id --enlazar a elemento wikidata
end
---- Enlaces uno por uno ---
local listaenlaces = Enlaces.all(argus)
listaenlaces["eswiki"]["text"] = "Enciclopedia"
listaenlaces["eswikiquote"]["text"] = "Citas"
listaenlaces["commonswiki"]["text"] = "Multimedia"
listaenlaces["specieswiki"]["text"] = "Especies descritas"
listaenlaces["wikidata"]["text"] = "Metadatos"
listaenlaces["eswikibooks"]["text"] = "Libros"
listaenlaces["eswikiversity"]["text"] = "Clases"
listaenlaces["eswiktionary"]["text"] = "Diccionario"
listaenlaces["eswikivoyage"]["text"] = "Viajes"
local orden = { 'eswiki', 'eswikiquote','eswiktionary', 'eswikibooks' , 'eswikiversity' , 'eswikinews', 'commonswiki', 'specieswiki', 'eswikivoyage' ,'wikidata'}
local textoenlaces = Enlaces.formattedbiocitas(listaenlaces, orden)
local contenido = mw.html.create( 'div' )
:addClass( 'ws-noexport' )
:css( 'margin', '5px')
:css( 'float', 'right' )
:css( 'box-sizing', 'border-box')
:css( 'border', '1px solid #808080')
:css( 'width', '30%');
local nodoimagen = contenido:tag( 'div' )
:css(' margin', '5px')
:css('text-align','center');
--P41
if argus['imagen'] ~= '' and argus['imagen'] ~= nil then
nodoimagen:wikitext("[[File:"..argus['imagen'].."|frameless|99999x150px|center]]")
elseif propiedad('p41') ~= '' then
nodoimagen:wikitext("[[File:"..propiedad('p41',{['uno']='sí'}).."|frameless|99999x150px|Bandera|center]]")
elseif propiedad('p18') ~= '' then
nodoimagen:wikitext("[[File:"..propiedad('p18',{['uno']='sí'}).."|frameless|99999x150px|"..propiedad('p18',{['calificador']='P2096',['idioma']='es'}).."|center]]")
end
nodoimagen:done()
local nodonombre = contenido:tag( 'div' )
:css(' margin', '5px')
:css( 'text-align' , 'center')
:css( 'background' , '#6688AA')
:css('color', 'white')
:css('font-weight','bold')
:css('font-size', '120%');
if argus['nombre'] ~= '' and argus['nombre'] ~= nil then
nodonombre:wikitext( argus['nombre'] )
else
nodonombre:wikitext( nombre )
end
nodonombre:done()
local nodoenlaces = contenido:tag( 'div' )
:css(' margin', '5px')
:css('text-align','center');
nodoenlaces:wikitext(textoenlaces)
nodoenlaces:done()
return contenido:done()
end
return p
bp69apfrgvxqjn90symfj13nkwovrik
1653830
1653829
2026-05-14T15:47:13Z
Ignacio Rodríguez
3603
ops
1653830
Scribunto
text/plain
local p = {}
local Wikidata = require('Módulo:Wikidata')
local Entidad = mw.wikibase.getEntityObject() or '' -- Tabla con los datos en Wikidata
local Enlaces = require('Módulo:Enlaces')
local function propiedad(idPropiedad,opciones)
if Entidad and Entidad.claims then --and Entidad.claims[idPropiedad] then
if not opciones then
opciones = {}
end
idPropiedad = string.upper(idPropiedad)
opciones['propiedad'] = idPropiedad
local valorPropiedad = Wikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])
if not valorPropiedad or valorPropiedad == '' then
return ''
end
return valorPropiedad
else return ''
end
end
function p.interproyecto( frame )
frame = frame:getParent()
-- local titulo = mw.title.getCurrentTitle()
local argus = {}
for k,v in pairs(frame.args) do -- crea una tabla con los parámetros incluídos en la plantilla, y elimina parámetros vacíos
if v ~= '' and type(k) ~= 'number' then
argus[mw.ustring.lower(k)] = v -- todos los parámetros en minúsculas por defecto:
end
end
-- WIKIDATA! --
if Entidad == '' and argus['wikidata'] then
Entidad = mw.wikibase.getEntityObject(argus['wikidata'])
end
local nombre = frame:preprocess("{{PAGENAME}}")
-- Lista de enlaces
if (not argus['wikidata'] or argus['wikidata'] == '') and Entidad~=nil then
argus['wikidata']=Entidad.id --enlazar a elemento wikidata
end
---- Enlaces uno por uno ---
local listaenlaces = Enlaces.all(argus)
listaenlaces["eswiki"]["text"] = "Enciclopedia"
listaenlaces["eswikiquote"]["text"] = "Citas"
listaenlaces["commonswiki"]["text"] = "Multimedia"
listaenlaces["specieswiki"]["text"] = "Especies descritas"
listaenlaces["wikidata"]["text"] = "Metadatos"
listaenlaces["eswikibooks"]["text"] = "Libros"
listaenlaces["eswikiversity"]["text"] = "Clases"
listaenlaces["eswiktionary"]["text"] = "Diccionario"
listaenlaces["eswikivoyage"]["text"] = "Viajes"
local orden = { 'eswiki', 'eswikiquote','eswiktionary', 'eswikibooks' , 'eswikiversity' , 'eswikinews', 'commonswiki', 'specieswiki', 'eswikivoyage' ,'wikidata'}
local textoenlaces = Enlaces.formattedbiocitas(listaenlaces, orden)
local contenido = mw.html.create( 'div' )
:addClass( 'ws-noexport' )
:css( 'margin', '5px')
:css( 'float', 'right' )
:css( 'box-sizing', 'border-box')
:css( 'border', '1px solid #808080')
:css( 'width', '30%');
local nodoimagen = contenido:tag( 'div' )
:css(' margin', '5px')
:css('text-align','center');
--P41
if argus['imagen'] ~= '' and argus['imagen'] ~= nil then
nodoimagen:wikitext("[[File:"..argus['imagen'].."|frameless|99999x150px|center]]")
elseif propiedad('p41') ~= '' then
nodoimagen:wikitext("[[File:"..propiedad('p41',{['uno']='sí'}).."|frameless|99999x150px|Bandera|center]]")
elseif propiedad('p18') ~= '' then
nodoimagen:wikitext("[[File:"..propiedad('p18',{['uno']='sí'}).."|frameless|99999x150px|"..propiedad('p18',{['calificador']='P2096',['idioma']='es'}).."|center]]")
end
nodoimagen:done()
local nodonombre = contenido:tag( 'div' )
:css(' margin', '5px')
:css( 'text-align' , 'center')
:css( 'background' , '#6688AA')
:css('color', 'white')
:css('font-weight','bold')
:css('font-size', '120%');
if argus['nombre'] ~= '' and argus['nombre'] ~= nil then
nodonombre:wikitext( argus['nombre'] )
else
nodonombre:wikitext( nombre )
end
nodonombre:done()
local nodoenlaces = contenido:tag( 'div' )
:css(' margin', '5px')
:css('text-align','center');
nodoenlaces:wikitext(textoenlaces)
nodoenlaces:done()
return contenido:done()
end
return p
rapiu208srnsv5hunnygf62ahftc376
Acta de la diputación provincial de San Salvador con la que la provincia se separa de la Capitanía General de Guatemala
0
404037
1653809
1639251
2026-05-14T13:51:02Z
Ignacio Rodríguez
3603
dessangrar, más info
1653809
wikitext
text/x-wiki
{{DH}}
{{Encabezado
|titulo =Acta de la diputación provincial de San Salvador con la que la provincia se separa de la Capitanía General de Guatemala
|año = 1822
|autor = Junta de Gobierno de la provincia de San Salvador
|notas= Debido a que, en [[Acta de la anexión de la capitanía general de Guatemala al imperio mexicano|acta del 5 de enero de 1822]] la [[Autor:Junta Provisional Consultiva|Junta Provisional Consultiva]] declaró a la capitanía general de Guatemala unida al imperio mexicano; más adelante, en [[Acta del ayuntamiento de San Salvador con los miembros de la diputación provincial, en la que la diputación se erige en junta gubernativa|acta del mismo día]] (11 de enero) hecha junto con el ayuntamiento de la ciudad, la diputación provincial se erigió en junta gubernativa.}}
Sesión 9ª (Mes de enero de 1822) se leyó y se aprobó la acta anterior, y con presencia del oficio del Excelentísimo señor Presidente don Gabino Gainza, fecha 7 del corriente, esta Diputación, con el detenimiento y madurez que exige la grandeza del asunto, conferenció seriamente el contenido del citado oficio, en cuya conferencia se trajeron a la vista, la acta y representaciones del 12 del próximo pasado dirigidas a la Excelentísima Junta Provisional de Guatemala, que no tuvo a bien contestar, y al mismo Excelentísimo señor Gainza, que contestó, dejando en pie todas las razones que esta Corporación manifestó, y diciendo, que sus providencias no eran opuestas a la reunión del Congreso; pues que habiendo consultado a aquel Ayuntamiento, si se continuaban las elecciones, había resuelto que se procediese a ellas; de que se infiere, que está Su Excelencia en el concepto de que debe reunirse; pero que acordada ya por el Gobierno la unión al Imperio Mejicano, sin esperar la resolución de los pueblos representados por sus Diputados en conformidad del pacto y juramento del 15 de septiembre; y teniendo la Diputación únicamente por objeto el tratar este negocio, defender y conservar ilesos los derechos de la libertad de los pueblos que la han elegido y componen la Provincia, cuidando sólo por consiguiente de mantener en su vigor y fuerza, lo mismo que con tanto júbilo abrazaron y juraron estos propios pueblos al entrar en su independencia; los cuales acostumbrados a obedecer ciegamente a los gobernantes, creyeron un precepto la agregación a Méjico, a que los invitó el referido Gobierno de Guatemala, contraviniendo al pacto y juramento del día 15 de septiembre, sin el discernimiento que correspondía a tamaño asunto: que se conteste el recibo del referido oficio de siete del corriente.
SEGUNDO: que se haga prontamente la elección del Diputado que debe de ir al Gobierno de Méjico, acordada en el acta de 12 del próximo pasado.
TERCERO: que reconocida desde el principio de las sesiones de esta Corporación la utilidad que atraerá a esta Provincia la unión al Imperio Mejicano, nunca ha pensado adoptar sistema alguno de Gobierno, sino únicamente ser religiosa y firme a los vinculos y juramentos con que dejó al Gobierno español y reunir sus Diputados para que decidan conforme a la ley, de la suerte de la Provincia.
CUARTO: que siendo la conducta del Gobierno de Guatemala, desde el 30 de noviembre próximo pasado, opuesta abiertamente a la cordura con que esta Provincia ha procedido, se separa totalmente de él, reservándola para que en paz y tranquilidad se una a Méjico, si así lo dispusiere el Congreso, y se una por sí misma con las condiciones y decoro de un pueblo libre, sin permitir ser ofrenda y medio de negociaciones particulares.
QUINTO: que esta separación ha de ser, observando la Constitución y las leyes, según se acordó en la referida acta de 15 de septiembre.
SEXTO: que esto se comunique por oficio a la Exma. Junta Provisional de Guatemala, bajo el concepto de que deben ser respetadas las deliberaciones de la Provincia de San Salvador, como lo han sido las de León y Comayagua, y como el héroe de Nueva España, y los papeles públicos del Imperio, ofrecen respetar la voluntad de los pueblos; y que este acuerdo se circule a los Ayuntamientos de la Provincia. Con lo que se concluyó esta sesión que firmaron dichos señores, de que certifico. - Delgado -Arce - Rodríguez - Zeceña - Fagoaga - Ramón Meléndez, Secretario.
[[Categoría:La provincia de San Salvador ante la anexión al imperio mexicano]]
[[Categoría:Documentos de la Junta de Gobierno de la provincia de San Salvador]]
[[Categoría:Documentos de José Matías Delgado]]
q0put3sttl6jpi03sie5cwerg0o1jif
Acta del ayuntamiento de San Salvador con los miembros de la diputación provincial, en la que la diputación se erige en junta gubernativa
0
404144
1653808
1639253
2026-05-14T13:49:52Z
Ignacio Rodríguez
3603
dessangrar
1653808
wikitext
text/x-wiki
{{DH}}
{{Encabezado
|titulo =Acta del ayuntamiento de San Salvador con los miembros de la diputación provincial, en la que la diputación se erige en junta gubernativa
|año = 1822
|autor = Junta de Gobierno de la provincia de San Salvador
|más info = {{x-menor|Debido a que, en [[Acta de la diputación provincial de San Salvador con la que la provincia se separa de la Capitanía General de Guatemala|acta del mismo día]], la diputación provincial separó a la provincia de San Salvador de la capitanía general de Guatemala al estar opuesta a la anexión al imperio mexicano.}}}}
En la ciudad de San Salvador, a once de enero de mil ochocientos veintidós. Reunidos en la Consistorial los señores que componen este Ayuntamiento, presidido por el Señor Intendente, Jefe Político, doctor don José Matías Delgado, con asistencia de los individuos de la Excelentísima Diputación Provincial y el pueblo, se leyó el oficio que con fecha 7 del corriente dirigió a éste N. Ayuntamiento, el Excelentísimo Señor Presidente de Guatemala, don Gabino Gaínza, en que comunica que en acta de 5 del mismo mes, acordó el Gobierno Provincial, con vista de la mayoría de la voluntad de los Ayuntamientos, la Unión al imperio mexicano, observando que el referido Gobierno, en el acuerdo indicado, se excedió de las facultades que le habían conferido los pueblos que lo constituyeron, entregándolos al imperio contra el pacto celebrado en el acta de 15 de septiembre último en que se reservó esta decisión al Congreso, teniendo presente que dicha acta se juró solemnemente, y que, por lo mismo, ya los pueblos no están en plenitud de sus facultades para poder por sí mismos decidirse ahora por el imperio, viendo que ha desatendido el mismo Gobierno Provincial, éstas otras razones que expusieron algunos Ayuntamientos de la Provincia, en contestación de 30 del último noviembre dirigido por el Excelentísimo señor don Gabino Gainza, con las que le mostraba hasta la evidencia, que el medio adoptado para indagar la voluntad de los pueblos, era inadecuado, que los Ayuntamientos no están constituidos en razón de vecindario, sino en la del número de pueblos; de suerte que hay Ayuntamiento que representa un pueblo que contiene un número de vecinos mayor que el que representan veinte o más Ayuntamientos; en vista de todo, el pueblo dijo, y el Noble Cuerpo acordó lo siguiente:-Protestar de nulidad del acuerdo de la Excelentísima Junta Provisional, tanto por el exceso de facultades de que se ha hecho mención, cuanto porque los pueblos no han obrado con libertad en sus decisiones: lo primero, porque se les ha intimidado con el riesgo de una división numerosa que ha querido suponerse (con notorio agravio de los sentimientos liberales del Excmo. señor Iturbide,) que marcha con el objeto de hostilizar estos pueblos: lo segundo, porque aprovechando la ignorancia de casi todos, no han sido ellos, sino los que los seducen, los que han hecho la decisión, de lo cual tiene pruebas nada equívocas este N. Ayunt miento que en uno de sus juzgados constitucionales, ha seguido un expediente sobre el modo con que se ha obrado en varios pueblos del partido. Que habiendo cesado el Gobierno Provincial de Guatemala, en consecuencia de su unión a México, el de San Salvador le es respecto de la provincia (conviniendo en esto los demás pueblos de ella y los otros que quieran agregarse) provisional gubernativo, a cuyo efecto la misma Excelentísima Junta Provincial quede constituída ese carácter, siendo Presidente de ella el señor Intendente jefe político doctor don José Matías Delgado; quedando de consiguiente, todo lo económico, político, gubernativo, militar y judicial, independiente de la antigua capital de Guatemala. Que no se haga alteración ninguna sobre gobierno, rigiendo por ahora la constitución española y demás leyes, conforme a lo jurado en el Acta citada de 15 de septiembre, reservando al Congreso el punto de unión al Imperio mexicano, pues San Salvador hasta ahora no ha tratado sobre la materia; y en caso de que el Congreso decida la unión que considere ventajosa, no será una obra del temor, ni a virtud de un acuerdo ilegal, sino por los trámites decorosos y justos, según se juró en el Acta de 15 de septiembre. Que inmediatamente se proceda a la elección de diputados que deban a los jefes de ambas Américas, según está acordado. Que queden desde este día abolidos los tributos, como opuesta esta contribución a la libertad e igualdad de que deben gozar los ciudadanos de una nación culta; y aunque la resolución de este punto no corresponde al noble Ayuntamiento, este lo representará al Gobierno provisional, quien desde luego lo acordará de la misma suerte que otras solicitudes que no están bajo las atribuciones de esta corporación. Que desde luege el Gobierno provisional ponga en planta todas las solicitudes que hizo el pueblo, y y que aparecen del Acta de 6 del último noviembre. Que se conceda indulto moderado, según las autoridades acuerden; pero que a los presos por insultos al pueblo y otras ocurrencias politicas, se les ponga inmediatamente en libertad, escribiéndose para que vengan a los que por iguales motivos se han fugado, y extrañado de esta ciudad, asegurándoles que nada tienen que temer de ella porque el pueblo sepultará en el olvido todos sus resentimientos, por las ocurrencias de los años pasados. Que se oficie a todos los Ministros de Rentas para que a la mayor brevedad presenten un estado del actual de sus fondos, y no cobrar libramiento que no sea dado por nuestro Gobierno provisional; que se oficie igualmente a todos los empleados que se hallen ausentes en cualquiera puntos para que vengan a ocupar sus destinos, con advertencia de que si no lo verifican, se entenderá que lo renuncian.
Que se comunique por correos extraordinarios esta Acta a todos los pueblos de ésta y otras provincias para que, si lo tuvieren a bien, se sirvan abrazar esta resolución, como conforme a los principios de derecho público y al carácter religioso y sostenido que ha distinguido siempre a los mismos pueblos, con lo cual se concluyó esta Acta que firmaron dichos señores, de que certifico. Delgado, Jaurigui, Lara, Delgado, Morales, Villaseñor, Pérez Estupinián, López, Camacho, Carranza, Arana, Cisneros, Joaquín Chávez, Secretario.
[[Categoría:La provincia de San Salvador ante la anexión al imperio mexicano]]
[[Categoría:Documentos de la Junta de Gobierno de la provincia de San Salvador]]
[[Categoría:Documentos de José Matías Delgado]]
4ix5lzujy59w41d9fpts0p37iirsv9t
Bando de la Junta de Gobierno de la provincia de San Salvador del 13 de enero de 1822
0
404146
1653807
1644104
2026-05-14T13:49:14Z
Ignacio Rodríguez
3603
dessangrar
1653807
wikitext
text/x-wiki
{{DH}}
{{Encabezado
|titulo =Bando de la Junta de Gobierno de la provincia de San Salvador del 13 de enero de 1822
|año = 1822
|autor = Junta de Gobierno de la provincia de San Salvador
|más info = {{menor|Luego que se declarase la separación de la provincia de San Salvador de la capitanía general de Guatemala.}}}}
# Se declara que la religión católica, apostólica y romana, es la única y dominante. El que afirme lo contrario será tenido por enemigo del pueblo.
# Nadie blasfemará ni impedirá los actos religiosos bajo el mismo apercibimiento.
# Se establecen por bases de la la felicidad pública la libertad y la igualdad.
# Los tributos y todos los impuestos quedan abolidos para siempre.
# Ninguno llamará á otro con titulos o apodos de infamia, bajo el apercibimiento de ser tenido por enemigo del pueblo.
# Queda así mismo abolida para siempre la esclavitud, y en consecuencia, quedaran libren todos los esclavos de ambos sexos en el acto de la publicación de este bando debiendo ocurrir los dueños á la casa de la ciudad para que sean indemnizados de su importe
# Se debe entender el capitulo precedente respecto de los que hubiesen habido esclavos por compra, y en el caso de que no se hubiesen servido de ellos el tiempo de dies años, pues los que fuesen adquiridos por herencia, sesión ú otre lucrativo, no deberán pretender reintegro alguno
# Debiéndose señalar este día con una obra de piedad particular, se concede indulto general a todos los delincuentes, exceptuándose a los traidores a la Patria.
[[Categoría:La provincia de San Salvador ante la anexión al imperio mexicano]]
[[Categoría:Documentos de la Junta de Gobierno de la provincia de San Salvador]]
t8bh360hj57mpcsmxw151v2cgm1mpbu
Acta de la anexión de la capitanía general de Guatemala al imperio mexicano
0
404150
1653806
1639250
2026-05-14T13:48:24Z
Ignacio Rodríguez
3603
dessangrar
1653806
wikitext
text/x-wiki
{{DH}}
{{Encabezado
|titulo =Acta de la anexión de la capitanía general de Guatemala al imperio mexicano
|año = 1822
|autor = Junta Provisional Consultiva
|más info = {{menor|En virtud de la decisión de los cabildos abiertos de los distintos ayuntamientos, a quienes se les dió el poder de decidir sobre la anexión por la circular del capitán general Gabino Gaínza del 30 de noviembre de 1821.}}}}
Habiéndose traído a la vista las contestaciones de los ayuntamientos de las provincias, dadas a virtud del oficio circular de 30 de noviembre último, en que se les previno que en consejo abierto explorasen la voluntad de los pueblos sobre la unión al imperio mexicano, que el Serenisimo señor don Agustin de Iturbide, Presidente de la Regencia, proponia en su oficio de 19 de octubre, que se acompañó impreso; y trayéndose igualmente las contestaciones, que sobre el mismo punto han dado los tribunales y comunidades eclesiásticas y seculares, jefes políticos, militares y de hacienda, y personas particulares, a quiénes se tuvo por conveniente consultar, se procedió a examinar y regular la voluntad general, en la manera siguiente:
Los ayuntamientos que han convenido llanamente en la unión, según se contiene en el oficio del Gobierno de México, son ciento cuatro.
Los que han convenido en ella con algunas condiciones, que les ha parecido poner, son once.
Los que han comprometido su voluntad en lo que parezca a la junta provisional, atendido el conjunto de circunstancias, son treinta y dos.
Los que se remiten a lo que diga el Congreso, que estaba convocado desde el 15 de septiembre y debia reunirse el 1º de febrero próximo, son veintiuno.
Los que manifestaron no conformarse con la unión, son dos.
Los restantes no han dado contestación, y si la han dado, no se ha recibido.
Y traído a la vista el estado impreso de la población del Reino, hecho por un cálculo aproximado, sobre los censos existentes para la elección de Diputados, que se circuló en noviembre próximo anterior, se halló: que la voluntad manifestada llanamente por la unión, excedía de la mayoría absoluta de la población reunida a este Gobierno. Y, computándose la de la Intendencia de Nicaragua, que desde su declaratoria de su independencia del Gobierno español, se unió al de México, separándose absolutamente de éste; la de la de Comayagua, que se halla en el mismo caso; la de la Ciudad Real de Chiapas, que se unió al Imperio aún antes que se declarase la independencia en esta ciudad; la de Quezaltenango, Sololá y algunos otros pueblos, que en estos últimos días se han adherido por si mismo a la unión; se encontró que la voluntad general subía a una suma casi total. Y teniendo presente la Junta que su deber, en este caso, no es otro que trasladar al Gobierno de México lo que los pueblos quieren, acordó verificarlo así, como ya se le indicó en oficio de 3 del corriente.
Entre las varias consideraciones que ha hecho la Junta, en esta importante y grave materia, en que los pueblos se hallan amenazados en su reposo, y especialmente en la unión con sus hermanos de las otras provincias con quienes ha vivido siempre ligados por la vecindad, el comercio y otros vinculos estrechos, fue una de las primeras, que por medio de la unión a México querían salvar la integridad de lo que antes se ha llamado Reino de Guatemala, y restablecer entre si la unión que ha reinado por lo pasado; no apareciendo otro para remediar la división que se experimenta.
Como algunos pueblos han fijado al juicio de la Junta lo que más les convenga resolver en la presente materia y circunstancias, por no tenerlas todas a la vista; la Junta juzga, que manifestada, como está de un modo tan claro, la voluntad de la universalidad, es necesario que los dichos pueblos se adhieran a ella para salvar su integridad y reposo.
Como las contestaciones dadas por los ayuntamientos, lo son con vista del Serenisimo señor Iturbide que se les circuló, y en él se propone como base la observancia del Plan de Iguala y de Córdoba, con otras condiciones, benéficas al bien y prosperidad de estas provincias, las cuales si llegasen a término de poder por sí constituirse en estado independiente, podrán libremente constituirlo; se ha de entender que la adhesión al Imperio de México es bajo estas condiciones y bases.
Las puestas por algunos ayuntamientos, respecto a que parte están virtualmente contenidas en las generales, y parte difieren entre si para que puedan sujetarse a una expresión positiva; se comunicarán al Gobierno de México para el efecto que convengan; y los ayuntamientos mismos, en su caso, podrán darlas como instrucción a sus diputados respectivos, sacándose testimonio por la Secretaría.
Respecto de aquellos ayuntamientos, que han contestado remitiéndose al Congreso que debía formarse, y no es posible ya verificarlo, porque la mayoría ha expresado su voluntad en sentido contrario, se les comunicará el resultado de ésta, en copia de esta acta.
Para conocimiento y noticia de todas las provincias, pueblos y ciudadanos, se formará un estado general de las contestaciones que se han recibido, distribuyéndolas por clases, conforme se hizo al tiempo de reconocerse en esta Junta, el cual se publicará posteriormente.
Se dará parte a la Soberana Junta Legislativa provisional, a la Regencia del Imperio y al Serenisimo señor Iturbide con esta acta, que se imprimirá, y circulará a todos los ayuntamientos, autoridades, tribunales, corporaciones y jefes, para su inteligencia y gobierno.
Gavino Gainza-El Marqués de Aycinena-Miguel de Larreynaga-José del Valle-Mariano de Beltranena-Manuel Antonio Molina-Antonio Rivera--José Mariano Calderón-José Antonio Alvarado-Angel María Candina-Eusebio Castillo-José Valdés-José Domingo Diéguez, (Secretario)-Mariano Gálvez, (Secretario).
[[Categoría:Anexión de la Capitanía General de Guatemala al Primer Imperio Mexicano]]
[[Categoría:Documentos de la Junta Provisional Consultiva]]
[[Categoría:Documentos de Gabino Gaínza]]
dmqcfjhcb181rv3753qaymq4obrkkwe
Página:El Capital (1898).pdf/101
102
417431
1653803
1651775
2026-05-14T12:56:35Z
Ignacio Rodríguez
3603
/* Problemático */ fracción
1653803
proofread-page
text/x-wiki
<noinclude><pagequality level="2" user="Ignacio Rodríguez" />{{cp||EL CAPITAL|95}}</noinclude>proceso, no pueden pasarse simultáneamente, sino sucederse en el tiempo. La medida de su duración está constituída, pues, por fracciones de tiempo ó, lo que es lo mismo, el número de traspasos de las mismas piezas de moneda en un tiempo dado mide la rapidez del curso de la moneda. El proceso de la circulación de aquellas cuatro mercancías dura, por ejemplo, un día. La suma de los precios que hay que realizar alcanza á 8 libras esterlinas; el número de traspasos de las mismas piezas de moneda durante el día es de 4, y la masa de la moneda circulante 2 libras esterlinas, ó, para un período determinado de tiempo del proceso de la circulación,
{{cel|1=Suma de los precios de las mercancías / Número de traspasos de las piezas de moneda del mismo nombre = Medida de la moneda que funciona como medio de circulación.}}
Esta ley es general. El proceso de la circulación de un país en un momento dado, comprende, por una parte, muchas ventas (ó compras) sueltas y simultáneas, que se pasan unas al lado de otras, ó metamorfosis parciales en que las mismas piezas de moneda sólo cambian una vez de lugar ó sólo tienen un traspaso, y, por la otra, muchas series más ó menos largas de metamorfosis que corren paralelas ó entrelazadas, en que las mismas piezas de moneda sufren traspasos más ó menos numerosos. El número total de traspasos de todas las piezas de moneda del mismo nombre que se encuentran en circulación da, sin embargo, el número medio de los traspasos de cada pieza de moneda ó la rapidez media del curso de la moneda. La masa de moneda que al principiar, por ejemplo, el proceso diario de la circulación se arroja en él, es naturalmente determinada por la suma de los precios de las mercancías que circulan simultáneamente las unas al lado de las otras. Pero dentro del proceso, una pieza de moneda es, por decirlo así, responsable de la otra. Si la una acelera su curso, paraliza el de la otra ó la pone por completo fuera de la esfera de la circulación, pues ésta puede absorber sólo una masa de oro que multiplicada por el número medio de traspasos de cada elemento aislado sea igual á la suma de los precios que hay que realizar. Si aumenta, pues, el número de traspasos de las piezas de moneda, disminuye su masa circulante. Si disminuye el número de sus traspasos, aumenta su masa. Como la masa de moneda que puede funcionar como medio de circulación, para una rapidez media dada, es también dada, basta, por ejemplo, poner en circulación una cantidad determinada de billetes de una libra para echar fuera de ella otros tantos soberanos, golpe artístico bien conocido de los Bancos.
Así como en el curso de la moneda en general no aparece sino el proceso de la circulación de las mercancías, es decir, su paso por metamorfosis opuestas, en la rapidez del curso de la moneda no apa-<noinclude></noinclude>
lhjtpaa26b3gmzm1lu8ddtbdi0uz4wn
Página:El Capital (1898).pdf/102
102
417432
1653804
1652873
2026-05-14T13:44:22Z
Ignacio Rodríguez
3603
/* EIS nivel 3 */
1653804
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Ignacio Rodríguez" />{{cp|96|CARLOS MARX|}}</noinclude>rece sino la rapidez de su cambio de forma, el continuo encadenamiento de las series de metamorfosis, la prisa de la asimilación y desasimilación, la pronta desaparición de las mercancías de la esfera de la circulación y su reemplazo igualmente rápido por otras mercancías. En la rapidez del curso de la moneda aparece, pues, la unidad fluida de las fases opuestas y complementarias, transformación de la figura de uso en la figura de valor y vuelta de la figura de valor á la figura de uso, ó de los dos procesos de la venta y de la compra. Por el contrario, en un curso más lento de la moneda aparece la separación é independencia recíproca de esos procesos, la detención del cambio de forma y, así, de la circulación. De qué proviene esa detención, no se puede ver, naturalmente, en la misma circulación. Ella no muestra sino el fenómeno mismo. La opinión popular, que en en el curso lento de la moneda la ve aparecer y desaparecer con menos frecuencia en todos los puntos de la circulación, se inclina á atribuir el fenómeno á la cantidad insuficiente de los medios de circulación<ref>«Siendo la moneda..... la medida común para comprar y vender, todo el que tiene algo que vender, y no encuentra comprador, tiende á pensar que la falta de moneda en el reino ó país es la causa de que no salga de sus mercancías, y por eso falta de moneda es el grito general; lo que es un gran error..... ¿Qué necesita esa gente que clama por dinero?.... El agricultor se queja..... piensa que si hubiera más dinero en el país obtendría un precio por sus productos. Parece, pues, que lo que le hace falta no es moneda, sino un precio por su grano y su ganado, que él vendería, pero no puede..... ¿por qué no puede obtener un precio?.... 1.º, ó hay demasiado grano y ganado en el pais, de modo que la mayor parte de los que van al mercado necesitan, como él, vender y pocos comprar; ó 2.º, falta la salida al Exterior por el transporte; ó 3.º, el consumo decae, como cuando, por razón de pobreza, la gente no gasta tanto como antes en sus casas, por lo cual no sería el aumento de moneda específica lo que mejoraria los productos del agricultor, sino la supresión de alguna de esas tres causas, que son en realidad las que deprimen el mercado..... El comerciante y el tendero carecen de dinero de la misma manera, es decir, necesitan salida para las mercancías en que comercian, porque el mercado les falta..... Una nación nunca prospera tanto como cuando las riquezas son lanzadas de mano en mano.» (Sir {{may|Dudley North}}, ''{{QID obra||Discourses upon Trade}}'', Londres, 1691, págs. 11-15 y sig.) Toda la charlatanería de ''{{lang|de|Herrenschwand}}'' se reduce á que las contradicciones resultantes de la naturaleza de la mercancía, y que aparecen en la circulación de las mercancías, pueden ser suprimidas aumentando los medios de circulación. De la ilusión popular que atribuye las interrupciones del proceso de la producción y de la circulación á de la circulación á la falta de medios de circulación, no se deduce absolutamente que, por el contrario, la falta real de medios de circulación, á consecuencia, por ejemplo, de chapucerías oficiales en la ''{{lang|en|regulation of currency}}'', no pueda, á su vez, ocasionar esas interrupciones.</ref>.
La cantidad total de moneda que funciona como medio de circulación en un momento dado es determinada, pues, de una parte, por la suma de los precios de las mercancías circulantes; de la otra, por la marcha más ó menos rápida de los procesos contrarios de su circulación, de cuya rapidez ó lentitud depende la porción de esa suma de precios que las mismas piezas de moneda pueden realizar. Pero la suma de los precios de las mercancías depende tanto de la masa como<noinclude></noinclude>
p4cdbthjvft59lhid0vkv43y383xqwl
Página:Cuerpo del derecho civil romano a doble texto (IA cuerpodelderechocivilromanoP1T1).pdf/279
102
417680
1653868
1653777
2026-05-15T09:16:03Z
Jhon Alex Sucasaca Yana
95956
1653868
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Jhon Alex Sucasaca Yana" />{{crv|213|Digesto.— Libro : Título}}
{{EncabezadoBilingüe|d}}</noinclude>que por la ley Regia, que se promulgó acorca de
su autoridad, el pueblo confiriese à él y para él
todo su imperio y potestad.
§ 1.—Así pues, lo que el Emperador estatuyó
por carta y resolución de un memorial, o cono-
ciendo en causa decretó, ò de plano decidió, ò
preceptuó por edicto, consta que es ley: estas son
las que vulgarmente llamamos Constituciones.
§ 2.—De estas, algunas son ciertamente perso-
nales y no se alegan para ejemplo; porque lo que
el Principe otorgó à alguien por sus méritos, ó si
impuso alguna pena, ó si sin ejemplar auxilió a
otro, no sale de la persona.
'''2.''' ULPIANO; ''Fideicomisos, libro IV''.—AI esta-
blecerse cosas nuevas, debe ser evidente la utili-
dad de separarse de aquel derecho, que por mu-
cho tiempo pareció justo.
'''3.''' JAVOLENO; ''Epistolas, libro XIII''.—El benefi-
cio del Emperador, que emana de su divina in-
dulgencia, debemos interpretarlo con la mayor
amplitud.
'''4.''' MODESTINO; ''Excusas, libro II''.—Las constitu-
ciones posteriores tienen más fuerza que las an-
teriores.
{{t3|TÍTULO V}}
{{c|DEL ESTADO DE LOS HOMBRES.|clase=titulo}}
'''1.''' GAYO; ''Instituciones, libro I''.—Todo el derecho
de que usamos, concierne ó à las personas, ó á
las cosas, ó á las acciones.
'''2.''' HERMOGENIANO; ''Epitome del Derecho, libro
I''.—Así pues, como todo derecho haya sido cons-
tituído por causa de los hombres, trataremos pri-
mero del estado de las personas, y después de las
demás cosas, siguiendo el orden del Edicto per
pétuo y aplicándoles titulos adecuados y conexos,
según lo permita la naturaleza de la cosa.
'''3,''' GAYO; ''Instituciones, libro I''.—Y así, la prin-
cipal división en el derecho de las personas es es-
ta: que todos los hombres son ó libres, ó esclavos.
'''4.''' FLORENTINO; ''Instituciones, libro IX''.—Liber-
tad es la natural facultad de hacer lo que place
a cada cual, salvo si algo se prohibe por la fuerza,
ó por la ley.
§1.—La esclavitud es una constitución del de-
recho de gentes, por la que alguno está sujeto
contra la naturaleza al dominio ageno.
§ 2.—Los siervos se llamaron asi, de que los cau-
dillos suelen vender à los cautivos, y por esta ra-
zón conservarlos y no matarlos.
§ 3.—Pero se les dice mancipia (esclavos), por-
que son cogidos de los enemigos con la mano.
'''5.''' MARCIANO; Instituciones, ''libro I''.—Y una sola
es ciertamente la condición de los esclavos; mas,
de los hombres libres, unos son ingénuos, y otros
libertinos.
§ 1.—Pero los esclavos se reducen á nuestro
_______________<noinclude>{{PieBilingüe|d}}</noinclude>
bfaeid4fy0svtp43y5n9kbgigoencha
1653869
1653868
2026-05-15T09:17:49Z
Jhon Alex Sucasaca Yana
95956
1653869
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Jhon Alex Sucasaca Yana" />{{crv|213|Digesto.— Libro : Título}}
{{EncabezadoBilingüe|d}}</noinclude>que por la ley Regia, que se promulgó acerca de
su autoridad, el pueblo confiriese à él y para él
todo su imperio y potestad.
§ 1.—Así pues, lo que el Emperador estatuyó
por carta y resolución de un memorial, o cono-
ciendo en causa decretó, ò de plano decidió, ò
preceptuó por edicto, consta que es ley: estas son
las que vulgarmente llamamos Constituciones.
§ 2.—De estas, algunas son ciertamente perso-
nales y no se alegan para ejemplo; porque lo que
el Principe otorgó à alguien por sus méritos, ó si
impuso alguna pena, ó si sin ejemplar auxilió a
otro, no sale de la persona.
'''2.''' ULPIANO; ''Fideicomisos, libro IV''.—AI esta-
blecerse cosas nuevas, debe ser evidente la utili-
dad de separarse de aquel derecho, que por mu-
cho tiempo pareció justo.
'''3.''' JAVOLENO; ''Epistolas, libro XIII''.—El benefi-
cio del Emperador, que emana de su divina in-
dulgencia, debemos interpretarlo con la mayor
amplitud.
'''4.''' MODESTINO; ''Excusas, libro II''.—Las constitu-
ciones posteriores tienen más fuerza que las an-
teriores.
{{t3|TÍTULO V}}
{{c|DEL ESTADO DE LOS HOMBRES.|clase=titulo}}
'''1.''' GAYO; ''Instituciones, libro I''.—Todo el derecho
de que usamos, concierne ó à las personas, ó á
las cosas, ó á las acciones.
'''2.''' HERMOGENIANO; ''Epitome del Derecho, libro
I''.—Así pues, como todo derecho haya sido cons-
tituído por causa de los hombres, trataremos pri-
mero del estado de las personas, y después de las
demás cosas, siguiendo el orden del Edicto per
pétuo y aplicándoles titulos adecuados y conexos,
según lo permita la naturaleza de la cosa.
'''3,''' GAYO; ''Instituciones, libro I''.—Y así, la prin-
cipal división en el derecho de las personas es es-
ta: que todos los hombres son ó libres, ó esclavos.
'''4.''' FLORENTINO; ''Instituciones, libro IX''.—Liber-
tad es la natural facultad de hacer lo que place
a cada cual, salvo si algo se prohibe por la fuerza,
ó por la ley.
§1.—La esclavitud es una constitución del de-
recho de gentes, por la que alguno está sujeto
contra la naturaleza al dominio ageno.
§ 2.—Los siervos se llamaron asi, de que los cau-
dillos suelen vender à los cautivos, y por esta ra-
zón conservarlos y no matarlos.
§ 3.—Pero se les dice mancipia (esclavos), por-
que son cogidos de los enemigos con la mano.
'''5.''' MARCIANO; Instituciones, ''libro I''.—Y una sola
es ciertamente la condición de los esclavos; mas,
de los hombres libres, unos son ingénuos, y otros
libertinos.
§ 1.—Pero los esclavos se reducen á nuestro
_______________<noinclude>{{PieBilingüe|d}}</noinclude>
ib9r1nmx6id6d3cbnycib46447q8v7t
Página:Cuerpo del derecho civil romano a doble texto (IA cuerpodelderechocivilromanoP1T1).pdf/280
102
417681
1653870
1652489
2026-05-15T09:42:25Z
Jhon Alex Sucasaca Yana
95956
1653870
proofread-page
text/x-wiki
<noinclude><pagequality level="1" user="Jhon Alex Sucasaca Yana" />{{crv|214|Digesto.— Libro : Título}}
{{EncabezadoBilingüe|d}}</noinclude>dominio ó por derecho civil, ó por el de gentes.
Por derecho civil, si alguno mayor de veinticinco
años consintió ser vendido para participar del
precio; por derecho de gentes son esclavos nues-
tros, los que son cogidos de los enemigos, ó los
que nacen de nuestras esclavas.
§ 2.—Son ingénuos, los que nacieron de madre
libre; porque basta que haya sido libre al tiempo
en que nace, aunque hubiese concebido esclava; y
por el contrario, si hubiere concebido libre y des-
pués pariese esclava, plugo que el que nace, nazca
libre. Y no importa, si concibió en justas nup-
cias, ó del vulgo, porque la calamidad de la madre
no debe perjudicar al que está en el vientre.
§ 3.—Por esto se pregunto: si una esclava em-
barazada fuese manumitida, y hubiere parido
después hecha otra vez esclava, o expulsada de la
ciudad, ¿paria un libre ó un esclavo? Y, sin em-
bargo, se aprobó como más recto que nace un li-
bre, y que basta al que está en el vientre haber
tenido madre libre aún en el tiempo intermedio.
'''6.''' GAYO; ''Instituciones, libro I''.—Son libertinos,
los que han sido manumitidos de justa esclavitud.
'''7.''' PAULO; ''De las porciones que se conceden á los
hijos de los condenados, libro único''.—El que está en
el útero es atendido lo mismo que si ya estuvie-
se entre las cosas humanas, siempre que se trata
de las conveniencias de su propio parto, aunque,
antes de nacer, en manera ninguna favorezca &
un tercero.
'''8.''' PAPINIANO; ''Cuestiones, libro III''.—El Empe
rador Tito Antonino resolvió por rescripto, que
no se perjudica el estado de los libres por el te-
nor de un documento mal concebido.
'''9.''' EL MISMO; ''Cuestiones, libro XXXI''.—En mu-
chos articulos de nuestro derecho es peor la con-
dición de las hembras, que la de los varones.
'''10.''' ULPIANO; ''Comentarios à Sabino, libro I''.—
Se pregunta, ¿A quién comparamos el hermafro
dita? juzgo que preferentemente debe ser estí-
mado como del sexo que en él prevalece.
'''11.''' PAULO; ''Respuestas, libro XVIII.'' — Paulo
respondió, que aquel que fué concebido viviendo
el padre é ignorando la unión de su hija, aunque
haya nacido después de la muerte del abuelo, no
se reputa ser hijo legitimo de aquel de quien fué
concebido.
'''12.''' EL MISMO; ''Respuestas, libro XIX''.—Está ya
recibido por razón de la autoridad del doctisimo
varón Hipócrates, que el nacer al séptimo mes es
parto perfecto; y por eso se ha de creer, que el
que de justas nupcias nació al séptimo mes, es
hijo legítimo.
'''13.''' HERMOGENIANO; ''Epitome del Derecho, li-
bro I''.—El esclavo abandonado por su señor en
una causa capital à la suerte del juicio, aunque
hubiere sido absuelto, no se hace libre.
'''14.''' PAULO; ''Sentencias, libro IV''.—No son hijos,
_______________<noinclude>{{PieBilingüe|d}}</noinclude>
mu54m9qd4g8gys83z2m9imjuypwxjiz
1653871
1653870
2026-05-15T09:46:32Z
Jhon Alex Sucasaca Yana
95956
1653871
proofread-page
text/x-wiki
<noinclude><pagequality level="1" user="Jhon Alex Sucasaca Yana" />{{crv|214|Digesto.— Libro : Título}}
{{EncabezadoBilingüe|d}}</noinclude>dominio ó por derecho civil, ó por el de gentes.
Por derecho civil, si alguno mayor de veinticinco
años consintió ser vendido para participar del
precio; por derecho de gentes son esclavos nues-
tros, los que son cogidos de los enemigos, ó los
que nacen de nuestras esclavas.
§ 2.—Son ingénuos, los que nacieron de madre
libre; porque basta que haya sido libre al tiempo
en que nace, aunque hubiese concebido esclava; y
por el contrario, si hubiere concebido libre y des-
pués pariese esclava, plugo que el que nace, nazca
libre. Y no importa, si concibió en justas nup-
cias, ó del vulgo, porque la calamidad de la madre
no debe perjudicar al que está en el vientre.
§ 3.—Por esto se pregunto: si una esclava em-
barazada fuese manumitida, y hubiere parido
después hecha otra vez esclava, o expulsada de la
ciudad, ¿paria un libre ó un esclavo? Y, sin em-
bargo, se aprobó como más recto que nace un li-
bre, y que basta al que está en el vientre haber
tenido madre libre aún en el tiempo intermedio.
'''6.''' GAYO; ''Instituciones, libro I''.—Son libertinos,
los que han sido manumitidos de justa esclavitud.
'''7.''' PAULO; ''De las porciones que se conceden á los
hijos de los condenados, libro único''.—El que está en
el útero es atendido lo mismo que si ya estuvie-
se entre las cosas humanas, siempre que se trata
de las conveniencias de su propio parto, aunque,
antes de nacer, en manera ninguna favorezca a
un tercero.
'''8.''' PAPINIANO; ''Cuestiones, libro III''.—El Empe
rador Tito Antonino resolvió por rescripto, que
no se perjudica el estado de los libres por el te-
nor de un documento mal concebido.
'''9.''' EL MISMO; ''Cuestiones, libro XXXI''.—En mu-
chos articulos de nuestro derecho es peor la con-
dición de las hembras, que la de los varones.
'''10.''' ULPIANO; ''Comentarios à Sabino, libro I''.—
Se pregunta, ¿A quién comparamos el hermafro
dita? juzgo que preferentemente debe ser estí-
mado como del sexo que en él prevalece.
'''11.''' PAULO; ''Respuestas, libro XVIII.'' — Paulo
respondió, que aquel que fué concebido viviendo
el padre é ignorando la unión de su hija, aunque
haya nacido después de la muerte del abuelo, no
se reputa ser hijo legitimo de aquel de quien fué
concebido.
'''12.''' EL MISMO; ''Respuestas, libro XIX''.—Está ya
recibido por razón de la autoridad del doctisimo
varón Hipócrates, que el nacer al séptimo mes es
parto perfecto; y por eso se ha de creer, que el
que de justas nupcias nació al séptimo mes, es
hijo legítimo.
'''13.''' HERMOGENIANO; ''Epitome del Derecho, li-
bro I''.—El esclavo abandonado por su señor en
una causa capital à la suerte del juicio, aunque
hubiere sido absuelto, no se hace libre.
'''14.''' PAULO; ''Sentencias, libro IV''.—No son hijos,
_______________<noinclude>{{PieBilingüe|d}}</noinclude>
e9ycsaipywy7n2d7uruc58bfyp4hkmt
Página:Cuerpo del derecho civil romano a doble texto (IA cuerpodelderechocivilromanoP1T1).pdf/974
102
418092
1653813
2026-05-14T14:27:00Z
Carlos Pérez 921
95864
/* No corregido */ Página creada con «TÍTULO II DE LA ADICCIÓN Á DIA [Véase Cód . IV. 51.] 1. PAULO; Comentarios à Sabino, libro V.—La adicción á dia se hace asi: «tén por comprado en cien aquel fundo, salvo si dentro de las próximas Ca- lendas de Enero hubiere ofrecido alguno mejor con- dición, por la que salga la cosa de poder del dueño». 2. ULPIANO; Comentarios à Sabino, libro XXVIII.—Cuando de un fundo se hace adicción á dia, dúdase si es pura la compra, pero se disuelve bajo…»
1653813
proofread-page
text/x-wiki
<noinclude><pagequality level="1" user="Carlos Pérez 921" />{{crv|906|Digesto.— Libro : Título}}
{{EncabezadoBilingüe|d}}</noinclude>TÍTULO II
DE LA ADICCIÓN Á DIA
[Véase Cód . IV. 51.]
1. PAULO; Comentarios à Sabino, libro V.—La
adicción á dia se hace asi: «tén por comprado en
cien aquel fundo, salvo si dentro de las próximas Ca-
lendas de Enero hubiere ofrecido alguno mejor con-
dición, por la que salga la cosa de poder del dueño».
2. ULPIANO; Comentarios à Sabino, libro
XXVIII.—Cuando de un fundo se hace adicción á
dia, dúdase si es pura la compra, pero se disuelve
bajo condición, ó si es más bien condicional la
compra. Y me parece más verdadero, que importa
saber qué se haya tratado; porque si verdadera-
mente se trató esto, que se disuelva habiéndose
ofrecido mejor condición, será pura la compra, la
cual se disuelve bajo condición; pero si se trató
esto, que se perfeccione la compra, si no se ofre-
ciera mejor condición, la compra será condicional.
§ 1.—Asi, pues, cuando según la distinción que
hemos hecho la venta es para, escribe Juliano, que
aquel á quien de la cosa se le hizo adicción á dia
puede usucapirla, y lucrarse con los frutos y acce-
siones, y que á él le corresponde el riesgo, si la
cosa hubiere perecido,
3. PAULO; Comentarios à Sabino , libro V.—
porque después de la destrucción de la cosa ya no
puede ofrecerse mejor condición.
4. ULPIANO; Comentarios á Sabino, libro
XXVIII.— Mas cuando la venta es condicional, di-
ce Pomponio, que no puede él usucapir, y que no
le pertenecen los frutos.
§ 1.—[5.] Pregunta el mismo Juliano en el libro
décimo quinto, si la cosa de que se hizo adicción á
día hubiere perecido, ó si la esclava hubiere falle-
cido, ¿podrá admitirse por razón del parto ó de los
frutos el aumento? Y niega que haya de admitirse
el aumento, porque no suele admitirse aumento
respecto de otra cosa que de la que fué vendida.
§ 2.—[6.] Escribe el mismo Juliano en el propio
libro, que si de dos esclavos vendidos en veinte, y
de los que se hizo adicción á dia, hubiere fallecido
uno, y después hubiere comprador del único que
queda, el cual ofreciera más de veinte, ¿se desisti-
rá del primer contrato? Y dice, que este caso es di-
ferente del caso del parto, y que por esto se desiste
en este caso de la primera compra, y se llega á la
segunda.
§ 3.—Pero también Marcelo escribe en el libro
quinto del Digesto, que vendido puramente un
fundo y habiéndose hecho de él adicción á día, si
se hubiera ofrecido mejor condición, la cosa deja de
estar en prenda, si el comprador hubiese dado en
prenda aquel fundo. De lo cual se colige, que el
comprador sería dueño en el tiempo intermedio;
porque de otro modo no existiria la prenda.
§ 4.—[7.] Escribió el mismo Juliano en el libro
octogésimo octavo del Digesto, que el que compró<noinclude>{{PieBilingüe|d}}</noinclude>
ilr54nnz3wp8xpyaiiz7skkszo2okjd
1653815
1653813
2026-05-14T14:36:43Z
Carlos Pérez 921
95864
1653815
proofread-page
text/x-wiki
<noinclude><pagequality level="1" user="Carlos Pérez 921" />{{crv|906|Digesto.— Libro : Título}}
{{EncabezadoBilingüe|d}}</noinclude><big><center>TÍTULO II</center></big>
<center>DE LA ADICCIÓN Á DIA</center>
<center>[Véase Cód . IV. 51.]</center>
<div style="text-indent:2em;">1. PAULO; Comentarios à Sabino, libro V.—La
adicción á dia se hace asi: «tén por comprado en
cien aquel fundo, salvo si dentro de las próximas Ca-
lendas de Enero hubiere ofrecido alguno mejor con-
dición, por la que salga la cosa de poder del dueño».</div>
2. ULPIANO; Comentarios à Sabino, libro
XXVIII.—Cuando de un fundo se hace adicción á
dia, dúdase si es pura la compra, pero se disuelve
bajo condición, ó si es más bien condicional la
compra. Y me parece más verdadero, que importa
saber qué se haya tratado; porque si verdadera-
mente se trató esto, que se disuelva habiéndose
ofrecido mejor condición, será pura la compra, la
cual se disuelve bajo condición; pero si se trató
esto, que se perfeccione la compra, si no se ofre-
ciera mejor condición, la compra será condicional.
§ 1.—Asi, pues, cuando según la distinción que
hemos hecho la venta es para, escribe Juliano, que
aquel á quien de la cosa se le hizo adicción á dia
puede usucapirla, y lucrarse con los frutos y acce-
siones, y que á él le corresponde el riesgo, si la
cosa hubiere perecido,
3. PAULO; Comentarios à Sabino , libro V.—
porque después de la destrucción de la cosa ya no
puede ofrecerse mejor condición.
4. ULPIANO; Comentarios á Sabino, libro
XXVIII.— Mas cuando la venta es condicional, di-
ce Pomponio, que no puede él usucapir, y que no
le pertenecen los frutos.
§ 1.—[5.] Pregunta el mismo Juliano en el libro
décimo quinto, si la cosa de que se hizo adicción á
día hubiere perecido, ó si la esclava hubiere falle-
cido, ¿podrá admitirse por razón del parto ó de los
frutos el aumento? Y niega que haya de admitirse
el aumento, porque no suele admitirse aumento
respecto de otra cosa que de la que fué vendida.
§ 2.—[6.] Escribe el mismo Juliano en el propio
libro, que si de dos esclavos vendidos en veinte, y
de los que se hizo adicción á dia, hubiere fallecido
uno, y después hubiere comprador del único que
queda, el cual ofreciera más de veinte, ¿se desisti-
rá del primer contrato? Y dice, que este caso es di-
ferente del caso del parto, y que por esto se desiste
en este caso de la primera compra, y se llega á la
segunda.
§ 3.—Pero también Marcelo escribe en el libro
quinto del Digesto, que vendido puramente un
fundo y habiéndose hecho de él adicción á día, si
se hubiera ofrecido mejor condición, la cosa deja de
estar en prenda, si el comprador hubiese dado en
prenda aquel fundo. De lo cual se colige, que el
comprador sería dueño en el tiempo intermedio;
porque de otro modo no existiria la prenda.
§ 4.—[7.] Escribió el mismo Juliano en el libro
octogésimo octavo del Digesto, que el que compró<noinclude>{{PieBilingüe|d}}</noinclude>
llkartwullfw4iamtaerbkhkuad2ecs
1653817
1653815
2026-05-14T14:45:16Z
Carlos Pérez 921
95864
1653817
proofread-page
text/x-wiki
<noinclude><pagequality level="1" user="Carlos Pérez 921" />{{crv|906|Digesto.— Libro : Título}}
{{EncabezadoBilingüe|d}}</noinclude><big><center>TÍTULO II</center></big>
<center>DE LA ADICCIÓN Á DIA/center>
<center>''[Véase Cód . IV. 51.]''</center>
<div style="text-indent:2em;">
1. PAULO; Comentarios à Sabino, libro V.—La
adicción á dia se hace asi: «tén por comprado en
cien aquel fundo, salvo si dentro de las próximas Ca-
lendas de Enero hubiere ofrecido alguno mejor con-
dición, por la que salga la cosa de poder del dueño».
</div>
2. ULPIANO; Comentarios à Sabino, libro
XXVIII.—Cuando de un fundo se hace adicción á
dia, dúdase si es pura la compra, pero se disuelve
bajo condición, ó si es más bien condicional la
compra. Y me parece más verdadero, que importa
saber qué se haya tratado; porque si verdadera-
mente se trató esto, que se disuelva habiéndose
ofrecido mejor condición, será pura la compra, la
cual se disuelve bajo condición; pero si se trató
esto, que se perfeccione la compra, si no se ofre-
ciera mejor condición, la compra será condicional.
§ 1.—Asi, pues, cuando según la distinción que
hemos hecho la venta es para, escribe Juliano, que
aquel á quien de la cosa se le hizo adicción á dia
puede usucapirla, y lucrarse con los frutos y acce-
siones, y que á él le corresponde el riesgo, si la
cosa hubiere perecido,
3. PAULO; Comentarios à Sabino , libro V.—
porque después de la destrucción de la cosa ya no
puede ofrecerse mejor condición.
4. ULPIANO; Comentarios á Sabino, libro
XXVIII.— Mas cuando la venta es condicional, di-
ce Pomponio, que no puede él usucapir, y que no
le pertenecen los frutos.
§ 1.—[5.] Pregunta el mismo Juliano en el libro
décimo quinto, si la cosa de que se hizo adicción á
día hubiere perecido, ó si la esclava hubiere falle-
cido, ¿podrá admitirse por razón del parto ó de los
frutos el aumento? Y niega que haya de admitirse
el aumento, porque no suele admitirse aumento
respecto de otra cosa que de la que fué vendida.
§ 2.—[6.] Escribe el mismo Juliano en el propio
libro, que si de dos esclavos vendidos en veinte, y
de los que se hizo adicción á dia, hubiere fallecido
uno, y después hubiere comprador del único que
queda, el cual ofreciera más de veinte, ¿se desisti-
rá del primer contrato? Y dice, que este caso es di-
ferente del caso del parto, y que por esto se desiste
en este caso de la primera compra, y se llega á la
segunda.
§ 3.—Pero también Marcelo escribe en el libro
quinto del Digesto, que vendido puramente un
fundo y habiéndose hecho de él adicción á día, si
se hubiera ofrecido mejor condición, la cosa deja de
estar en prenda, si el comprador hubiese dado en
prenda aquel fundo. De lo cual se colige, que el
comprador sería dueño en el tiempo intermedio;
porque de otro modo no existiria la prenda.
§ 4.—[7.] Escribió el mismo Juliano en el libro
octogésimo octavo del Digesto, que el que compró<noinclude>{{PieBilingüe|d}}</noinclude>
9huh2dxn9s6fdxmzq908pdngjsmyv4s
1653831
1653817
2026-05-14T15:49:12Z
Carlos Pérez 921
95864
1653831
proofread-page
text/x-wiki
<noinclude><pagequality level="1" user="Carlos Pérez 921" />{{crv|906|Digesto.— Libro : Título}}
{{EncabezadoBilingüe|d}}</noinclude><big><center>TÍTULO II</center></big>
<center>DE LA ADICCIÓN Á DIA/center>
<center>''[Véase Cód . IV. 51.]''</center>
1. PAULO; Comentarios à Sabino, libro V.—La
adicción á dia se hace asi: «tén por comprado en
cien aquel fundo, salvo si dentro de las próximas Ca-
lendas de Enero hubiere ofrecido alguno mejor con-
dición, por la que salga la cosa de poder del dueño».
2. ULPIANO; Comentarios à Sabino, libro
XXVIII.—Cuando de un fundo se hace adicción á
dia, dúdase si es pura la compra, pero se disuelve
bajo condición, ó si es más bien condicional la
compra. Y me parece más verdadero, que importa
saber qué se haya tratado; porque si verdadera-
mente se trató esto, que se disuelva habiéndose
ofrecido mejor condición, será pura la compra, la
cual se disuelve bajo condición; pero si se trató
esto, que se perfeccione la compra, si no se ofre-
ciera mejor condición, la compra será condicional.
§ 1.—Asi, pues, cuando según la distinción que
hemos hecho la venta es para, escribe Juliano, que
aquel á quien de la cosa se le hizo adicción á dia
puede usucapirla, y lucrarse con los frutos y acce-
siones, y que á él le corresponde el riesgo, si la
cosa hubiere perecido,
3. PAULO; Comentarios à Sabino , libro V.—
porque después de la destrucción de la cosa ya no
puede ofrecerse mejor condición.
4. ULPIANO; Comentarios á Sabino, libro
XXVIII.— Mas cuando la venta es condicional, di-
ce Pomponio, que no puede él usucapir, y que no
le pertenecen los frutos.
§ 1.—[5.] Pregunta el mismo Juliano en el libro
décimo quinto, si la cosa de que se hizo adicción á
día hubiere perecido, ó si la esclava hubiere falle-
cido, ¿podrá admitirse por razón del parto ó de los
frutos el aumento? Y niega que haya de admitirse
el aumento, porque no suele admitirse aumento
respecto de otra cosa que de la que fué vendida.
§ 2.—[6.] Escribe el mismo Juliano en el propio
libro, que si de dos esclavos vendidos en veinte, y
de los que se hizo adicción á dia, hubiere fallecido
uno, y después hubiere comprador del único que
queda, el cual ofreciera más de veinte, ¿se desisti-
rá del primer contrato? Y dice, que este caso es di-
ferente del caso del parto, y que por esto se desiste
en este caso de la primera compra, y se llega á la
segunda.
§ 3.—Pero también Marcelo escribe en el libro
quinto del Digesto, que vendido puramente un
fundo y habiéndose hecho de él adicción á día, si
se hubiera ofrecido mejor condición, la cosa deja de
estar en prenda, si el comprador hubiese dado en
prenda aquel fundo. De lo cual se colige, que el
comprador sería dueño en el tiempo intermedio;
porque de otro modo no existiria la prenda.
§ 4.—[7.] Escribió el mismo Juliano en el libro
octogésimo octavo del Digesto, que el que compró<noinclude>{{PieBilingüe|d}}</noinclude>
qedrj09u0zmiqucgkghfs2zplhmud1x
1653832
1653831
2026-05-14T15:51:38Z
Carlos Pérez 921
95864
1653832
proofread-page
text/x-wiki
<noinclude><pagequality level="1" user="Carlos Pérez 921" />{{crv|906|Digesto.— Libro : Título}}
{{EncabezadoBilingüe|d}}</noinclude><big><center>TÍTULO II</center></big>
<center>DE LA ADICCIÓN Á DIA</center>
<center>''[Véase Cód . IV. 51.]''</center>
1. PAULO; Comentarios à Sabino, libro V.—La
adicción á dia se hace asi: «tén por comprado en
cien aquel fundo, salvo si dentro de las próximas Ca-
lendas de Enero hubiere ofrecido alguno mejor con-
dición, por la que salga la cosa de poder del dueño».
2. ULPIANO; Comentarios à Sabino, libro
XXVIII.—Cuando de un fundo se hace adicción á
dia, dúdase si es pura la compra, pero se disuelve
bajo condición, ó si es más bien condicional la
compra. Y me parece más verdadero, que importa
saber qué se haya tratado; porque si verdadera-
mente se trató esto, que se disuelva habiéndose
ofrecido mejor condición, será pura la compra, la
cual se disuelve bajo condición; pero si se trató
esto, que se perfeccione la compra, si no se ofre-
ciera mejor condición, la compra será condicional.
§ 1.—Asi, pues, cuando según la distinción que
hemos hecho la venta es para, escribe Juliano, que
aquel á quien de la cosa se le hizo adicción á dia
puede usucapirla, y lucrarse con los frutos y acce-
siones, y que á él le corresponde el riesgo, si la
cosa hubiere perecido,
3. PAULO; Comentarios à Sabino , libro V.—
porque después de la destrucción de la cosa ya no
puede ofrecerse mejor condición.
4. ULPIANO; Comentarios á Sabino, libro
XXVIII.— Mas cuando la venta es condicional, di-
ce Pomponio, que no puede él usucapir, y que no
le pertenecen los frutos.
§ 1.—[5.] Pregunta el mismo Juliano en el libro
décimo quinto, si la cosa de que se hizo adicción á
día hubiere perecido, ó si la esclava hubiere falle-
cido, ¿podrá admitirse por razón del parto ó de los
frutos el aumento? Y niega que haya de admitirse
el aumento, porque no suele admitirse aumento
respecto de otra cosa que de la que fué vendida.
§ 2.—[6.] Escribe el mismo Juliano en el propio
libro, que si de dos esclavos vendidos en veinte, y
de los que se hizo adicción á dia, hubiere fallecido
uno, y después hubiere comprador del único que
queda, el cual ofreciera más de veinte, ¿se desisti-
rá del primer contrato? Y dice, que este caso es di-
ferente del caso del parto, y que por esto se desiste
en este caso de la primera compra, y se llega á la
segunda.
§ 3.—Pero también Marcelo escribe en el libro
quinto del Digesto, que vendido puramente un
fundo y habiéndose hecho de él adicción á día, si
se hubiera ofrecido mejor condición, la cosa deja de
estar en prenda, si el comprador hubiese dado en
prenda aquel fundo. De lo cual se colige, que el
comprador sería dueño en el tiempo intermedio;
porque de otro modo no existiria la prenda.
§ 4.—[7.] Escribió el mismo Juliano en el libro
octogésimo octavo del Digesto, que el que compró<noinclude>{{PieBilingüe|d}}</noinclude>
ggsjoj9z9wpu6mp8r07xvv4933lftgp
1653836
1653832
2026-05-14T16:00:18Z
Carlos Pérez 921
95864
1653836
proofread-page
text/x-wiki
<noinclude><pagequality level="1" user="Carlos Pérez 921" />{{crv|906|Digesto.— Libro : Título}}
{{EncabezadoBilingüe|d}}</noinclude><big><center>'''TÍTULO II'''</center></big>
<center>DE LA ADICCIÓN Á DIA</center>
<center>''[Véase Cód . IV. 51.]''</center>
'''1. PAULO'''; ''Comentarios à Sabino, libro V.—''La
adicción á dia se hace asi: «tén por comprado en
cien aquel fundo, salvo si dentro de las próximas Ca-
lendas de Enero hubiere ofrecido alguno mejor con-
dición, por la que salga la cosa de poder del dueño».
'''2. ULPIANO'''; ''Comentarios à Sabino, libro
XXVIII.—''Cuando de un fundo se hace adicción á
dia, dúdase si es pura la compra, pero se disuelve
bajo condición, ó si es más bien condicional la
compra. Y me parece más verdadero, que importa
saber qué se haya tratado; porque si verdadera-
mente se trató esto, que se disuelva habiéndose
ofrecido mejor condición, será pura la compra, la
cual se disuelve bajo condición; pero si se trató
esto, que se perfeccione la compra, si no se ofre-
ciera mejor condición, la compra será condicional.
§ 1.—Asi, pues, cuando según la distinción que
hemos hecho la venta es para, escribe Juliano, que
aquel á quien de la cosa se le hizo adicción á dia
puede usucapirla, y lucrarse con los frutos y acce-
siones, y que á él le corresponde el riesgo, si la
cosa hubiere perecido,
'''3. PAULO'''; ''Comentarios à Sabino , libro V.—''
porque después de la destrucción de la cosa ya no
puede ofrecerse mejor condición.
'''4. ULPIANO'''; ''Comentarios á Sabino, libro
XXVIII.—'' Mas cuando la venta es condicional, di-
ce Pomponio, que no puede él usucapir, y que no
le pertenecen los frutos.
§ 1.—[5.] Pregunta el mismo Juliano en el libro
décimo quinto, si la cosa de que se hizo adicción á
día hubiere perecido, ó si la esclava hubiere falle-
cido, ¿podrá admitirse por razón del parto ó de los
frutos el aumento? Y niega que haya de admitirse
el aumento, porque no suele admitirse aumento
respecto de otra cosa que de la que fué vendida.
§ 2.—[6.] Escribe el mismo Juliano en el propio
libro, que si de dos esclavos vendidos en veinte, y
de los que se hizo adicción á dia, hubiere fallecido
uno, y después hubiere comprador del único que
queda, el cual ofreciera más de veinte, ¿se desisti-
rá del primer contrato? Y dice, que este caso es di-
ferente del caso del parto, y que por esto se desiste
en este caso de la primera compra, y se llega á la
segunda.
§ 3.—Pero también Marcelo escribe en el libro
quinto del Digesto, que vendido puramente un
fundo y habiéndose hecho de él adicción á día, si
se hubiera ofrecido mejor condición, la cosa deja de
estar en prenda, si el comprador hubiese dado en
prenda aquel fundo. De lo cual se colige, que el
comprador sería dueño en el tiempo intermedio;
porque de otro modo no existiria la prenda.
§ 4.—[7.] Escribió el mismo Juliano en el libro
octogésimo octavo del Digesto, que el que compró<noinclude>{{PieBilingüe|d}}</noinclude>
9lm5f57a44wcaotbg97lqyjlbk9eb57
1653872
1653836
2026-05-15T11:20:22Z
Carlos Pérez 921
95864
1653872
proofread-page
text/x-wiki
<noinclude><pagequality level="1" user="Carlos Pérez 921" />{{crv|906|Digesto.— Libro : Título}}
{{EncabezadoBilingüe|d}}</noinclude><big><center>'''TÍTULO II'''</center></big>
<center>DE LA ADICCIÓN Á DIA</center>
<center>''[Véase Cód . IV. 51.]''</center>
'''1.''' PAULO; ''Comentarios à Sabino, libro V.—''La
adicción á dia se hace asi: «tén por comprado en
cien aquel fundo, salvo si dentro de las próximas Ca-
lendas de Enero hubiere ofrecido alguno mejor con-
dición, por la que salga la cosa de poder del dueño».
'''2.''' ULPIANO; ''Comentarios à Sabino, libro
XXVIII.—''Cuando de un fundo se hace adicción á
dia, dúdase si es pura la compra, pero se disuelve
bajo condición, ó si es más bien condicional la
compra. Y me parece más verdadero, que importa
saber qué se haya tratado; porque si verdadera-
mente se trató esto, que se disuelva habiéndose
ofrecido mejor condición, será pura la compra, la
cual se disuelve bajo condición; pero si se trató
esto, que se perfeccione la compra, si no se ofre-
ciera mejor condición, la compra será condicional.
§ 1.—Asi, pues, cuando según la distinción que
hemos hecho la venta es para, escribe Juliano, que
aquel á quien de la cosa se le hizo adicción á dia
puede usucapirla, y lucrarse con los frutos y acce-
siones, y que á él le corresponde el riesgo, si la
cosa hubiere perecido,
'''3.''' PAULO; ''Comentarios à Sabino , libro V.—''
porque después de la destrucción de la cosa ya no
puede ofrecerse mejor condición.
'''4.''' ULPIANO; ''Comentarios á Sabino, libro
XXVIII.—'' Mas cuando la venta es condicional, di-
ce Pomponio, que no puede él usucapir, y que no
le pertenecen los frutos.
§ 1.—[5.] Pregunta el mismo Juliano en el libro
décimo quinto, si la cosa de que se hizo adicción á
día hubiere perecido, ó si la esclava hubiere falle-
cido, ¿podrá admitirse por razón del parto ó de los
frutos el aumento? Y niega que haya de admitirse
el aumento, porque no suele admitirse aumento
respecto de otra cosa que de la que fué vendida.
§ 2.—[6.] Escribe el mismo Juliano en el propio
libro, que si de dos esclavos vendidos en veinte, y
de los que se hizo adicción á dia, hubiere fallecido
uno, y después hubiere comprador del único que
queda, el cual ofreciera más de veinte, ¿se desisti-
rá del primer contrato? Y dice, que este caso es di-
ferente del caso del parto, y que por esto se desiste
en este caso de la primera compra, y se llega á la
segunda.
§ 3.—Pero también Marcelo escribe en el libro
quinto del Digesto, que vendido puramente un
fundo y habiéndose hecho de él adicción á día, si
se hubiera ofrecido mejor condición, la cosa deja de
estar en prenda, si el comprador hubiese dado en
prenda aquel fundo. De lo cual se colige, que el
comprador sería dueño en el tiempo intermedio;
porque de otro modo no existiria la prenda.
§ 4.—[7.] Escribió el mismo Juliano en el libro
octogésimo octavo del Digesto, que el que compró<noinclude>{{PieBilingüe|d}}</noinclude>
cwxumotpz60ju5vxc2psp25amqf3yz2
Plantilla:Loop/doc
10
418093
1653823
2026-05-14T15:27:55Z
Ignacio Rodríguez
3603
Página creada con «{{Subpágina de documentación}} == Uso == {{demo|<nowiki>{{loop|6|abc}}</nowiki>}} <includeonly> <!-- Coloca las categorías de la plantilla a continuación y los interwikis en Wikidata --> </includeonly>»
1653823
wikitext
text/x-wiki
{{Subpágina de documentación}}
== Uso ==
{{demo|<nowiki>{{loop|6|abc}}</nowiki>}}
<includeonly>
<!-- Coloca las categorías de la plantilla a continuación y los interwikis en Wikidata -->
</includeonly>
0mm37s7s9s6oki24sngox69bjw2lo1l
1653824
1653823
2026-05-14T15:28:14Z
Ignacio Rodríguez
3603
1653824
wikitext
text/x-wiki
{{Subpágina de documentación}}
== Uso ==
{{demo|<nowiki>{{loop|6|abc }}</nowiki>}}
<includeonly>
<!-- Coloca las categorías de la plantilla a continuación y los interwikis en Wikidata -->
</includeonly>
777cje04v3p7yxkjfn7wlc6erhgvarg
Página:Actitud ética ante la guerra y la paz - bdh0000308582.pdf/29
102
418094
1653846
2026-05-14T20:15:40Z
Superzerocool
3910
/* Corregido */
1653846
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Superzerocool" /></noinclude>{{t3|II|sub=¿SE PUEDE SER MERO ESPECTADOR?}}
La guerra, la preocupación de esta tremenda guerra inacabable, llena casi por entero nuestra vida. Lo domina todo como una obsesión tenaz, a la manera de siniestra pesadilla. Todos aquellos castillos de ideales que edificáramos en atmósferas de ilusiones y de optimismos, en los tiempos de paz —¡que ahora, por una extraña perspectiva, nos parecen tan remotos !— unos se han desmoronado, otros se agrietan a toda prisa... sólo alguno se mantiene firme como roca, desafiando los embates de las olas furiosas, embravecidas.
Impónesenos nueva valoración ética de ideas, de doctrinas, de creencias, y, especialmente, de motivaciones de conducta. El choque trágico y sangriento, el estremecimiento mundial consiguiente, en plena vibración ahora, la nueva y extraña colocación de las cosas, el tronchar violento de tantos hilos espirituales que sostenían nuestra fe y nuestras esperanzas... todo nos ha obligado
a pararnos de repente: y con pararnos sólo, ya parece<noinclude></noinclude>
1mr3ukysy2ry353v8vqyfyv2euirngl
Página:Actitud ética ante la guerra y la paz - bdh0000308582.pdf/30
102
418095
1653848
2026-05-14T20:19:21Z
Superzerocool
3910
/* Corregido */
1653848
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Superzerocool" />{{CP|24|ADOLFO POSADA|}}</noinclude>como que se nos aclara la significación moral y práctica de muchas fórmulas y doctrinas, que acaso estimáramos a veces episódicas, y hasta meras "salidas" o genialidades de autor. En la general bancarrota, y mirando y remirando hacia atrás, no pocas de esas fórmulas y de esas doctrinas adquieren un valor representativo excepcional, constituyendo algunas verdadera cadena, sin ruptura, seguida, algo como los mojones indicadores de una senda reflexivamente trazada y abierta, y hábilmente construida por un genio director, con arte diabólico, para llevar por ella, con el mismo arte hasta el fin —¡1914!— a todo un pueblo ingenuo y entusiasta.
Bastaría recordar aquí, a manera de ejemplo, un nombre, hoy simbólico: el de Treitschke y su doctrina del Estado: "Der Staat ist Match": El Estado es fuerza, poder... ¡para la dominación! Flotando la teoría de Treitschke, antes de la guerra, en el pensamiento político alemán contemporáneo, como una doctrina entre tantas, se convierte, al producirse el choque, en una concepción inspiradora, para la acción, que sintetiza y resume todo un proceso ideológico generador de la gran catástrofe.
Suprimid la guerra, y Treitschke y tantos otros escritores de su significación y de sus tendencias, con sus fórmulas políticas y sus doctrinas del poder del Estado omnipotente y del superestado, quedarían como una de tantas manifestaciones del pensamiento humano, muy a propósito para despertar la curiosidad del historiador futuro.
Es todavía pronto, sin embargo, para adoptar actitudes críticas y lanzarse a interpretaciones de ideas y de hechos que resultarían temerarias. Más que nunca debe ser nuestro juicio "interino", que cuanto pasa tiene también<noinclude></noinclude>
f00mkzsiapd1izjg794r0dt3t3brm3s
Página:Actitud ética ante la guerra y la paz - bdh0000308582.pdf/31
102
418096
1653849
2026-05-14T20:23:16Z
Superzerocool
3910
/* Corregido */
1653849
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Superzerocool" />{{CP||ACTITUD ÉTICA ANTE LA GUERRA Y LA PAZ|25}}</noinclude>ese aire. Pero aun haciendo todo género de salvedades y de reservas, no es posible substraerse a las excitaciones del medio, ni vencer el influjo de la obsesión ambiente: y ningún interés ético superior aconseja semejante esfuerzo vano: antes por el contrario, debemos procurar vivir intensamente, con toda el alma, este gran momento de aflicción universal.
Y basta de preámbulo, innecesario quizá, para justificar estas reflexiones o cavilaciones, fragmentarias, sobre o alrededor de la guerra.
Adelante, pues.
¿Se puede... se "debe" ser "mero espectador" ante esta horrible y gigantesca contienda, que nos hace “vivir” la mayor catástrofe de la historia?
Según lo que se entienda por espectador. Leo en un diccionario: espectador —que asiste a un espectáculo público, o bien que mira con atención un objeto—. Un señor que se limite a asistir a este gran espectáculo —las naciones destrozándose furiosas— que nos han proporcionado los titulados directores y educadores de la humanidad más culta, apenas si se concibe, salvo que se trate de un marmolillo, con sus sentidos apagados o muertos. La posición digna del espectador, es decir, del que no es actor ni víctima, ante esta gran catástrofe, es la del que "mira con atención". Y es la única moralmente admisible y que elimina hasta la hipótesis del mero y simple espectador pasivo, que contempla la guerra y se queda tan fresco.
No; los hombres, vivan donde vivan, aunque geográficamente estén fuera y hasta lejos de la contienda sangrienta, al abrigo de las granadas de mano, de los gases asfixiantes, de los líquidos inflamables, de los fuegos de<noinclude></noinclude>
kynxu85evope0jl1r2fmmpl2bxg1tdo
Página:La Teogonia - bdh0000247820.pdf/1
102
418098
1653863
2026-05-15T01:53:47Z
~2026-29222-16
96218
/* No corregido */ Se creó una página vacía
1653863
proofread-page
text/x-wiki
<noinclude><pagequality level="1" user="186.153.138.238" /></noinclude><noinclude></noinclude>
eyx6o4qyvbyth8e19swgk44grlbqv1d