Multiple slugification strategies (#929)
This commit is contained in:
parent
e9eb0e1c4d
commit
ac3ced828b
|
@ -5,8 +5,8 @@
|
||||||
### Breaking
|
### Breaking
|
||||||
- Remove `toc` variable in section/page context and pass it to `page.toc` and `section.toc` instead so they are
|
- Remove `toc` variable in section/page context and pass it to `page.toc` and `section.toc` instead so they are
|
||||||
accessible everywhere
|
accessible everywhere
|
||||||
- [Slugification](https://en.wikipedia.org/wiki/Slug_(web_publishing)#Slug) of page paths is now optional. By default, every path will be slugified as it is happening right now.
|
- [Slugification](https://en.wikipedia.org/wiki/Slug_(web_publishing)#Slug) of paths, taxonomies and anchors is now optional. By default, everything will still be slugified like in previous versions.
|
||||||
To keep non-ASCII characters, set `slugify_paths = true` in your config.
|
See documentation for information on how to disable it.
|
||||||
|
|
||||||
### Other
|
### Other
|
||||||
- Add zenburn syntax highlighting theme
|
- Add zenburn syntax highlighting theme
|
||||||
|
|
|
@ -7,7 +7,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aho-corasick"
|
name = "aho-corasick"
|
||||||
version = "0.7.6"
|
version = "0.7.7"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -45,7 +45,7 @@ version = "1.0.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -373,7 +373,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dtoa"
|
name = "dtoa"
|
||||||
version = "0.4.4"
|
version = "0.4.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -387,11 +387,11 @@ version = "2.3.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rust-stemmers 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rust-stemmers 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"strum 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"strum 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"strum_macros 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"strum_macros 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
@ -438,7 +438,7 @@ dependencies = [
|
||||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"miniz_oxide 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"miniz_oxide 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -466,7 +466,7 @@ dependencies = [
|
||||||
"chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"errors 0.1.0",
|
"errors 0.1.0",
|
||||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tera 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tera 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -624,11 +624,11 @@ name = "globset"
|
||||||
version = "0.4.4"
|
version = "0.4.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"aho-corasick 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"bstr 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bstr 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -654,7 +654,7 @@ dependencies = [
|
||||||
"indexmap 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"indexmap 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -726,7 +726,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hyper"
|
name = "hyper"
|
||||||
version = "0.13.1"
|
version = "0.13.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -740,9 +740,9 @@ dependencies = [
|
||||||
"itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
|
"net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"pin-project 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
@ -755,10 +755,10 @@ dependencies = [
|
||||||
"chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"hyper 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
@ -769,9 +769,9 @@ version = "0.4.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"hyper 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio-tls 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio-tls 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -795,7 +795,7 @@ dependencies = [
|
||||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -826,7 +826,7 @@ dependencies = [
|
||||||
"image 0.22.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"image 0.22.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tera 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tera 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"utils 0.1.0",
|
"utils 0.1.0",
|
||||||
]
|
]
|
||||||
|
@ -930,7 +930,7 @@ dependencies = [
|
||||||
"globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rendering 0.1.0",
|
"rendering 0.1.0",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -998,7 +998,7 @@ dependencies = [
|
||||||
"phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
"phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"string_cache 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"string_cache 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"string_cache_codegen 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"string_cache_codegen 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -1041,7 +1041,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "miniz_oxide"
|
name = "miniz_oxide"
|
||||||
version = "0.3.5"
|
version = "0.3.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -1100,8 +1100,8 @@ dependencies = [
|
||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1112,9 +1112,9 @@ dependencies = [
|
||||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"openssl 0.10.26 (registry+https://github.com/rust-lang/crates.io-index)",
|
"openssl 0.10.27 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"openssl-sys 0.9.53 (registry+https://github.com/rust-lang/crates.io-index)",
|
"openssl-sys 0.9.54 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"schannel 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
"schannel 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"security-framework 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"security-framework 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -1257,7 +1257,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "open"
|
name = "open"
|
||||||
version = "1.3.2"
|
version = "1.3.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -1265,7 +1265,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "openssl"
|
name = "openssl"
|
||||||
version = "0.10.26"
|
version = "0.10.27"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -1273,7 +1273,7 @@ dependencies = [
|
||||||
"foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"openssl-sys 0.9.53 (registry+https://github.com/rust-lang/crates.io-index)",
|
"openssl-sys 0.9.54 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1283,10 +1283,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "openssl-sys"
|
name = "openssl-sys"
|
||||||
version = "0.9.53"
|
version = "0.9.54"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)",
|
"cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -1298,7 +1298,7 @@ name = "parse-zoneinfo"
|
||||||
version = "0.2.1"
|
version = "0.2.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1386,15 +1386,15 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pin-project"
|
name = "pin-project"
|
||||||
version = "0.4.7"
|
version = "0.4.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"pin-project-internal 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pin-project-internal 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pin-project-internal"
|
name = "pin-project-internal"
|
||||||
version = "0.4.7"
|
version = "0.4.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -1696,12 +1696,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "regex"
|
name = "regex"
|
||||||
version = "1.3.3"
|
version = "1.3.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"aho-corasick 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex-syntax 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1715,7 +1715,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "regex-syntax"
|
name = "regex-syntax"
|
||||||
version = "0.6.13"
|
version = "0.6.14"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1738,7 +1738,7 @@ dependencies = [
|
||||||
"pest 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pest 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"pulldown-cmark 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pulldown-cmark 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"syntect 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"syntect 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -1759,7 +1759,7 @@ dependencies = [
|
||||||
"futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"hyper 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"hyper-tls 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"hyper-tls 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
"js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -1772,7 +1772,7 @@ dependencies = [
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio-tls 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio-tls 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)",
|
"wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -1915,7 +1915,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_json"
|
name = "serde_json"
|
||||||
version = "1.0.45"
|
version = "1.0.46"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"indexmap 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"indexmap 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -1929,7 +1929,7 @@ name = "serde_urlencoded"
|
||||||
version = "0.6.1"
|
version = "0.6.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"dtoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -1993,7 +1993,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "smallvec"
|
name = "smallvec"
|
||||||
version = "1.1.0"
|
version = "1.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2086,10 +2086,10 @@ dependencies = [
|
||||||
"lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"onig 4.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"onig 4.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"plist 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"plist 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex-syntax 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
@ -2122,7 +2122,7 @@ dependencies = [
|
||||||
"mockito 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"mockito 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"pulldown-cmark 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pulldown-cmark 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tera 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tera 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -2153,9 +2153,9 @@ dependencies = [
|
||||||
"pest 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pest 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"unic-segment 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"unic-segment 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
@ -2207,7 +2207,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio"
|
name = "tokio"
|
||||||
version = "0.2.10"
|
version = "0.2.11"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -2219,14 +2219,15 @@ dependencies = [
|
||||||
"num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio-macros 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio-macros 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio-macros"
|
name = "tokio-macros"
|
||||||
version = "0.2.3"
|
version = "0.2.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
"syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
@ -2237,7 +2238,7 @@ version = "0.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2250,7 +2251,7 @@ dependencies = [
|
||||||
"futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2346,7 +2347,7 @@ name = "unicode-normalization"
|
||||||
version = "0.1.12"
|
version = "0.1.12"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2389,7 +2390,9 @@ name = "utils"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"errors 0.1.0",
|
"errors 0.1.0",
|
||||||
|
"percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tera 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tera 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -2454,7 +2457,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasm-bindgen-macro 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)",
|
"wasm-bindgen-macro 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -2639,15 +2642,15 @@ dependencies = [
|
||||||
"errors 0.1.0",
|
"errors 0.1.0",
|
||||||
"front_matter 0.1.0",
|
"front_matter 0.1.0",
|
||||||
"globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"hyper 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"hyper-staticfile 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"hyper-staticfile 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"notify 4.0.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
"notify 4.0.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"open 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"open 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rebuild 0.1.0",
|
"rebuild 0.1.0",
|
||||||
"site 0.1.0",
|
"site 0.1.0",
|
||||||
"termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"utils 0.1.0",
|
"utils 0.1.0",
|
||||||
"ws 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"ws 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -2655,7 +2658,7 @@ dependencies = [
|
||||||
|
|
||||||
[metadata]
|
[metadata]
|
||||||
"checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2"
|
"checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2"
|
||||||
"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d"
|
"checksum aho-corasick 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)" = "5f56c476256dc249def911d6f7580b5fc7e875895b5d7ee88f5d602208035744"
|
||||||
"checksum ammonia 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9e266e1f4be5ffa05309f650e2586fe1d3ae6034eb24025a7ae1dfecc330823a"
|
"checksum ammonia 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9e266e1f4be5ffa05309f650e2586fe1d3ae6034eb24025a7ae1dfecc330823a"
|
||||||
"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
|
"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
|
||||||
"checksum anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)" = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c"
|
"checksum anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)" = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c"
|
||||||
|
@ -2699,7 +2702,7 @@ dependencies = [
|
||||||
"checksum deunicode 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "850878694b7933ca4c9569d30a34b55031b9b139ee1fc7b94a527c4ef960d690"
|
"checksum deunicode 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "850878694b7933ca4c9569d30a34b55031b9b139ee1fc7b94a527c4ef960d690"
|
||||||
"checksum difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198"
|
"checksum difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198"
|
||||||
"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"
|
"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"
|
||||||
"checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e"
|
"checksum dtoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4358a9e11b9a09cf52383b451b49a169e8d797b68aa02301ff586d70d9661ea3"
|
||||||
"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3"
|
"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3"
|
||||||
"checksum elasticlunr-rs 2.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f66a620976c38dbbbcd6355910432cef8b0911b3af86332029752379f0ff7924"
|
"checksum elasticlunr-rs 2.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f66a620976c38dbbbcd6355910432cef8b0911b3af86332029752379f0ff7924"
|
||||||
"checksum encoding_rs 0.8.22 (registry+https://github.com/rust-lang/crates.io-index)" = "cd8d03faa7fe0c1431609dfad7bbe827af30f82e1e2ae6f7ee4fca6bd764bc28"
|
"checksum encoding_rs 0.8.22 (registry+https://github.com/rust-lang/crates.io-index)" = "cd8d03faa7fe0c1431609dfad7bbe827af30f82e1e2ae6f7ee4fca6bd764bc28"
|
||||||
|
@ -2739,7 +2742,7 @@ dependencies = [
|
||||||
"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
|
"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
|
||||||
"checksum humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e"
|
"checksum humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e"
|
||||||
"checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
|
"checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
|
||||||
"checksum hyper 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8bf49cfb32edee45d890537d9057d1b02ed55f53b7b6a30bae83a38c9231749e"
|
"checksum hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fa1c527bbc634be72aa7ba31e4e4def9bbb020f5416916279b7c705cd838893e"
|
||||||
"checksum hyper-staticfile 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "241e2c25e6221c5bfaea5034cbf09879e30a443ad7ec674116091bab47207a5b"
|
"checksum hyper-staticfile 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "241e2c25e6221c5bfaea5034cbf09879e30a443ad7ec674116091bab47207a5b"
|
||||||
"checksum hyper-tls 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3adcd308402b9553630734e9c36b77a7e48b3821251ca2493e8cd596763aafaa"
|
"checksum hyper-tls 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3adcd308402b9553630734e9c36b77a7e48b3821251ca2493e8cd596763aafaa"
|
||||||
"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9"
|
"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9"
|
||||||
|
@ -2769,7 +2772,7 @@ dependencies = [
|
||||||
"checksum memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9"
|
"checksum memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9"
|
||||||
"checksum mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
|
"checksum mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
|
||||||
"checksum mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a0ed03949aef72dbdf3116a383d7b38b4768e6f960528cd6a6044aa9ed68599"
|
"checksum mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a0ed03949aef72dbdf3116a383d7b38b4768e6f960528cd6a6044aa9ed68599"
|
||||||
"checksum miniz_oxide 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6f3f74f726ae935c3f514300cc6773a0c9492abc5e972d42ba0c0ebb88757625"
|
"checksum miniz_oxide 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aa679ff6578b1cddee93d7e82e263b94a575e0bfced07284eb0c037c1d2416a5"
|
||||||
"checksum mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)" = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f"
|
"checksum mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)" = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f"
|
||||||
"checksum mio-extras 2.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19"
|
"checksum mio-extras 2.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19"
|
||||||
"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
|
"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
|
||||||
|
@ -2789,10 +2792,10 @@ dependencies = [
|
||||||
"checksum onig 4.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8518fcb2b1b8c2f45f0ad499df4fda6087fc3475ca69a185c173b8315d2fb383"
|
"checksum onig 4.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8518fcb2b1b8c2f45f0ad499df4fda6087fc3475ca69a185c173b8315d2fb383"
|
||||||
"checksum onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388410bf5fa341f10e58e6db3975f4bea1ac30247dd79d37a9e5ced3cb4cc3b0"
|
"checksum onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388410bf5fa341f10e58e6db3975f4bea1ac30247dd79d37a9e5ced3cb4cc3b0"
|
||||||
"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
|
"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
|
||||||
"checksum open 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "94b424e1086328b0df10235c6ff47be63708071881bead9e76997d9291c0134b"
|
"checksum open 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dfa632621d66502e1e9298c038d903090fc810a33cc1e6a02958fa0be65e3fb"
|
||||||
"checksum openssl 0.10.26 (registry+https://github.com/rust-lang/crates.io-index)" = "3a3cc5799d98e1088141b8e01ff760112bbd9f19d850c124500566ca6901a585"
|
"checksum openssl 0.10.27 (registry+https://github.com/rust-lang/crates.io-index)" = "e176a45fedd4c990e26580847a525e39e16ec32ac78957dbf62ded31b3abfd6f"
|
||||||
"checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de"
|
"checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de"
|
||||||
"checksum openssl-sys 0.9.53 (registry+https://github.com/rust-lang/crates.io-index)" = "465d16ae7fc0e313318f7de5cecf57b2fbe7511fd213978b457e1c96ff46736f"
|
"checksum openssl-sys 0.9.54 (registry+https://github.com/rust-lang/crates.io-index)" = "1024c0a59774200a555087a6da3f253a9095a5f344e353b212ac4c8b8e450986"
|
||||||
"checksum parse-zoneinfo 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "feece9d0113b400182a7d00adcff81ccf29158c49c5abd11e2eed8589bf6ff07"
|
"checksum parse-zoneinfo 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "feece9d0113b400182a7d00adcff81ccf29158c49c5abd11e2eed8589bf6ff07"
|
||||||
"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
|
"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
|
||||||
"checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
|
"checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
|
||||||
|
@ -2804,8 +2807,8 @@ dependencies = [
|
||||||
"checksum phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e"
|
"checksum phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e"
|
||||||
"checksum phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662"
|
"checksum phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662"
|
||||||
"checksum phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0"
|
"checksum phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0"
|
||||||
"checksum pin-project 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "75fca1c4ff21f60ca2d37b80d72b63dab823a9d19d3cda3a81d18bc03f0ba8c5"
|
"checksum pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7804a463a8d9572f13453c516a5faea534a2403d7ced2f0c7e100eeff072772c"
|
||||||
"checksum pin-project-internal 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6544cd4e4ecace61075a6ec78074beeef98d58aa9a3d07d053d993b2946a90d6"
|
"checksum pin-project-internal 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "385322a45f2ecf3410c68d2a549a4a2685e8051d0f278e39743ff4e451cb9b3f"
|
||||||
"checksum pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "237844750cfbb86f67afe27eee600dfbbcb6188d734139b534cbfbf4f96792ae"
|
"checksum pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "237844750cfbb86f67afe27eee600dfbbcb6188d734139b534cbfbf4f96792ae"
|
||||||
"checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587"
|
"checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587"
|
||||||
"checksum pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)" = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677"
|
"checksum pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)" = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677"
|
||||||
|
@ -2839,9 +2842,9 @@ dependencies = [
|
||||||
"checksum rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08a89b46efaf957e52b18062fb2f4660f8b8a4dde1807ca002690868ef2c85a9"
|
"checksum rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08a89b46efaf957e52b18062fb2f4660f8b8a4dde1807ca002690868ef2c85a9"
|
||||||
"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
|
"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
|
||||||
"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
|
"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
|
||||||
"checksum regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b5508c1941e4e7cb19965abef075d35a9a8b5cdf0846f30b4050e9b55dc55e87"
|
"checksum regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "322cf97724bea3ee221b78fe25ac9c46114ebb51747ad5babd51a2fc6a8235a8"
|
||||||
"checksum regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "92b73c2a1770c255c240eaa4ee600df1704a38dc3feaa6e949e7fcd4f8dc09f9"
|
"checksum regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "92b73c2a1770c255c240eaa4ee600df1704a38dc3feaa6e949e7fcd4f8dc09f9"
|
||||||
"checksum regex-syntax 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "e734e891f5b408a29efbf8309e656876276f49ab6a6ac208600b4419bd893d90"
|
"checksum regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)" = "b28dfe3fe9badec5dbf0a79a9cccad2cfc2ab5484bdb3e44cbd1ae8b3ba2be06"
|
||||||
"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e"
|
"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e"
|
||||||
"checksum reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c0e798e19e258bf6c30a304622e3e9ac820e483b06a1857a026e1f109b113fe4"
|
"checksum reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c0e798e19e258bf6c30a304622e3e9ac820e483b06a1857a026e1f109b113fe4"
|
||||||
"checksum rust-stemmers 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54"
|
"checksum rust-stemmers 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54"
|
||||||
|
@ -2860,14 +2863,14 @@ dependencies = [
|
||||||
"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
||||||
"checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449"
|
"checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449"
|
||||||
"checksum serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64"
|
"checksum serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64"
|
||||||
"checksum serde_json 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)" = "eab8f15f15d6c41a154c1b128a22f2dfabe350ef53c40953d84e36155c91192b"
|
"checksum serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)" = "21b01d7f0288608a01dca632cf1df859df6fd6ffa885300fc275ce2ba6221953"
|
||||||
"checksum serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97"
|
"checksum serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97"
|
||||||
"checksum sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df"
|
"checksum sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df"
|
||||||
"checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac"
|
"checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac"
|
||||||
"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
|
"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
|
||||||
"checksum slotmap 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c46a3482db8f247956e464d783693ece164ca056e6e67563ee5505bdb86452cd"
|
"checksum slotmap 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c46a3482db8f247956e464d783693ece164ca056e6e67563ee5505bdb86452cd"
|
||||||
"checksum slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b3bc762e6a4b6c6fcaade73e77f9ebc6991b676f88bb2358bddb56560f073373"
|
"checksum slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b3bc762e6a4b6c6fcaade73e77f9ebc6991b676f88bb2358bddb56560f073373"
|
||||||
"checksum smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44e59e0c9fa00817912ae6e4e6e3c4fe04455e75699d06eedc7d85917ed8e8f4"
|
"checksum smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5c2fb2ec9bcd216a5b0d0ccf31ab17b5ed1d627960edff65bbe95d3ce221cefc"
|
||||||
"checksum sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3"
|
"checksum sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3"
|
||||||
"checksum string_cache 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "89c058a82f9fd69b1becf8c274f412281038877c553182f1d02eb027045a2d67"
|
"checksum string_cache 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "89c058a82f9fd69b1becf8c274f412281038877c553182f1d02eb027045a2d67"
|
||||||
"checksum string_cache_codegen 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0f45ed1b65bf9a4bf2f7b7dc59212d1926e9eaf00fa998988e420fd124467c6"
|
"checksum string_cache_codegen 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0f45ed1b65bf9a4bf2f7b7dc59212d1926e9eaf00fa998988e420fd124467c6"
|
||||||
|
@ -2886,8 +2889,8 @@ dependencies = [
|
||||||
"checksum thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14"
|
"checksum thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14"
|
||||||
"checksum tiff 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d7b7c2cfc4742bd8a32f2e614339dd8ce30dbcf676bb262bd63a2327bc5df57d"
|
"checksum tiff 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d7b7c2cfc4742bd8a32f2e614339dd8ce30dbcf676bb262bd63a2327bc5df57d"
|
||||||
"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f"
|
"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f"
|
||||||
"checksum tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "c1fc73332507b971a5010664991a441b5ee0de92017f5a0e8b00fd684573045b"
|
"checksum tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8fdd17989496f49cdc57978c96f0c9fe5e4a58a8bddc6813c449a4624f6a030b"
|
||||||
"checksum tokio-macros 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "50a61f268a3db2acee8dcab514efc813dc6dbe8a00e86076f935f94304b59a7a"
|
"checksum tokio-macros 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f4b1e7ed7d5d4c2af3d999904b0eebe76544897cdbfb2b9684bed2174ab20f7c"
|
||||||
"checksum tokio-tls 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7bde02a3a5291395f59b06ec6945a3077602fac2b07eeeaf0dee2122f3619828"
|
"checksum tokio-tls 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7bde02a3a5291395f59b06ec6945a3077602fac2b07eeeaf0dee2122f3619828"
|
||||||
"checksum tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "571da51182ec208780505a32528fc5512a8fe1443ab960b3f2f3ef093cd16930"
|
"checksum tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "571da51182ec208780505a32528fc5512a8fe1443ab960b3f2f3ef093cd16930"
|
||||||
"checksum toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a"
|
"checksum toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a"
|
||||||
|
|
|
@ -12,6 +12,7 @@ use crate::highlighting::THEME_SET;
|
||||||
use crate::theme::Theme;
|
use crate::theme::Theme;
|
||||||
use errors::{bail, Error, Result};
|
use errors::{bail, Error, Result};
|
||||||
use utils::fs::read_file_with_error;
|
use utils::fs::read_file_with_error;
|
||||||
|
use utils::slugs::SlugifyStrategy;
|
||||||
|
|
||||||
// We want a default base url for tests
|
// We want a default base url for tests
|
||||||
static DEFAULT_BASE_URL: &str = "http://a-website.com";
|
static DEFAULT_BASE_URL: &str = "http://a-website.com";
|
||||||
|
@ -23,6 +24,24 @@ pub enum Mode {
|
||||||
Check,
|
Check,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
|
#[serde(default)]
|
||||||
|
pub struct Slugify {
|
||||||
|
pub paths: SlugifyStrategy,
|
||||||
|
pub taxonomies: SlugifyStrategy,
|
||||||
|
pub anchors: SlugifyStrategy,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for Slugify {
|
||||||
|
fn default() -> Self {
|
||||||
|
Slugify {
|
||||||
|
paths: SlugifyStrategy::On,
|
||||||
|
taxonomies: SlugifyStrategy::On,
|
||||||
|
anchors: SlugifyStrategy::On,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub struct Language {
|
pub struct Language {
|
||||||
|
@ -35,7 +54,7 @@ pub struct Language {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Language {
|
impl Default for Language {
|
||||||
fn default() -> Language {
|
fn default() -> Self {
|
||||||
Language { code: String::new(), rss: false, search: false }
|
Language { code: String::new(), rss: false, search: false }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -75,7 +94,7 @@ impl Taxonomy {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Taxonomy {
|
impl Default for Taxonomy {
|
||||||
fn default() -> Taxonomy {
|
fn default() -> Self {
|
||||||
Taxonomy {
|
Taxonomy {
|
||||||
name: String::new(),
|
name: String::new(),
|
||||||
paginate_by: None,
|
paginate_by: None,
|
||||||
|
@ -130,8 +149,6 @@ pub struct Config {
|
||||||
/// key into different language.
|
/// key into different language.
|
||||||
translations: HashMap<String, TranslateTerm>,
|
translations: HashMap<String, TranslateTerm>,
|
||||||
|
|
||||||
/// Whether to slugify page and taxonomy URLs (disable for UTF-8 URLs)
|
|
||||||
pub slugify_paths: bool,
|
|
||||||
/// Whether to highlight all code blocks found in markdown files. Defaults to false
|
/// Whether to highlight all code blocks found in markdown files. Defaults to false
|
||||||
pub highlight_code: bool,
|
pub highlight_code: bool,
|
||||||
/// Which themes to use for code highlighting. See Readme for supported themes
|
/// Which themes to use for code highlighting. See Readme for supported themes
|
||||||
|
@ -171,6 +188,9 @@ pub struct Config {
|
||||||
|
|
||||||
pub link_checker: LinkChecker,
|
pub link_checker: LinkChecker,
|
||||||
|
|
||||||
|
/// The setup for which slugification strategies to use for paths, taxonomies and anchors
|
||||||
|
pub slugify: Slugify,
|
||||||
|
|
||||||
/// All user params set in [extra] in the config
|
/// All user params set in [extra] in the config
|
||||||
pub extra: HashMap<String, Toml>,
|
pub extra: HashMap<String, Toml>,
|
||||||
|
|
||||||
|
@ -356,7 +376,6 @@ impl Default for Config {
|
||||||
title: None,
|
title: None,
|
||||||
description: None,
|
description: None,
|
||||||
theme: None,
|
theme: None,
|
||||||
slugify_paths: true,
|
|
||||||
highlight_code: false,
|
highlight_code: false,
|
||||||
highlight_theme: "base16-ocean-dark".to_string(),
|
highlight_theme: "base16-ocean-dark".to_string(),
|
||||||
default_language: "en".to_string(),
|
default_language: "en".to_string(),
|
||||||
|
@ -374,6 +393,7 @@ impl Default for Config {
|
||||||
extra_syntaxes: Vec::new(),
|
extra_syntaxes: Vec::new(),
|
||||||
extra_syntax_set: None,
|
extra_syntax_set: None,
|
||||||
link_checker: LinkChecker::default(),
|
link_checker: LinkChecker::default(),
|
||||||
|
slugify: Slugify::default(),
|
||||||
extra: HashMap::new(),
|
extra: HashMap::new(),
|
||||||
build_timestamp: Some(1),
|
build_timestamp: Some(1),
|
||||||
}
|
}
|
||||||
|
@ -382,7 +402,7 @@ impl Default for Config {
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::{Config, Theme};
|
use super::{Config, SlugifyStrategy, Theme};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn can_import_valid_config() {
|
fn can_import_valid_config() {
|
||||||
|
@ -619,4 +639,22 @@ skip_prefixes = [
|
||||||
vec!["http://[2001:db8::]/", "https://www.example.com/path",]
|
vec!["http://[2001:db8::]/", "https://www.example.com/path",]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn slugify_strategies() {
|
||||||
|
let config_str = r#"
|
||||||
|
title = "My site"
|
||||||
|
base_url = "example.com"
|
||||||
|
|
||||||
|
[slugify]
|
||||||
|
paths = "on"
|
||||||
|
taxonomies = "safe"
|
||||||
|
anchors = "off"
|
||||||
|
"#;
|
||||||
|
|
||||||
|
let config = Config::parse(config_str).unwrap();
|
||||||
|
assert_eq!(config.slugify.paths, SlugifyStrategy::On);
|
||||||
|
assert_eq!(config.slugify.taxonomies, SlugifyStrategy::Safe);
|
||||||
|
assert_eq!(config.slugify.anchors, SlugifyStrategy::Off);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ use utils::templates::render_template;
|
||||||
use crate::content::file_info::FileInfo;
|
use crate::content::file_info::FileInfo;
|
||||||
use crate::content::has_anchor;
|
use crate::content::has_anchor;
|
||||||
use crate::content::ser::SerializingPage;
|
use crate::content::ser::SerializingPage;
|
||||||
use utils::slugs::maybe_slugify_paths;
|
use utils::slugs::slugify_paths;
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
// Based on https://regex101.com/r/H2n38Z/1/tests
|
// Based on https://regex101.com/r/H2n38Z/1/tests
|
||||||
|
@ -161,24 +161,24 @@ impl Page {
|
||||||
|
|
||||||
page.slug = {
|
page.slug = {
|
||||||
if let Some(ref slug) = page.meta.slug {
|
if let Some(ref slug) = page.meta.slug {
|
||||||
maybe_slugify_paths(&slug.trim(), config.slugify_paths)
|
slugify_paths(slug, config.slugify.paths)
|
||||||
} else if page.file.name == "index" {
|
} else if page.file.name == "index" {
|
||||||
if let Some(parent) = page.file.path.parent() {
|
if let Some(parent) = page.file.path.parent() {
|
||||||
if let Some(slug) = slug_from_dated_filename {
|
if let Some(slug) = slug_from_dated_filename {
|
||||||
maybe_slugify_paths(&slug, config.slugify_paths)
|
slugify_paths(&slug, config.slugify.paths)
|
||||||
} else {
|
} else {
|
||||||
maybe_slugify_paths(
|
slugify_paths(
|
||||||
parent.file_name().unwrap().to_str().unwrap(),
|
parent.file_name().unwrap().to_str().unwrap(),
|
||||||
config.slugify_paths,
|
config.slugify.paths,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
maybe_slugify_paths(&page.file.name, config.slugify_paths)
|
slugify_paths(&page.file.name, config.slugify.paths)
|
||||||
}
|
}
|
||||||
} else if let Some(slug) = slug_from_dated_filename {
|
} else if let Some(slug) = slug_from_dated_filename {
|
||||||
maybe_slugify_paths(&slug, config.slugify_paths)
|
slugify_paths(&slug, config.slugify.paths)
|
||||||
} else {
|
} else {
|
||||||
maybe_slugify_paths(&page.file.name, config.slugify_paths)
|
slugify_paths(&page.file.name, config.slugify.paths)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -379,6 +379,7 @@ mod tests {
|
||||||
use super::Page;
|
use super::Page;
|
||||||
use config::{Config, Language};
|
use config::{Config, Language};
|
||||||
use front_matter::InsertAnchor;
|
use front_matter::InsertAnchor;
|
||||||
|
use utils::slugs::SlugifyStrategy;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_can_parse_a_valid_page() {
|
fn test_can_parse_a_valid_page() {
|
||||||
|
@ -448,7 +449,7 @@ Hello world"#;
|
||||||
+++
|
+++
|
||||||
Hello world"#;
|
Hello world"#;
|
||||||
let mut config = Config::default();
|
let mut config = Config::default();
|
||||||
config.slugify_paths = true;
|
config.slugify.paths = SlugifyStrategy::On;
|
||||||
let res = Page::parse(Path::new("start.md"), content, &config, &PathBuf::new());
|
let res = Page::parse(Path::new("start.md"), content, &config, &PathBuf::new());
|
||||||
assert!(res.is_ok());
|
assert!(res.is_ok());
|
||||||
let page = res.unwrap();
|
let page = res.unwrap();
|
||||||
|
@ -465,7 +466,7 @@ Hello world"#;
|
||||||
+++
|
+++
|
||||||
Hello world"#;
|
Hello world"#;
|
||||||
let mut config = Config::default();
|
let mut config = Config::default();
|
||||||
config.slugify_paths = false;
|
config.slugify.paths = SlugifyStrategy::Safe;
|
||||||
let res = Page::parse(Path::new("start.md"), content, &config, &PathBuf::new());
|
let res = Page::parse(Path::new("start.md"), content, &config, &PathBuf::new());
|
||||||
assert!(res.is_ok());
|
assert!(res.is_ok());
|
||||||
let page = res.unwrap();
|
let page = res.unwrap();
|
||||||
|
@ -531,7 +532,7 @@ Hello world"#;
|
||||||
#[test]
|
#[test]
|
||||||
fn can_make_slug_from_non_slug_filename() {
|
fn can_make_slug_from_non_slug_filename() {
|
||||||
let mut config = Config::default();
|
let mut config = Config::default();
|
||||||
config.slugify_paths = true;
|
config.slugify.paths = SlugifyStrategy::On;
|
||||||
let res =
|
let res =
|
||||||
Page::parse(Path::new(" file with space.md"), "+++\n+++", &config, &PathBuf::new());
|
Page::parse(Path::new(" file with space.md"), "+++\n+++", &config, &PathBuf::new());
|
||||||
assert!(res.is_ok());
|
assert!(res.is_ok());
|
||||||
|
@ -543,7 +544,7 @@ Hello world"#;
|
||||||
#[test]
|
#[test]
|
||||||
fn can_make_path_from_utf8_filename() {
|
fn can_make_path_from_utf8_filename() {
|
||||||
let mut config = Config::default();
|
let mut config = Config::default();
|
||||||
config.slugify_paths = false;
|
config.slugify.paths = SlugifyStrategy::Safe;
|
||||||
let res = Page::parse(Path::new("日本.md"), "+++\n++++", &config, &PathBuf::new());
|
let res = Page::parse(Path::new("日本.md"), "+++\n++++", &config, &PathBuf::new());
|
||||||
assert!(res.is_ok());
|
assert!(res.is_ok());
|
||||||
let page = res.unwrap();
|
let page = res.unwrap();
|
||||||
|
|
|
@ -11,7 +11,7 @@ use utils::templates::render_template;
|
||||||
use crate::content::SerializingPage;
|
use crate::content::SerializingPage;
|
||||||
use crate::library::Library;
|
use crate::library::Library;
|
||||||
use crate::sorting::sort_pages_by_date;
|
use crate::sorting::sort_pages_by_date;
|
||||||
use utils::slugs::maybe_slugify_paths;
|
use utils::slugs::slugify_paths;
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Serialize)]
|
#[derive(Debug, Clone, PartialEq, Serialize)]
|
||||||
pub struct SerializedTaxonomyItem<'a> {
|
pub struct SerializedTaxonomyItem<'a> {
|
||||||
|
@ -70,7 +70,7 @@ impl TaxonomyItem {
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
let (mut pages, ignored_pages) = sort_pages_by_date(data);
|
let (mut pages, ignored_pages) = sort_pages_by_date(data);
|
||||||
let slug = maybe_slugify_paths(name, config.slugify_paths);
|
let slug = slugify_paths(name, config.slugify.taxonomies);
|
||||||
let permalink = if taxonomy.lang != config.default_language {
|
let permalink = if taxonomy.lang != config.default_language {
|
||||||
config.make_permalink(&format!("/{}/{}/{}", taxonomy.lang, taxonomy.name, slug))
|
config.make_permalink(&format!("/{}/{}/{}", taxonomy.lang, taxonomy.name, slug))
|
||||||
} else {
|
} else {
|
||||||
|
@ -235,6 +235,7 @@ mod tests {
|
||||||
use crate::content::Page;
|
use crate::content::Page;
|
||||||
use crate::library::Library;
|
use crate::library::Library;
|
||||||
use config::{Config, Language, Taxonomy as TaxonomyConfig};
|
use config::{Config, Language, Taxonomy as TaxonomyConfig};
|
||||||
|
use utils::slugs::SlugifyStrategy;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn can_make_taxonomies() {
|
fn can_make_taxonomies() {
|
||||||
|
@ -565,7 +566,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn can_make_utf8_taxonomies() {
|
fn can_make_utf8_taxonomies() {
|
||||||
let mut config = Config::default();
|
let mut config = Config::default();
|
||||||
config.slugify_paths = false;
|
config.slugify.taxonomies = SlugifyStrategy::Safe;
|
||||||
config.languages.push(Language {
|
config.languages.push(Language {
|
||||||
rss: false,
|
rss: false,
|
||||||
code: "fr".to_string(),
|
code: "fr".to_string(),
|
||||||
|
@ -598,7 +599,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn can_make_slugified_taxonomies_in_multiple_languages() {
|
fn can_make_slugified_taxonomies_in_multiple_languages() {
|
||||||
let mut config = Config::default();
|
let mut config = Config::default();
|
||||||
config.slugify_paths = true;
|
config.slugify.taxonomies = SlugifyStrategy::On;
|
||||||
config.languages.push(Language {
|
config.languages.push(Language {
|
||||||
rss: false,
|
rss: false,
|
||||||
code: "fr".to_string(),
|
code: "fr".to_string(),
|
||||||
|
|
|
@ -86,8 +86,7 @@ fn bench_render_content_with_highlighting(b: &mut test::Bencher) {
|
||||||
tera.add_raw_template("shortcodes/youtube.html", "{{id}}").unwrap();
|
tera.add_raw_template("shortcodes/youtube.html", "{{id}}").unwrap();
|
||||||
let permalinks_ctx = HashMap::new();
|
let permalinks_ctx = HashMap::new();
|
||||||
let config = Config::default();
|
let config = Config::default();
|
||||||
let context =
|
let context = RenderContext::new(&tera, &config, "", &permalinks_ctx, InsertAnchor::None);
|
||||||
RenderContext::new(&tera, &config, "", &permalinks_ctx, InsertAnchor::None);
|
|
||||||
b.iter(|| render_content(CONTENT, &context).unwrap());
|
b.iter(|| render_content(CONTENT, &context).unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,8 +97,7 @@ fn bench_render_content_without_highlighting(b: &mut test::Bencher) {
|
||||||
let permalinks_ctx = HashMap::new();
|
let permalinks_ctx = HashMap::new();
|
||||||
let mut config = Config::default();
|
let mut config = Config::default();
|
||||||
config.highlight_code = false;
|
config.highlight_code = false;
|
||||||
let context =
|
let context = RenderContext::new(&tera, &config, "", &permalinks_ctx, InsertAnchor::None);
|
||||||
RenderContext::new(&tera, &config, "", &permalinks_ctx, InsertAnchor::None);
|
|
||||||
b.iter(|| render_content(CONTENT, &context).unwrap());
|
b.iter(|| render_content(CONTENT, &context).unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,8 +108,7 @@ fn bench_render_content_no_shortcode(b: &mut test::Bencher) {
|
||||||
let mut config = Config::default();
|
let mut config = Config::default();
|
||||||
config.highlight_code = false;
|
config.highlight_code = false;
|
||||||
let permalinks_ctx = HashMap::new();
|
let permalinks_ctx = HashMap::new();
|
||||||
let context =
|
let context = RenderContext::new(&tera, &config, "", &permalinks_ctx, InsertAnchor::None);
|
||||||
RenderContext::new(&tera, &config, "", &permalinks_ctx, InsertAnchor::None);
|
|
||||||
|
|
||||||
b.iter(|| render_content(&content2, &context).unwrap());
|
b.iter(|| render_content(&content2, &context).unwrap());
|
||||||
}
|
}
|
||||||
|
@ -122,8 +119,7 @@ fn bench_render_shortcodes_one_present(b: &mut test::Bencher) {
|
||||||
tera.add_raw_template("shortcodes/youtube.html", "{{id}}").unwrap();
|
tera.add_raw_template("shortcodes/youtube.html", "{{id}}").unwrap();
|
||||||
let config = Config::default();
|
let config = Config::default();
|
||||||
let permalinks_ctx = HashMap::new();
|
let permalinks_ctx = HashMap::new();
|
||||||
let context =
|
let context = RenderContext::new(&tera, &config, "", &permalinks_ctx, InsertAnchor::None);
|
||||||
RenderContext::new(&tera, &config, "", &permalinks_ctx, InsertAnchor::None);
|
|
||||||
|
|
||||||
b.iter(|| render_shortcodes(CONTENT, &context));
|
b.iter(|| render_shortcodes(CONTENT, &context));
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ use config::highlighting::{get_highlighter, SYNTAX_SET, THEME_SET};
|
||||||
use errors::{Error, Result};
|
use errors::{Error, Result};
|
||||||
use front_matter::InsertAnchor;
|
use front_matter::InsertAnchor;
|
||||||
use utils::site::resolve_internal_link;
|
use utils::site::resolve_internal_link;
|
||||||
use utils::slugs::maybe_slugify_anchors;
|
use utils::slugs::slugify_anchors;
|
||||||
use utils::vec::InsertMany;
|
use utils::vec::InsertMany;
|
||||||
|
|
||||||
use self::cmark::{Event, LinkType, Options, Parser, Tag};
|
use self::cmark::{Event, LinkType, Options, Parser, Tag};
|
||||||
|
@ -305,7 +305,7 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result<Render
|
||||||
let id = heading_ref.id.unwrap_or_else(|| {
|
let id = heading_ref.id.unwrap_or_else(|| {
|
||||||
find_anchor(
|
find_anchor(
|
||||||
&inserted_anchors,
|
&inserted_anchors,
|
||||||
maybe_slugify_anchors(&title, context.config.slugify_paths),
|
slugify_anchors(&title, context.config.slugify.anchors),
|
||||||
0,
|
0,
|
||||||
)
|
)
|
||||||
});
|
});
|
||||||
|
|
|
@ -6,6 +6,7 @@ use config::Config;
|
||||||
use front_matter::InsertAnchor;
|
use front_matter::InsertAnchor;
|
||||||
use rendering::{render_content, RenderContext};
|
use rendering::{render_content, RenderContext};
|
||||||
use templates::ZOLA_TERA;
|
use templates::ZOLA_TERA;
|
||||||
|
use utils::slugs::SlugifyStrategy;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn can_do_render_content_simple() {
|
fn can_do_render_content_simple() {
|
||||||
|
@ -350,7 +351,7 @@ fn can_add_non_slug_id_to_headings() {
|
||||||
let tera_ctx = Tera::default();
|
let tera_ctx = Tera::default();
|
||||||
let permalinks_ctx = HashMap::new();
|
let permalinks_ctx = HashMap::new();
|
||||||
let mut config = Config::default();
|
let mut config = Config::default();
|
||||||
config.slugify_paths = false;
|
config.slugify.anchors = SlugifyStrategy::Safe;
|
||||||
let context = RenderContext::new(&tera_ctx, &config, "", &permalinks_ctx, InsertAnchor::None);
|
let context = RenderContext::new(&tera_ctx, &config, "", &permalinks_ctx, InsertAnchor::None);
|
||||||
let res = render_content(r#"# L'écologie et vous"#, &context).unwrap();
|
let res = render_content(r#"# L'écologie et vous"#, &context).unwrap();
|
||||||
assert_eq!(res.body, "<h1 id=\"L'écologie_et_vous\">L'écologie et vous</h1>\n");
|
assert_eq!(res.body, "<h1 id=\"L'écologie_et_vous\">L'écologie et vous</h1>\n");
|
||||||
|
|
|
@ -686,14 +686,14 @@ fn can_ignore_markdown_content() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn check_site() {
|
fn check_site() {
|
||||||
let (mut site, _tmp_dir, _public) = build_site("test_site");
|
let (mut site, _tmp_dir, _public) = build_site("test_site");
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
site.config.link_checker.skip_anchor_prefixes,
|
site.config.link_checker.skip_anchor_prefixes,
|
||||||
vec!["https://github.com/rust-lang/rust/blob/"]
|
vec!["https://github.com/rust-lang/rust/blob/"]
|
||||||
);
|
);
|
||||||
assert_eq!(site.config.link_checker.skip_prefixes, vec!["http://[2001:db8::]/"]);
|
assert_eq!(site.config.link_checker.skip_prefixes, vec!["http://[2001:db8::]/"]);
|
||||||
|
|
||||||
site.config.enable_check_mode();
|
site.config.enable_check_mode();
|
||||||
site.load().expect("link check test_site");
|
site.load().expect("link check test_site");
|
||||||
}
|
}
|
||||||
|
|
|
@ -346,6 +346,7 @@ mod tests {
|
||||||
|
|
||||||
use config::{Config, Taxonomy as TaxonomyConfig};
|
use config::{Config, Taxonomy as TaxonomyConfig};
|
||||||
use library::{Library, Taxonomy, TaxonomyItem};
|
use library::{Library, Taxonomy, TaxonomyItem};
|
||||||
|
use utils::slugs::SlugifyStrategy;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn can_add_cachebust_to_url() {
|
fn can_add_cachebust_to_url() {
|
||||||
|
@ -390,7 +391,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn can_get_taxonomy() {
|
fn can_get_taxonomy() {
|
||||||
let mut config = Config::default();
|
let mut config = Config::default();
|
||||||
config.slugify_paths = true;
|
config.slugify.taxonomies = SlugifyStrategy::On;
|
||||||
let taxo_config = TaxonomyConfig {
|
let taxo_config = TaxonomyConfig {
|
||||||
name: "tags".to_string(),
|
name: "tags".to_string(),
|
||||||
lang: config.default_language.clone(),
|
lang: config.default_language.clone(),
|
||||||
|
@ -468,7 +469,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn can_get_taxonomy_url() {
|
fn can_get_taxonomy_url() {
|
||||||
let mut config = Config::default();
|
let mut config = Config::default();
|
||||||
config.slugify_paths = true;
|
config.slugify.taxonomies = SlugifyStrategy::On;
|
||||||
let taxo_config = TaxonomyConfig {
|
let taxo_config = TaxonomyConfig {
|
||||||
name: "tags".to_string(),
|
name: "tags".to_string(),
|
||||||
lang: config.default_language.clone(),
|
lang: config.default_language.clone(),
|
||||||
|
|
|
@ -5,13 +5,16 @@ authors = ["Vincent Prouillet <prouillet.vincent@gmail.com>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
errors = { path = "../errors" }
|
|
||||||
tera = "1"
|
tera = "1"
|
||||||
unicode-segmentation = "1.2"
|
unicode-segmentation = "1.2"
|
||||||
walkdir = "2"
|
walkdir = "2"
|
||||||
toml = "0.5"
|
toml = "0.5"
|
||||||
serde = "1"
|
serde = "1"
|
||||||
|
serde_derive = "1"
|
||||||
slug = "0.1"
|
slug = "0.1"
|
||||||
|
percent-encoding = "2"
|
||||||
|
|
||||||
|
errors = { path = "../errors" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tempfile = "3"
|
tempfile = "3"
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
use percent_encoding::percent_decode;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::hash::BuildHasher;
|
use std::hash::BuildHasher;
|
||||||
use unicode_segmentation::UnicodeSegmentation;
|
use unicode_segmentation::UnicodeSegmentation;
|
||||||
|
@ -33,12 +34,15 @@ pub fn resolve_internal_link<S: BuildHasher>(
|
||||||
// Then we remove any potential anchor
|
// Then we remove any potential anchor
|
||||||
// parts[0] will be the file path and parts[1] the anchor if present
|
// parts[0] will be the file path and parts[1] the anchor if present
|
||||||
let parts = clean_link.split('#').collect::<Vec<_>>();
|
let parts = clean_link.split('#').collect::<Vec<_>>();
|
||||||
match permalinks.get(parts[0]) {
|
// If we have slugification turned off, we might end up with some escaped characters so we need
|
||||||
|
// to decode them first
|
||||||
|
let decoded = &*percent_decode(parts[0].as_bytes()).decode_utf8_lossy();
|
||||||
|
match permalinks.get(decoded) {
|
||||||
Some(p) => {
|
Some(p) => {
|
||||||
if parts.len() > 1 {
|
if parts.len() > 1 {
|
||||||
Ok(ResolvedInternalLink {
|
Ok(ResolvedInternalLink {
|
||||||
permalink: format!("{}#{}", p, parts[1]),
|
permalink: format!("{}#{}", p, parts[1]),
|
||||||
md_path: Some(parts[0].to_string()),
|
md_path: Some(decoded.to_string()),
|
||||||
anchor: Some(parts[1].to_string()),
|
anchor: Some(parts[1].to_string()),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
@ -81,6 +85,19 @@ mod tests {
|
||||||
assert_eq!(res.anchor, Some("hello".to_string()));
|
assert_eq!(res.anchor, Some("hello".to_string()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn can_resolve_escaped_internal_links() {
|
||||||
|
let mut permalinks = HashMap::new();
|
||||||
|
permalinks.insert(
|
||||||
|
"pages/about space.md".to_string(),
|
||||||
|
"https://vincent.is/about%20space/".to_string(),
|
||||||
|
);
|
||||||
|
let res = resolve_internal_link("@/pages/about%20space.md#hello", &permalinks).unwrap();
|
||||||
|
assert_eq!(res.permalink, "https://vincent.is/about%20space/#hello");
|
||||||
|
assert_eq!(res.md_path, Some("pages/about space.md".to_string()));
|
||||||
|
assert_eq!(res.anchor, Some("hello".to_string()));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn errors_resolve_inexistant_internal_link() {
|
fn errors_resolve_inexistant_internal_link() {
|
||||||
let res = resolve_internal_link("@/pages/about.md#hello", &HashMap::new());
|
let res = resolve_internal_link("@/pages/about.md#hello", &HashMap::new());
|
||||||
|
|
|
@ -1,3 +1,16 @@
|
||||||
|
use serde_derive::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
#[derive(Copy, Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
|
#[serde(rename_all = "lowercase")]
|
||||||
|
pub enum SlugifyStrategy {
|
||||||
|
/// Classic slugification, the default
|
||||||
|
On,
|
||||||
|
/// No slugification, only remove unsafe characters for filepaths/urls
|
||||||
|
Safe,
|
||||||
|
/// Nothing is changed, hope for the best!
|
||||||
|
Off,
|
||||||
|
}
|
||||||
|
|
||||||
fn strip_chars(s: &str, chars: &str) -> String {
|
fn strip_chars(s: &str, chars: &str) -> String {
|
||||||
let mut sanitized_string = s.to_string();
|
let mut sanitized_string = s.to_string();
|
||||||
sanitized_string.retain(|c| !chars.contains(c));
|
sanitized_string.retain(|c| !chars.contains(c));
|
||||||
|
@ -6,37 +19,23 @@ fn strip_chars(s: &str, chars: &str) -> String {
|
||||||
|
|
||||||
fn strip_invalid_paths_chars(s: &str) -> String {
|
fn strip_invalid_paths_chars(s: &str) -> String {
|
||||||
// NTFS forbidden characters : https://gist.github.com/doctaphred/d01d05291546186941e1b7ddc02034d3
|
// NTFS forbidden characters : https://gist.github.com/doctaphred/d01d05291546186941e1b7ddc02034d3
|
||||||
// Also we need to trim . from the end of filename
|
// Also we need to trim whitespaces and `.` from the end of filename
|
||||||
let trimmed = s.trim_end_matches(|c| c == ' ' || c == '.');
|
let trimmed = s.trim_end_matches(|c| c == ' ' || c == '.');
|
||||||
let cleaned = trimmed.replace(" ", "_");
|
strip_chars(&trimmed, r#"<>:"/\|?*"#)
|
||||||
// And () [] since they are not allowed in markdown links
|
|
||||||
strip_chars(&cleaned, "<>:/|?*#()[]\n\"\\\r\t")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn strip_invalid_anchors_chars(s: &str) -> String {
|
pub fn slugify_paths(s: &str, strategy: SlugifyStrategy) -> String {
|
||||||
// spaces are not valid in markdown links
|
match strategy {
|
||||||
let cleaned = s.replace(" ", "_");
|
SlugifyStrategy::On => slug::slugify(s),
|
||||||
// https://tools.ietf.org/html/rfc3986#section-3.5
|
SlugifyStrategy::Safe => strip_invalid_paths_chars(s),
|
||||||
strip_chars(&cleaned, "\"#%<>[\\]()^`{|}")
|
SlugifyStrategy::Off => s.to_string(),
|
||||||
}
|
|
||||||
|
|
||||||
pub fn maybe_slugify_paths(s: &str, slugify: bool) -> String {
|
|
||||||
if slugify {
|
|
||||||
// ASCII slugification
|
|
||||||
slug::slugify(s)
|
|
||||||
} else {
|
|
||||||
// Only remove forbidden characters
|
|
||||||
strip_invalid_paths_chars(s)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn maybe_slugify_anchors(s: &str, slugify: bool) -> String {
|
pub fn slugify_anchors(s: &str, strategy: SlugifyStrategy) -> String {
|
||||||
if slugify {
|
match strategy {
|
||||||
// ASCII slugification
|
SlugifyStrategy::On => slug::slugify(s),
|
||||||
slug::slugify(s)
|
SlugifyStrategy::Safe | SlugifyStrategy::Off => s.replace(|c: char| c.is_ascii_whitespace(), "_"),
|
||||||
} else {
|
|
||||||
// Only remove forbidden characters
|
|
||||||
strip_invalid_anchors_chars(s)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,61 +44,44 @@ mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn strip_invalid_paths_chars_works() {
|
fn can_slugify_paths() {
|
||||||
let tests = vec![
|
let tests = vec![
|
||||||
// no newlines
|
// input, (on, safe, off)
|
||||||
("test\ntest", "testtest"),
|
("input", ("input", "input", "input")),
|
||||||
// no whitespaces
|
("test ", ("test", "test", "test ")),
|
||||||
("test ", "test"),
|
("tes t", ("tes-t", "tes t", "tes t")),
|
||||||
("t est ", "t_est"),
|
// Invalid NTFS
|
||||||
// invalid NTFS
|
("dot. ", ("dot", "dot", "dot. ")),
|
||||||
("test .", "test"),
|
("日本", ("ri-ben", "日本", "日本")),
|
||||||
("test. ", "test"),
|
("héhé", ("hehe", "héhé", "héhé")),
|
||||||
("test#test/test?test", "testtesttesttest"),
|
("test (hey)", ("test-hey", "test (hey)", "test (hey)")),
|
||||||
// Invalid CommonMark chars in links
|
|
||||||
("test (hey)", "test_hey"),
|
|
||||||
("test (hey", "test_hey"),
|
|
||||||
("test hey)", "test_hey"),
|
|
||||||
("test [hey]", "test_hey"),
|
|
||||||
("test [hey", "test_hey"),
|
|
||||||
("test hey]", "test_hey"),
|
|
||||||
// UTF-8
|
|
||||||
("日本", "日本"),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
for (input, expected) in tests {
|
for (input, (on, safe, off)) in tests {
|
||||||
assert_eq!(strip_invalid_paths_chars(&input), expected);
|
assert_eq!(on, slugify_paths(input, SlugifyStrategy::On));
|
||||||
|
assert_eq!(safe, slugify_paths(input, SlugifyStrategy::Safe));
|
||||||
|
assert_eq!(off, slugify_paths(input, SlugifyStrategy::Off));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn strip_invalid_anchors_chars_works() {
|
fn can_slugify_anchors() {
|
||||||
let tests = vec![
|
let tests = vec![
|
||||||
("日本", "日本"),
|
// input, (on, safe, off)
|
||||||
// Some invalid chars get removed
|
("input", ("input", "input", "input")),
|
||||||
("test#", "test"),
|
("test ", ("test", "test_", "test_")),
|
||||||
("test<", "test"),
|
("tes t", ("tes-t", "tes_t", "tes_t")),
|
||||||
("test%", "test"),
|
// Invalid NTFS
|
||||||
("test^", "test"),
|
("dot. ", ("dot", "dot._", "dot._")),
|
||||||
("test{", "test"),
|
("日本", ("ri-ben", "日本", "日本")),
|
||||||
("test|", "test"),
|
("héhé", ("hehe", "héhé", "héhé")),
|
||||||
("test(", "test"),
|
("test (hey)", ("test-hey", "test_(hey)", "test_(hey)")),
|
||||||
// Spaces are replaced by `_`
|
|
||||||
("test hey", "test_hey"),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
for (input, expected) in tests {
|
for (input, (on, safe, off)) in tests {
|
||||||
assert_eq!(strip_invalid_anchors_chars(&input), expected);
|
assert_eq!(on, slugify_anchors(input, SlugifyStrategy::On));
|
||||||
|
assert_eq!(safe, slugify_anchors(input, SlugifyStrategy::Safe));
|
||||||
|
assert_eq!(off, slugify_anchors(input, SlugifyStrategy::Off));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn maybe_slugify_paths_enabled() {
|
|
||||||
assert_eq!(maybe_slugify_paths("héhé", true), "hehe");
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn maybe_slugify_paths_disabled() {
|
|
||||||
assert_eq!(maybe_slugify_paths("héhé", false), "héhé");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,10 +27,6 @@ default_language = "en"
|
||||||
# The site theme to use.
|
# The site theme to use.
|
||||||
theme = ""
|
theme = ""
|
||||||
|
|
||||||
# Slugify paths for compatibility with ASCII-only URLs produced by Zola < 0.9
|
|
||||||
# Enabling this setting removes non-English (UTF8) characters in URLs
|
|
||||||
slugify_paths = false
|
|
||||||
|
|
||||||
# When set to "true", all code blocks are highlighted.
|
# When set to "true", all code blocks are highlighted.
|
||||||
highlight_code = false
|
highlight_code = false
|
||||||
|
|
||||||
|
@ -113,6 +109,18 @@ skip_anchor_prefixes = [
|
||||||
"https://caniuse.com/",
|
"https://caniuse.com/",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# Various slugification strategies, see below for details
|
||||||
|
# Defauls to everything being a slug
|
||||||
|
[slugify]
|
||||||
|
paths = "on"
|
||||||
|
taxonomies = "on"
|
||||||
|
anchors = "on"
|
||||||
|
|
||||||
|
# Optional translation object. Keys should be language codes.
|
||||||
|
[translations]
|
||||||
|
|
||||||
|
# You can put any kind of data here. The data
|
||||||
|
# will be accessible in all templates.
|
||||||
[extra]
|
[extra]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -158,3 +166,19 @@ Zola currently has the following highlight themes available:
|
||||||
|
|
||||||
Zola uses the Sublime Text themes, making it very easy to add more.
|
Zola uses the Sublime Text themes, making it very easy to add more.
|
||||||
If you want a theme not listed above, please open an issue or a pull request on the [Zola repo](https://github.com/getzola/zola).
|
If you want a theme not listed above, please open an issue or a pull request on the [Zola repo](https://github.com/getzola/zola).
|
||||||
|
|
||||||
|
## Slugification strategies
|
||||||
|
|
||||||
|
By default, Zola will turn every path, taxonomies and anchors to a slug, an ASCII representation with no special characters.
|
||||||
|
You can however change that strategy for each kind of item, if you want UTF-8 characters in your URLs for example. There are 3 strategies:
|
||||||
|
|
||||||
|
- `on`: the default one, everything is turned into a slug
|
||||||
|
- `safe`: characters that cannot exist in files on Windows (`<>:"/\|?*`) or Unix (`/`) are removed, everything else stays
|
||||||
|
- `off`: nothing is changed, your site might not build on some OS and/or break various URL parsers
|
||||||
|
|
||||||
|
Since there are no filename issues with anchors, the `safe` and `off` strategies are identical in their case: the only change
|
||||||
|
is space being replaced by `_` since a space is not valid in an anchor.
|
||||||
|
|
||||||
|
Note that if you are using a strategy other than the default, you will have to manually escape whitespace and Markdown
|
||||||
|
tokens to be able to link to your pages. For example an internal link to a file named `some space.md` will need to be
|
||||||
|
written like `some%20space.md` in your Markdown files.
|
|
@ -405,6 +405,25 @@ pub fn serve(
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let recreate_site = || match create_new_site(
|
||||||
|
root_dir,
|
||||||
|
interface,
|
||||||
|
port,
|
||||||
|
output_dir,
|
||||||
|
base_url,
|
||||||
|
config_file,
|
||||||
|
include_drafts,
|
||||||
|
) {
|
||||||
|
Ok((s, _)) => {
|
||||||
|
rebuild_done_handling(&broadcaster, Ok(()), "/x.js");
|
||||||
|
Some(s)
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
console::error(&format!("{}", e));
|
||||||
|
None
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
match rx.recv() {
|
match rx.recv() {
|
||||||
Ok(event) => {
|
Ok(event) => {
|
||||||
|
@ -444,32 +463,17 @@ pub fn serve(
|
||||||
console::info(
|
console::info(
|
||||||
"-> Themes changed. The whole site will be reloaded.",
|
"-> Themes changed. The whole site will be reloaded.",
|
||||||
);
|
);
|
||||||
site = create_new_site(
|
|
||||||
root_dir,
|
if let Some(s) = recreate_site() {
|
||||||
interface,
|
site = s;
|
||||||
port,
|
}
|
||||||
output_dir,
|
|
||||||
base_url,
|
|
||||||
config_file,
|
|
||||||
include_drafts,
|
|
||||||
)
|
|
||||||
.unwrap()
|
|
||||||
.0;
|
|
||||||
rebuild_done_handling(&broadcaster, Ok(()), "/x.js");
|
|
||||||
}
|
}
|
||||||
ChangeKind::Config => {
|
ChangeKind::Config => {
|
||||||
console::info("-> Config changed. The whole site will be reloaded. The browser needs to be refreshed to make the changes visible.");
|
console::info("-> Config changed. The whole site will be reloaded. The browser needs to be refreshed to make the changes visible.");
|
||||||
site = create_new_site(
|
|
||||||
root_dir,
|
if let Some(s) = recreate_site() {
|
||||||
interface,
|
site = s;
|
||||||
port,
|
}
|
||||||
output_dir,
|
|
||||||
base_url,
|
|
||||||
config_file,
|
|
||||||
include_drafts,
|
|
||||||
)
|
|
||||||
.unwrap()
|
|
||||||
.0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console::report_elapsed_time(start);
|
console::report_elapsed_time(start);
|
||||||
|
@ -507,32 +511,17 @@ pub fn serve(
|
||||||
console::info(
|
console::info(
|
||||||
"-> Themes changed. The whole site will be reloaded.",
|
"-> Themes changed. The whole site will be reloaded.",
|
||||||
);
|
);
|
||||||
site = create_new_site(
|
|
||||||
root_dir,
|
if let Some(s) = recreate_site() {
|
||||||
interface,
|
site = s;
|
||||||
port,
|
}
|
||||||
output_dir,
|
|
||||||
base_url,
|
|
||||||
config_file,
|
|
||||||
include_drafts,
|
|
||||||
)
|
|
||||||
.unwrap()
|
|
||||||
.0;
|
|
||||||
rebuild_done_handling(&broadcaster, Ok(()), "/x.js");
|
|
||||||
}
|
}
|
||||||
(ChangeKind::Config, _) => {
|
(ChangeKind::Config, _) => {
|
||||||
console::info("-> Config changed. The whole site will be reloaded. The browser needs to be refreshed to make the changes visible.");
|
console::info("-> Config changed. The whole site will be reloaded. The browser needs to be refreshed to make the changes visible.");
|
||||||
site = create_new_site(
|
|
||||||
root_dir,
|
if let Some(s) = recreate_site() {
|
||||||
interface,
|
site = s;
|
||||||
port,
|
}
|
||||||
output_dir,
|
|
||||||
base_url,
|
|
||||||
config_file,
|
|
||||||
include_drafts,
|
|
||||||
)
|
|
||||||
.unwrap()
|
|
||||||
.0;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
console::report_elapsed_time(start);
|
console::report_elapsed_time(start);
|
||||||
|
|
Loading…
Reference in New Issue