Spravuji osobní webové stránky a upravuji webové stránky ručně. Vzhledem k tomu, že na svém webu nemám mnoho stránek, funguje to pro mě dobře, protože mi to umožňuje "poškrábat se" při vstupu do kódu webu.
Linuxový terminál
- 7 nejlepších emulátorů terminálu pro Linux
- 10 nástrojů příkazového řádku pro analýzu dat v systému Linux
- Stáhnout nyní:SSH cheat sheet
- Cheat sheet pro pokročilé příkazy systému Linux
- Výukové programy příkazového řádku systému Linux
Když jsem nedávno aktualizoval design svých webových stránek, rozhodl jsem se přeměnit všechny prosté uvozovky na „chytré uvozovky“ nebo uvozovky, které vypadají jako ty použité v tištěných materiálech:„“ místo „“.
Ruční úprava všech uvozovek by zabrala příliš dlouho, proto jsem se rozhodl zautomatizovat proces převodu uvozovek ve všech mých HTML souborech. Ale dělat to pomocí skriptu nebo programu vyžaduje určitou inteligenci. Skript potřebuje vědět, kdy převést prostou nabídku na inteligentní nabídku a kterou nabídku použít.
K převodu nabídek můžete použít různé metody. Greg Pittman napsal skript Python pro opravu chytrých uvozovek v textu. Napsal jsem svůj v GNU awk (gawk).
Získejte náš awk cheat sheet. Zdarma ke stažení.
Pro začátek jsem napsal jednoduchou funkci gawk pro vyhodnocení jednoho znaku. Pokud je tento znak uvozovkou, funkce určí, zda má vydat obyčejnou uvozovku nebo inteligentní uvozovku. Funkce se podívá na předchozí znak; pokud je předchozí znak mezera, funkce vypíše levou inteligentní uvozovku. V opačném případě funkce vydá správnou inteligentní nabídku. Skript dělá totéž pro jednoduché uvozovky.
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);
}
}
}
Pomocí této funkce tělo skriptu gawk zpracovává vstupní soubor HTML znak po znaku. Skript vytiskne veškerý text doslovně, když je uvnitř značky HTML (například <html lang="en">
. Mimo jakékoli HTML značky používá skript smartquote()
funkce pro tisk textu. smartquote()
Funkce vyhodnocuje, kdy se mají vytisknout jednoduché uvozovky nebo chytré uvozovky.
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");
}
Zde je příklad:
gawk -f quotes.awk test.html > test2.html
Ukázkový vstup:
<!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>
Ukázkový výstup:
<!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>