# 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
" print "" print "" } NR == 1{ titulo = $0 sub("#[[:blank:]]+","",titulo) #prefijo print "
después de headers y blockquotes print "" print "" 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 "
" } else if( bloque ) # si lo previo fue header o blockquote bloque = 0; else 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 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 "
" } } /^> /{ # blockquote if(!modo_pre){ sub(">[[:blank:]]+","" else if(modo_parrafo) print "" else if(modo_lista) print "" print "" print "" }",$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 "