From 82b994447214af187f05083f1fff33a78f92b1a8 Mon Sep 17 00:00:00 2001
From: sejo
Date: Wed, 19 May 2021 19:06:21 -0500
Subject: archivos iniciales
---
gemtext2html.awk | 185 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 185 insertions(+)
create mode 100644 gemtext2html.awk
(limited to 'gemtext2html.awk')
diff --git a/gemtext2html.awk b/gemtext2html.awk
new file mode 100644
index 0000000..fd45139
--- /dev/null
+++ b/gemtext2html.awk
@@ -0,0 +1,185 @@
+# gemtext2html
+# convierte un archivo en gemtext a html de acuerdo a la spec
+# excepción: enlaces a imagen (jpg, png, gif) se vuelven
+#
+# modo de uso:
+# awk -f gemtext2html.awk archivo.gmi > archivo.html
+#
+BEGIN{
+ # para poder abrir y cerrar , :
+ modo_lista = 0
+ modo_pre = 0
+ modo_parrafo = 0
+
+ bloque = 0 # para no agregar
después de headers y blockquotes
+
+ print ""
+ print ""
+ print "
"
+ print ""
+ print ""
+}
+NR == 1{
+ titulo = $0
+ sub("#[[:blank:]]+","",titulo) #prefijo
+ print ""titulo" - codeVGA"
+ print ""
+ print ""
+}
+
+$0 !~ /^(=>|```|#{1,3} |* |>|[[:blank:]]*$)/{ # líneas de texto (no "especiales")
+ if(!modo_pre){
+ if(!modo_parrafo){
+ modo_parrafo = 1
+ print ""
+ }
+ else # nueva línea en el mismo párrafo
+ print "
"
+
+ }
+ print $0
+}
+
+/^[[:blank:]]*$/ { # línea vacía
+ if( !modo_pre ) {
+ if( modo_lista ){ # cierra la lista
+ modo_lista = 0
+ print ""
+ }
+ else if( modo_parrafo ){ # cierra el párrafo
+ modo_parrafo = 0
+ print "
"
+ }
+ else if( bloque ) # si lo previo fue header o blockquote
+ bloque = 0;
+ else
+ print "
"
+ }
+ else
+ print $0
+
+}
+
+/^=>/{ # link
+ if(!modo_pre){
+ if( modo_lista ){ # cierra la lista
+ modo_lista = 0
+ print ""
+ }
+ else if( modo_parrafo ){ # cierra el párrafo
+ modo_parrafo = 0
+ print "
"
+ }
+ # borra flecha del inicio
+ sub("^=>","",$0)
+ # ahora $1 es el path, $2 a $NF el texto
+
+ # concatena todo el texto
+ texto = $2
+ for(i=3; i<=NF; i++){
+ texto = texto" "$i
+ }
+
+ # si el path es imagen
+ if( match($1, /(png|jpg|gif)$/) ){
+ # crea imagen
+ $0=""
+ }
+ # si el path no es imagen
+ else{
+ # convierte enlace de .gmi a .html !
+ sub(".gmi$",".html",$1)
+
+ # crea link
+ $0=""texto"
"
+ }
+ }
+ print $0
+}
+
+/^* /{ # lista
+ if(!modo_pre){
+ if(!modo_lista){ # inicia la lista
+ if(modo_parrafo){
+ modo_parrafo = 0
+ print ""
+ }
+ modo_lista = 1
+ print ""
+ }
+ sub("*[[:blank:]]+","- ",$0)
+ sub("$","
",$0)
+ }
+ print $0
+}
+
+/^```/{ # preformatted
+ if(modo_pre){
+ # cierra preformatted
+ modo_pre = 0
+ print ""
+ }
+ else{
+ if( modo_lista ){ # cierra la lista
+ modo_lista = 0
+ print "
"
+ }
+ else if( modo_parrafo ){ # cierra el párrafo
+ modo_parrafo = 0
+ print ""
+ }
+
+ # abre preformatted
+ modo_pre = 1
+ print ""
+ }
+}
+
+/^> /{ # blockquote
+ if(!modo_pre){
+ sub(">[[:blank:]]+","",$0)
+ sub("$","
",$0)
+ bloque = 1
+ }
+ print $0
+}
+
+/^# /{ # h1
+ if(!modo_pre){
+ sub("#[[:blank:]]+","",$0) #prefijo
+ sub("$","
",$0) #sufijo
+ bloque = 1
+ }
+ print $0
+}
+
+/^## /{ # h2
+ if(!modo_pre){
+ sub("##[[:blank:]]+","",$0)
+ sub("$","
",$0)
+ bloque = 1
+ }
+ print $0
+}
+
+/^### /{ # h3
+ if(!modo_pre){
+ sub("###[[:blank:]]+","",$0)
+ sub("$","
",$0)
+ bloque = 1
+ }
+ print $0
+}
+
+END{
+ # cierra tags que pudiero n haber quedado abiertas
+ if(modo_pre)
+ print "
"
+ else if(modo_parrafo)
+ print ""
+ else if(modo_lista)
+ print ""
+
+ print ""
+ print ""
+}
--
cgit v1.2.3