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 " + } + 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=""texto"" + } + # 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 "" + } + 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