hyperbuild 0.0.44 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +57 -17
- data/lib/linux-ruby2.5 +0 -0
- data/lib/linux-ruby2.6 +0 -0
- data/lib/linux-ruby2.7 +0 -0
- data/lib/macos-ruby2.5 +0 -0
- data/lib/macos-ruby2.6 +0 -0
- data/lib/macos-ruby2.7 +0 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1caffe6030b630477a348d3ec79ff73b6f67b1abbab3caff22a7cba2252da378
|
|
4
|
+
data.tar.gz: 29c61e146de8f1ca6084879d6dbf50168fbc9cf7cd5019f22699df3a2f2bf751
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 13bb7e4921171a136092018227b8b77a3d64599844c19cc7f6e835f9f47a3b5776660c49c13bffadbc68409b10fb7d6eb559f6c650f152d67f18e2650f1e9db2
|
|
7
|
+
data.tar.gz: 1e0b9c28914954a37a2dabc64544f876c7ab718408a8942d5aeff5781e4625002bb730e9707a768e5aca0f28b0fa9ca83397b5cb9b3154cfcf3c1b53b7d74941
|
data/README.md
CHANGED
|
@@ -15,9 +15,9 @@ Available as:
|
|
|
15
15
|
|
|
16
16
|
## Performance
|
|
17
17
|
|
|
18
|
-
Speed and effectiveness of Node.js version compared to [html-minfier](https://github.com/kangax/html-minifier) and [minimize](https://github.com/Swaagie/minimize). See [bench](./bench) folder for more details.
|
|
18
|
+
Speed and effectiveness of Node.js version compared to [html-minfier](https://github.com/kangax/html-minifier) and [minimize](https://github.com/Swaagie/minimize), run on popular already-minified web pages. See [bench](./bench) folder for more details.
|
|
19
19
|
|
|
20
|
-
<img width="435" alt="Chart showing speed of HTML minifiers" src="https://wilsonl.in/hyperbuild/bench/0.
|
|
20
|
+
<img width="435" alt="Chart showing speed of HTML minifiers" src="https://wilsonl.in/hyperbuild/bench/0.1.1/average-speeds.png"> <img width="435" alt="Chart showing effectiveness of HTML minifiers" src="https://wilsonl.in/hyperbuild/bench/0.1.1/average-sizes.png">
|
|
21
21
|
|
|
22
22
|
## Usage
|
|
23
23
|
|
|
@@ -25,13 +25,11 @@ Speed and effectiveness of Node.js version compared to [html-minfier](https://gi
|
|
|
25
25
|
|
|
26
26
|
Precompiled binaries are available for x86-64 Windows, macOS, and Linux.
|
|
27
27
|
|
|
28
|
-
To compile and install from source, run `cargo install hyperbuild`, which requires [Rust](https://www.rust-lang.org/tools/install).
|
|
29
|
-
|
|
30
28
|
##### Get
|
|
31
29
|
|
|
32
|
-
[Windows](https://wilsonl.in/hyperbuild/bin/0.
|
|
33
|
-
[macOS](https://wilsonl.in/hyperbuild/bin/0.
|
|
34
|
-
[Linux](https://wilsonl.in/hyperbuild/bin/0.
|
|
30
|
+
[Windows](https://wilsonl.in/hyperbuild/bin/0.1.1-windows-x86_64.exe) |
|
|
31
|
+
[macOS](https://wilsonl.in/hyperbuild/bin/0.1.1-macos-x86_64) |
|
|
32
|
+
[Linux](https://wilsonl.in/hyperbuild/bin/0.1.1-linux-x86_64)
|
|
35
33
|
|
|
36
34
|
##### Use
|
|
37
35
|
|
|
@@ -48,7 +46,7 @@ hyperbuild --src /path/to/src.html --out /path/to/output.min.html
|
|
|
48
46
|
|
|
49
47
|
```toml
|
|
50
48
|
[dependencies]
|
|
51
|
-
hyperbuild = "0.
|
|
49
|
+
hyperbuild = "0.1.1"
|
|
52
50
|
```
|
|
53
51
|
|
|
54
52
|
##### Use
|
|
@@ -58,9 +56,34 @@ use hyperbuild::hyperbuild;
|
|
|
58
56
|
|
|
59
57
|
fn main() {
|
|
60
58
|
let mut code = b"<p> Hello, world! </p>".to_vec();
|
|
59
|
+
|
|
60
|
+
// `hyperbuild` minifies a slice in-place and returns the new minified length, but leaves any original code after the minified code intact.
|
|
61
61
|
match hyperbuild(&mut code) {
|
|
62
62
|
Ok(minified_len) => {}
|
|
63
|
-
Err((error_type,
|
|
63
|
+
Err((error_type, error_position)) => {}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// `hyperbuild_copy` creates a vector copy containing only minified code instead of minifying in-place.
|
|
67
|
+
match hyperbuild_copy(&code) {
|
|
68
|
+
Ok(minified) => {}
|
|
69
|
+
Err((error_type, error_position)) => {}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// `hyperbuild_truncate` minifies a vector in-place, and then truncates the vector to the new minified length.
|
|
73
|
+
match hyperbuild_truncate(&mut code) {
|
|
74
|
+
Ok(()) => {}
|
|
75
|
+
Err((error_type, error_position)) => {}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// `hyperbuild_friendly_error` is identical to `hyperbuild` except the error is a FriendlyError instead.
|
|
79
|
+
// `code_context` is a string of a visual representation of the source code with line numbers and position markers to aid in debugging syntax issues, and should be printed.
|
|
80
|
+
match hyperbuild_friendly_error(&mut code) {
|
|
81
|
+
Ok(minified_len) => {}
|
|
82
|
+
Err(FriendlyError { position, message, code_context }) => {
|
|
83
|
+
eprintln!("Failed at character {}:", position);
|
|
84
|
+
eprintln!("{}", message);
|
|
85
|
+
eprintln!("{}", code_context);
|
|
86
|
+
}
|
|
64
87
|
};
|
|
65
88
|
}
|
|
66
89
|
```
|
|
@@ -92,14 +115,20 @@ yarn add hyperbuild
|
|
|
92
115
|
const hyperbuild = require("hyperbuild");
|
|
93
116
|
|
|
94
117
|
const minified = hyperbuild.minify("<p> Hello, world! </p>");
|
|
118
|
+
|
|
119
|
+
// Alternatively, minify in place to avoid copying.
|
|
120
|
+
const source = Buffer.from("<p> Hello, world! </p>");
|
|
121
|
+
hyperbuild.minifyInPlace(source);
|
|
95
122
|
```
|
|
96
123
|
|
|
97
124
|
hyperbuild is also available for TypeScript:
|
|
98
125
|
|
|
99
126
|
```ts
|
|
100
127
|
import * as hyperbuild from "hyperbuild";
|
|
128
|
+
import * as fs from "fs";
|
|
101
129
|
|
|
102
130
|
const minified = hyperbuild.minify("<p> Hello, world! </p>");
|
|
131
|
+
hyperbuild.minifyInPlace(fs.readFileSync("source.html"));
|
|
103
132
|
```
|
|
104
133
|
|
|
105
134
|
</details>
|
|
@@ -117,7 +146,7 @@ Add as a Maven dependency:
|
|
|
117
146
|
<dependency>
|
|
118
147
|
<groupId>in.wilsonl.hyperbuild</groupId>
|
|
119
148
|
<artifactId>hyperbuild</artifactId>
|
|
120
|
-
<version>0.
|
|
149
|
+
<version>0.1.1</version>
|
|
121
150
|
</dependency>
|
|
122
151
|
```
|
|
123
152
|
|
|
@@ -126,11 +155,15 @@ Add as a Maven dependency:
|
|
|
126
155
|
```java
|
|
127
156
|
import in.wilsonl.hyperbuild.Hyperbuild;
|
|
128
157
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
158
|
+
try {
|
|
159
|
+
String minified = Hyperbuild.minify("<p> Hello, world! </p>");
|
|
160
|
+
} catch (Hyperbuild.SyntaxException e) {
|
|
161
|
+
System.err.println(e.getMessage());
|
|
133
162
|
}
|
|
163
|
+
|
|
164
|
+
// Alternatively, minify in place:
|
|
165
|
+
assert source instanceof ByteBuffer && source.isDirect();
|
|
166
|
+
Hyperbuild.minifyInPlace(source);
|
|
134
167
|
```
|
|
135
168
|
|
|
136
169
|
</details>
|
|
@@ -149,7 +182,10 @@ Add the PyPI project as a dependency and install it using `pip` or `pipenv`.
|
|
|
149
182
|
```python
|
|
150
183
|
import hyperbuild
|
|
151
184
|
|
|
152
|
-
|
|
185
|
+
try:
|
|
186
|
+
minified = hyperbuild.minify("<p> Hello, world! </p>")
|
|
187
|
+
except SyntaxError as e:
|
|
188
|
+
print(e)
|
|
153
189
|
```
|
|
154
190
|
|
|
155
191
|
</details>
|
|
@@ -175,6 +211,10 @@ print Hyperbuild.minify "
Hello, world! " |
|
|
175
211
|
|
|
176
212
|
## Minification
|
|
177
213
|
|
|
214
|
+
### Configurability
|
|
215
|
+
|
|
216
|
+
Configuration of minification is currently WIP across all languages. The behaviour mentioned below is the default.
|
|
217
|
+
|
|
178
218
|
### Whitespace
|
|
179
219
|
|
|
180
220
|
hyperbuild has advanced context-aware whitespace minification that does things such as:
|
|
@@ -218,7 +258,7 @@ Reduce a sequence of whitespace characters in text nodes to a single space (U+00
|
|
|
218
258
|
|
|
219
259
|
> **Applies to:** any element except [whitespace sensitive](./src/spec/tag/whitespace.rs), [content](src/spec/tag/whitespace.rs), [content-first](./src/spec/tag/whitespace.rs), and [formatting](./src/spec/tag/whitespace.rs) elements.
|
|
220
260
|
|
|
221
|
-
Remove any text nodes that only consist of whitespace characters.
|
|
261
|
+
Remove any text nodes between tags that only consist of whitespace characters.
|
|
222
262
|
|
|
223
263
|
<table><thead><tr><th>Before<th>After<tbody><tr><td>
|
|
224
264
|
|
|
@@ -396,7 +436,7 @@ Numeric entities that do not refer to a valid [Unicode Scalar Value](https://www
|
|
|
396
436
|
|
|
397
437
|
If an entity is unintentionally formed after decoding, the leading ampersand is encoded, e.g. `&amp;` becomes `&amp;`. This is done as `&` is equal to or shorter than all other entity representations of characters part of an entity (`[&#a-zA-Z0-9;]`), and there is no other conflicting entity name that starts with `amp`.
|
|
398
438
|
|
|
399
|
-
|
|
439
|
+
Left chevrons after any decoding in text are encoded to `<` if possible or `<` otherwise.
|
|
400
440
|
|
|
401
441
|
### Comments
|
|
402
442
|
|
data/lib/linux-ruby2.5
CHANGED
|
Binary file
|
data/lib/linux-ruby2.6
CHANGED
|
Binary file
|
data/lib/linux-ruby2.7
CHANGED
|
Binary file
|
data/lib/macos-ruby2.5
CHANGED
|
Binary file
|
data/lib/macos-ruby2.6
CHANGED
|
Binary file
|
data/lib/macos-ruby2.7
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hyperbuild
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Wilson Lin
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-06-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: fiddle
|