From 08b7927bc5c7399e72bddf2af85505841495fb1d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?=
Date: Sun, 8 Oct 2017 12:25:18 +0200
Subject: [PATCH] use html minifier from npm, optimize help page size
---
base.php | 17 +++++----
compile_html.php | 15 ++++++--
package.json | 6 ++-
pages/help/charsets.php | 24 +++++++++---
pages/help/cmd_d2d.php | 2 +-
yarn.lock | 81 ++++++++++++++++++++++++++++++++++++++---
6 files changed, 121 insertions(+), 24 deletions(-)
diff --git a/base.php b/base.php
index d62edbe..e146a61 100644
--- a/base.php
+++ b/base.php
@@ -151,7 +151,8 @@ if (!function_exists('load_esp_charsets')) {
if (! file_exists($chsf)) {
return [
'!! ERROR: `../user/character_sets.h` not found !!' => [
- ['65', 'A', '&'],
+ 'start' => 65,
+ 'chars' => ['&'],
],
];
}
@@ -189,13 +190,15 @@ if (!function_exists('load_esp_charsets')) {
$v = intval($v);
}
$ascii = $start+$j;
- $table[] = [
- $ascii,
- chr($ascii),
- $literal ? $v : utf8($v==0? $ascii :$v),
- ];
+ $table[] = $literal ? $v : utf8($v==0? $ascii :$v);
}
- $cps[$name] = $table;
+
+ $obj = [
+ 'start' => $start,
+ 'chars' => $table,
+ ];
+
+ $cps[$name] = $obj;
}
return $cps;
}
diff --git a/compile_html.php b/compile_html.php
index 099011a..f1763d0 100755
--- a/compile_html.php
+++ b/compile_html.php
@@ -63,10 +63,17 @@ foreach($_pages as $_k => $p) {
if (ESP_PROD) {
$tmpfile = tempnam('/tmp', 'espterm').'.html';
file_put_contents($tmpfile, $s);
- // using https://github.com/tdewolff/minify
- system('minify --html-keep-default-attrvals '.
- '-o '.escapeshellarg($outputPath).' '.
- ''.escapeshellarg($tmpfile), $rv);
+ system('npm run html-minifier --'.
+ ' --remove-optional-tags'.
+ ' --remove-script-type-attributes'.
+ ' --remove-style-link-type-attributes'.
+ ' --remove-comments'.
+ ' --collapse-whitespace'.
+ ' --collapse-boolean-attributes'.
+ ' --html5'.
+ ' --max-line-length 120'.
+ ' -o '.escapeshellarg($outputPath).
+ ' '.escapeshellarg($tmpfile), $rv);
// fallback if minify is not installed
if (!file_exists($outputPath)) file_put_contents($outputPath, $s);
diff --git a/package.json b/package.json
index 33a779f..31cd4d8 100644
--- a/package.json
+++ b/package.json
@@ -10,10 +10,12 @@
"babel-preset-minify": "^0.2.0",
"node-sass": "^4.5.3",
"standard": "^10.0.3",
- "webpack": "^3.6.0"
+ "webpack": "^3.6.0",
+ "html-minifier": "^3.5.5"
},
"scripts": {
"webpack": "webpack --display-modules $@",
- "sass": "node-sass $@"
+ "sass": "node-sass $@",
+ "html-minifier": "html-minifier $@"
}
}
diff --git a/pages/help/charsets.php b/pages/help/charsets.php
index da28fa1..3f2451c 100644
--- a/pages/help/charsets.php
+++ b/pages/help/charsets.php
@@ -30,16 +30,30 @@
stays unchanged.
+
+
$cp) {
echo "Codepage `$name`
\n";
echo '';
- foreach($cp as $point) {
- $dis = $point[1]==$point[2]?' class="none"' : '';
- echo "
$point[0]$point[1]$point[2]
";
- }
- echo '
';
+
+ $t = implode("\x01", $cp['chars']);
+ $t = json_encode($t, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
+ $t = str_replace('\u0001', " ", $t); // space is never included
+ $t = htmlspecialchars($t,ENT_HTML5);
+
+ echo '';
}
?>
diff --git a/pages/help/cmd_d2d.php b/pages/help/cmd_d2d.php
index 65c918a..739f532 100644
--- a/pages/help/cmd_d2d.php
+++ b/pages/help/cmd_d2d.php
@@ -10,7 +10,7 @@
Networking commands use the format `\e^...\a`, a Privacy Message (PM).
PM is similar to OSC, which uses `]` in place of `^`. The PM payload (text between `\e^` and `\a`)
- must be shorter than 256 bytes, and should not contain any control characters (ASCII < 32).
+ must be shorter than 256 bytes, and should not contain any control characters (ASCII < 32).
Device-to-device Messaging
diff --git a/yarn.lock b/yarn.lock
index 4d26b7e..14dcfbe 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1007,6 +1007,13 @@ callsites@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
+camel-case@3.0.x:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
+ dependencies:
+ no-case "^2.2.0"
+ upper-case "^1.1.1"
+
camelcase-keys@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
@@ -1081,6 +1088,12 @@ circular-json@^0.3.1:
version "0.3.3"
resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
+clean-css@4.1.x:
+ version "4.1.9"
+ resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301"
+ dependencies:
+ source-map "0.5.x"
+
cli-cursor@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
@@ -1121,7 +1134,7 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
dependencies:
delayed-stream "~1.0.0"
-commander@^2.11.0:
+commander@2.11.x, commander@^2.11.0, commander@~2.11.0:
version "2.11.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
@@ -1991,6 +2004,10 @@ hawk@~3.1.3:
hoek "2.x.x"
sntp "1.x.x"
+he@1.1.x:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
+
hmac-drbg@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
@@ -2014,6 +2031,19 @@ hosted-git-info@^2.1.4:
version "2.5.0"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
+html-minifier@^3.5.5:
+ version "3.5.5"
+ resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.5.tgz#3bdc9427e638bbe3dbde96c0eb988b044f02739e"
+ dependencies:
+ camel-case "3.0.x"
+ clean-css "4.1.x"
+ commander "2.11.x"
+ he "1.1.x"
+ ncname "1.0.x"
+ param-case "2.1.x"
+ relateurl "0.2.x"
+ uglify-js "3.1.x"
+
http-signature@~1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
@@ -2456,6 +2486,10 @@ loud-rejection@^1.0.0:
currently-unhandled "^0.4.1"
signal-exit "^3.0.0"
+lower-case@^1.1.1:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
+
lru-cache@^4.0.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
@@ -2591,6 +2625,18 @@ natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ncname@1.0.x:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c"
+ dependencies:
+ xml-char-classes "^1.0.0"
+
+no-case@^2.2.0:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
+ dependencies:
+ lower-case "^1.1.1"
+
node-gyp@^3.3.1:
version "3.6.2"
resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60"
@@ -2833,6 +2879,12 @@ pako@~0.2.0:
version "0.2.9"
resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
+param-case@2.1.x:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
+ dependencies:
+ no-case "^2.2.0"
+
parse-asn1@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712"
@@ -3167,6 +3219,10 @@ regjsparser@^0.1.4:
dependencies:
jsesc "~0.5.0"
+relateurl@0.2.x:
+ version "0.2.7"
+ resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
+
remove-trailing-separator@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
@@ -3375,16 +3431,16 @@ source-map-support@^0.4.15:
dependencies:
source-map "^0.5.6"
+source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+
source-map@^0.4.2:
version "0.4.4"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
dependencies:
amdefine ">=0.0.4"
-source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-
spdx-correct@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
@@ -3664,6 +3720,13 @@ typedarray@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+uglify-js@3.1.x:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.3.tgz#d61f0453b4718cab01581f3162aa90bab7520b42"
+ dependencies:
+ commander "~2.11.0"
+ source-map "~0.5.1"
+
uglify-js@^2.8.29:
version "2.8.29"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
@@ -3693,6 +3756,10 @@ uniq@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
+upper-case@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
+
url@^0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
@@ -3842,6 +3909,10 @@ write@^0.2.1:
dependencies:
mkdirp "^0.5.1"
+xml-char-classes@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d"
+
xtend@^4.0.0, xtend@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"