appendContenido y nav

This commit is contained in:
sejo 2021-05-19 19:24:20 -05:00
parent 82b9944472
commit 7d9e6528b2
1 changed files with 46 additions and 24 deletions

View File

@ -5,6 +5,7 @@
# modo de uso: # modo de uso:
# awk -f gemtext2html.awk archivo.gmi > archivo.html # awk -f gemtext2html.awk archivo.gmi > archivo.html
# #
BEGIN{ BEGIN{
# para poder abrir y cerrar <ul>, <pre>, <p>: # para poder abrir y cerrar <ul>, <pre>, <p>:
modo_lista = 0 modo_lista = 0
@ -18,45 +19,59 @@ BEGIN{
print "<head>" print "<head>"
print "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />" print "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />"
print "<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>" print "<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>"
contenido = "<main>"
nav = "<nav><ul>"
} }
function appendContenido( t ){
contenido = contenido t
}
function appendNav( t ){
nav = nav t
}
NR == 1{ NR == 1{
titulo = $0 titulo = $0
sub("#[[:blank:]]+","",titulo) #prefijo sub("#[[:blank:]]+","",titulo) #prefijo
print "<title>"titulo" - codeVGA</title>" print "<title>"titulo"</title>"
print "</head>" print "</head>"
print "<body>" print "<body>"
print "<header>"
print "<h1>"titulo"</h1>"
print "</header>"
} }
$0 !~ /^(=>|```|#{1,3} |* |>|[[:blank:]]*$)/{ # líneas de texto (no "especiales") $0 !~ /^(=>|```|#{1,3} |* |>|[[:blank:]]*$)/{ # líneas de texto (no "especiales")
if(!modo_pre){ if(!modo_pre){
if(!modo_parrafo){ if(!modo_parrafo){
modo_parrafo = 1 modo_parrafo = 1
print "<p>" appendContenido( "<p>" )
} }
else # nueva línea en el mismo párrafo else # nueva línea en el mismo párrafo
print "<br/>" appendContenido( "<br/>" )
} }
print $0 appendContenido( $0 )
} }
/^[[:blank:]]*$/ { # línea vacía /^[[:blank:]]*$/ { # línea vacía
if( !modo_pre ) { if( !modo_pre ) {
if( modo_lista ){ # cierra la lista if( modo_lista ){ # cierra la lista
modo_lista = 0 modo_lista = 0
print "</ul>" appendContenido( "</ul>" )
} }
else if( modo_parrafo ){ # cierra el párrafo else if( modo_parrafo ){ # cierra el párrafo
modo_parrafo = 0 modo_parrafo = 0
print "</p>" appendContenido( "</p>" )
} }
else if( bloque ) # si lo previo fue header o blockquote else if( bloque ) # si lo previo fue header o blockquote
bloque = 0; bloque = 0;
else else
print "<br/>" appendContenido( "<br/>" )
} }
else else
print $0 appendContenido( $0 )
} }
@ -64,11 +79,11 @@ $0 !~ /^(=>|```|#{1,3} |* |>|[[:blank:]]*$)/{ # líneas de texto (no "especiales
if(!modo_pre){ if(!modo_pre){
if( modo_lista ){ # cierra la lista if( modo_lista ){ # cierra la lista
modo_lista = 0 modo_lista = 0
print "</ul>" appendContenido( "</ul>" )
} }
else if( modo_parrafo ){ # cierra el párrafo else if( modo_parrafo ){ # cierra el párrafo
modo_parrafo = 0 modo_parrafo = 0
print "</p>" appendContenido( "</p>" )
} }
# borra flecha del inicio # borra flecha del inicio
sub("^=>","",$0) sub("^=>","",$0)
@ -94,7 +109,7 @@ $0 !~ /^(=>|```|#{1,3} |* |>|[[:blank:]]*$)/{ # líneas de texto (no "especiales
$0="<a href='"$1"'>"texto"</a><br/>" $0="<a href='"$1"'>"texto"</a><br/>"
} }
} }
print $0 appendContenido( $0 )
} }
/^* /{ # lista /^* /{ # lista
@ -102,36 +117,36 @@ $0 !~ /^(=>|```|#{1,3} |* |>|[[:blank:]]*$)/{ # líneas de texto (no "especiales
if(!modo_lista){ # inicia la lista if(!modo_lista){ # inicia la lista
if(modo_parrafo){ if(modo_parrafo){
modo_parrafo = 0 modo_parrafo = 0
print "</p>" appendContenido( "</p>" )
} }
modo_lista = 1 modo_lista = 1
print "<ul>" appendContenido( "<ul>" )
} }
sub("*[[:blank:]]+","<li>",$0) sub("*[[:blank:]]+","<li>",$0)
sub("$","</li>",$0) sub("$","</li>",$0)
} }
print $0 appendContenido( $0 )
} }
/^```/{ # preformatted /^```/{ # preformatted
if(modo_pre){ if(modo_pre){
# cierra preformatted # cierra preformatted
modo_pre = 0 modo_pre = 0
print "</pre>" appendContenido( "</pre>" )
} }
else{ else{
if( modo_lista ){ # cierra la lista if( modo_lista ){ # cierra la lista
modo_lista = 0 modo_lista = 0
print "</ul>" appendContenido( "</ul>" )
} }
else if( modo_parrafo ){ # cierra el párrafo else if( modo_parrafo ){ # cierra el párrafo
modo_parrafo = 0 modo_parrafo = 0
print "</p>" appendContenido( "</p>" )
} }
# abre preformatted # abre preformatted
modo_pre = 1 modo_pre = 1
print "<pre>" appendContenido( "<pre>" )
} }
} }
@ -141,16 +156,16 @@ $0 !~ /^(=>|```|#{1,3} |* |>|[[:blank:]]*$)/{ # líneas de texto (no "especiales
sub("$","</blockquote>",$0) sub("$","</blockquote>",$0)
bloque = 1 bloque = 1
} }
print $0 appendContenido( $0 )
} }
/^# /{ # h1 /^# /{ # h1
if(!modo_pre){ if(!modo_pre){
sub("#[[:blank:]]+","<h1>",$0) #prefijo sub("#[[:blank:]]+","",$0) #prefijo
sub("$","</h1>",$0) #sufijo sub("$","",$0) #sufijo
bloque = 1 bloque = 1
} }
print $0 appendContenido( "<h1 id='"$0"'>"$0"</h1>" )
} }
/^## /{ # h2 /^## /{ # h2
@ -159,7 +174,7 @@ $0 !~ /^(=>|```|#{1,3} |* |>|[[:blank:]]*$)/{ # líneas de texto (no "especiales
sub("$","</h2>",$0) sub("$","</h2>",$0)
bloque = 1 bloque = 1
} }
print $0 appendContenido( $0 )
} }
/^### /{ # h3 /^### /{ # h3
@ -168,10 +183,13 @@ $0 !~ /^(=>|```|#{1,3} |* |>|[[:blank:]]*$)/{ # líneas de texto (no "especiales
sub("$","</h3>",$0) sub("$","</h3>",$0)
bloque = 1 bloque = 1
} }
print $0 appendContenido( $0 )
} }
END{ END{
print nav
print "</ul></nav>"
print contenido
# cierra tags que pudiero n haber quedado abiertas # cierra tags que pudiero n haber quedado abiertas
if(modo_pre) if(modo_pre)
print "</pre>" print "</pre>"
@ -180,6 +198,10 @@ END{
else if(modo_lista) else if(modo_lista)
print "</ul>" print "</ul>"
print "</main>"
print "<footer>"
# TODO footer
print "</footer>"
print "</body>" print "</body>"
print "</html>" print "</html>"
} }