Administro un sitio web personal y edito las páginas web a mano. Como no tengo muchas páginas en mi sitio, esto funciona bien para mí, permitiéndome "rascarme la picazón" de ingresar al código del sitio.
La terminal de Linux
- Los 7 mejores emuladores de terminal para Linux
- 10 herramientas de línea de comandos para el análisis de datos en Linux
- Descargar ahora:hoja de referencia de SSH
- Hoja de trucos de comandos avanzados de Linux
- Tutoriales de línea de comandos de Linux
Cuando actualicé el diseño de mi sitio web recientemente, decidí convertir todas las comillas simples en "comillas tipográficas" o comillas que se parecen a las que se usan en el material impreso:"" en lugar de "".
Editar todas las citas a mano llevaría demasiado tiempo, así que decidí automatizar el proceso de convertir las citas en todos mis archivos HTML. Pero hacerlo a través de un script o programa requiere algo de inteligencia. El script necesita saber cuándo convertir una comilla simple en una comilla tipográfica y qué comillas usar.
Puede utilizar diferentes métodos para convertir cotizaciones. Greg Pittman escribió un script de Python para corregir comillas tipográficas en el texto. Escribí el mío en GNU awk (gawk).
Obtenga nuestra hoja de trucos de awk. Descarga gratuita.
Para empezar, escribí una función gawk simple para evaluar un solo carácter. Si ese carácter es una comilla, la función determina si debe generar una comilla simple o una comilla tipográfica. La función busca el carácter anterior; si el carácter anterior es un espacio, la función genera una comilla tipográfica izquierda. De lo contrario, la función genera una comilla tipográfica correcta. El script hace lo mismo con las comillas simples.
function smartquote (char, prevchar) {
# print smart quotes depending on the previous character
# otherwise just print the character as-is
if (prevchar ~ /\s/) {
# prev char is a space
if (char == "'") {
printf("‘");
}
else if (char == "\"") {
printf("“");
}
else {
printf("%c", char);
}
}
else {
# prev char is not a space
if (char == "'") {
printf("’");
}
else if (char == "\"") {
printf("”");
}
else {
printf("%c", char);
}
}
}
Con esa función, el cuerpo del script gawk procesa el archivo de entrada HTML carácter por carácter. El script imprime todo el texto palabra por palabra cuando está dentro de una etiqueta HTML (por ejemplo, <html lang="en">
. Fuera de cualquier etiqueta HTML, el script usa smartquote()
Función para imprimir texto. La smartquote()
hace el trabajo de evaluar cuándo imprimir comillas simples o comillas tipográficas.
function smartquote (char, prevchar) {
...
}
BEGIN {htmltag = 0}
{
# for each line, scan one letter at a time:
linelen = length($0);
prev = "\n";
for (i = 1; i <= linelen; i++) {
char = substr($0, i, 1);
if (char == "<") {
htmltag = 1;
}
if (htmltag == 1) {
printf("%c", char);
}
else {
smartquote(char, prev);
prev = char;
}
if (char == ">") {
htmltag = 0;
}
}
# add trailing newline at end of each line
printf ("\n");
}
He aquí un ejemplo:
gawk -f quotes.awk test.html > test2.html
Entrada de muestra:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Test page</title>
<link rel="stylesheet" type="text/css" href="https://opensource.com/test.css" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width" />
</head>
<body>
<h1><a href="https://opensource.com/"><img src="https://opensource.com/logo.png" alt="Website logo" /></a></h1>
<p>"Hi there!"</p>
<p>It's and its.</p>
</body>
</html>
Salida de muestra:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Test page</title>
<link rel="stylesheet" type="text/css" href="https://opensource.com/test.css" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width" />
</head>
<body>
<h1><a href="https://opensource.com/"><img src="https://opensource.com/logo.png" alt="Website logo" /></a></h1>
<p>“Hi there!”</p>
<p>It’s and its.</p>
</body>
</html>