Browse Source

Try pulldown-cmark instead of comrak

Supposed to be fast
master
Dylan Baker 5 years ago
parent
commit
aade0d66a3
4 changed files with 28 additions and 96 deletions
  1. 21
    89
      Cargo.lock
  2. 1
    1
      Cargo.toml
  3. 5
    5
      src/entry.rs
  4. 1
    1
      src/lib.rs

+ 21
- 89
Cargo.lock View File

@@ -34,6 +34,11 @@ name = "bitflags"
34 34
 version = "0.7.0"
35 35
 source = "registry+https://github.com/rust-lang/crates.io-index"
36 36
 
37
+[[package]]
38
+name = "bitflags"
39
+version = "0.8.2"
40
+source = "registry+https://github.com/rust-lang/crates.io-index"
41
+
37 42
 [[package]]
38 43
 name = "bitflags"
39 44
 version = "1.0.4"
@@ -59,10 +64,10 @@ version = "0.2.0"
59 64
 dependencies = [
60 65
  "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
61 66
  "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
62
- "comrak 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
63 67
  "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
64 68
  "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
65 69
  "notify 4.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
70
+ "pulldown-cmark 0.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
66 71
  "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
67 72
  "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
68 73
  "toml 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -106,22 +111,6 @@ dependencies = [
106 111
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
107 112
 ]
108 113
 
109
-[[package]]
110
-name = "comrak"
111
-version = "0.3.1"
112
-source = "registry+https://github.com/rust-lang/crates.io-index"
113
-dependencies = [
114
- "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
115
- "entities 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
116
- "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
117
- "pest 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
118
- "pest_derive 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
119
- "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
120
- "twoway 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
121
- "typed-arena 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
122
- "unicode_categories 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
123
-]
124
-
125 114
 [[package]]
126 115
 name = "crossbeam-utils"
127 116
 version = "0.6.1"
@@ -130,11 +119,6 @@ dependencies = [
130 119
  "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
131 120
 ]
132 121
 
133
-[[package]]
134
-name = "entities"
135
-version = "1.0.1"
136
-source = "registry+https://github.com/rust-lang/crates.io-index"
137
-
138 122
 [[package]]
139 123
 name = "filetime"
140 124
 version = "0.2.4"
@@ -187,6 +171,14 @@ name = "futures"
187 171
 version = "0.1.25"
188 172
 source = "registry+https://github.com/rust-lang/crates.io-index"
189 173
 
174
+[[package]]
175
+name = "getopts"
176
+version = "0.2.18"
177
+source = "registry+https://github.com/rust-lang/crates.io-index"
178
+dependencies = [
179
+ "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
180
+]
181
+
190 182
 [[package]]
191 183
 name = "inotify"
192 184
 version = "0.6.1"
@@ -388,25 +380,14 @@ dependencies = [
388 380
 ]
389 381
 
390 382
 [[package]]
391
-name = "pest"
392
-version = "1.0.6"
393
-source = "registry+https://github.com/rust-lang/crates.io-index"
394
-
395
-[[package]]
396
-name = "pest_derive"
397
-version = "1.0.8"
383
+name = "pulldown-cmark"
384
+version = "0.0.11"
398 385
 source = "registry+https://github.com/rust-lang/crates.io-index"
399 386
 dependencies = [
400
- "pest 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
401
- "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
402
- "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)",
387
+ "bitflags 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
388
+ "getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
403 389
 ]
404 390
 
405
-[[package]]
406
-name = "quote"
407
-version = "0.3.15"
408
-source = "registry+https://github.com/rust-lang/crates.io-index"
409
-
410 391
 [[package]]
411 392
 name = "rand"
412 393
 version = "0.5.5"
@@ -615,24 +596,6 @@ name = "strsim"
615 596
 version = "0.7.0"
616 597
 source = "registry+https://github.com/rust-lang/crates.io-index"
617 598
 
618
-[[package]]
619
-name = "syn"
620
-version = "0.11.11"
621
-source = "registry+https://github.com/rust-lang/crates.io-index"
622
-dependencies = [
623
- "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
624
- "synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)",
625
- "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
626
-]
627
-
628
-[[package]]
629
-name = "synom"
630
-version = "0.11.3"
631
-source = "registry+https://github.com/rust-lang/crates.io-index"
632
-dependencies = [
633
- "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
634
-]
635
-
636 599
 [[package]]
637 600
 name = "tempfile"
638 601
 version = "3.0.5"
@@ -725,19 +688,6 @@ dependencies = [
725 688
  "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)",
726 689
 ]
727 690
 
728
-[[package]]
729
-name = "twoway"
730
-version = "0.1.8"
731
-source = "registry+https://github.com/rust-lang/crates.io-index"
732
-dependencies = [
733
- "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
734
-]
735
-
736
-[[package]]
737
-name = "typed-arena"
738
-version = "1.4.1"
739
-source = "registry+https://github.com/rust-lang/crates.io-index"
740
-
741 691
 [[package]]
742 692
 name = "ucd-util"
743 693
 version = "0.1.3"
@@ -748,16 +698,6 @@ name = "unicode-width"
748 698
 version = "0.1.5"
749 699
 source = "registry+https://github.com/rust-lang/crates.io-index"
750 700
 
751
-[[package]]
752
-name = "unicode-xid"
753
-version = "0.0.4"
754
-source = "registry+https://github.com/rust-lang/crates.io-index"
755
-
756
-[[package]]
757
-name = "unicode_categories"
758
-version = "0.1.1"
759
-source = "registry+https://github.com/rust-lang/crates.io-index"
760
-
761 701
 [[package]]
762 702
 name = "unreachable"
763 703
 version = "1.0.0"
@@ -856,6 +796,7 @@ dependencies = [
856 796
 "checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652"
857 797
 "checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799"
858 798
 "checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"
799
+"checksum bitflags 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1370e9fc2a6ae53aea8b7a5110edbd08836ed87c88736dfabccade1c2b44bff4"
859 800
 "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12"
860 801
 "checksum byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "94f88df23a25417badc922ab0f5716cc1330e87f71ddd9203b3a3ccd9cedf75d"
861 802
 "checksum bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "40ade3d27603c2cb345eb0912aec461a6dec7e06a4ae48589904e808335c7afa"
@@ -863,9 +804,7 @@ dependencies = [
863 804
 "checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878"
864 805
 "checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e"
865 806
 "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
866
-"checksum comrak 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a9bd60be8877a3343d25b9a3dadbaf7f02f9ac843b54e663ecef73e29e8b9c6b"
867 807
 "checksum crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c55913cc2799171a550e307918c0a360e8c16004820291bf3b638969b4a01816"
868
-"checksum entities 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca"
869 808
 "checksum filetime 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a2df5c1a8c4be27e7707789dc42ae65976e60b394afd293d1419ab915833e646"
870 809
 "checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674"
871 810
 "checksum fsevent 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)" = "c4bbbf71584aeed076100b5665ac14e3d85eeb31fdbb45fbd41ef9a682b5ec05"
@@ -873,6 +812,7 @@ dependencies = [
873 812
 "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
874 813
 "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
875 814
 "checksum futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b"
815
+"checksum getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "0a7292d30132fb5424b354f5dc02512a86e4c516fe544bb7a25e7f266951b797"
876 816
 "checksum inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b54539f3910d6f84fbf9a643efd6e3aa6e4f001426c0329576128255994718"
877 817
 "checksum inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e74a1aa87c59aeff6ef2cc2fa62d41bc43f54952f55652656b18a02fd5e356c0"
878 818
 "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08"
@@ -894,9 +834,7 @@ dependencies = [
894 834
 "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13"
895 835
 "checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5"
896 836
 "checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c"
897
-"checksum pest 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0fce5d8b5cc33983fc74f78ad552b5522ab41442c4ca91606e4236eb4b5ceefc"
898
-"checksum pest_derive 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3294f437119209b084c797604295f40227cffa35c57220b1e99a6ff3bf8ee4"
899
-"checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"
837
+"checksum pulldown-cmark 0.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "4c7c04a8bb38f80717527edea39c82378c2ef13ecdbc914cbd90653a2e24afdf"
900 838
 "checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c"
901 839
 "checksum rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3906503e80ac6cbcacb2c2973fa8e473f24d7e2747c8c92bb230c2441cad96b5"
902 840
 "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
@@ -923,8 +861,6 @@ dependencies = [
923 861
 "checksum smallvec 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "622df2d454c29a4d89b30dc3b27b42d7d90d6b9e587dbf8f67652eb7514da484"
924 862
 "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8"
925 863
 "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550"
926
-"checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad"
927
-"checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"
928 864
 "checksum tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7e91405c14320e5c79b3d148e1c86f40749a36e490642202a31689cb1a3452b2"
929 865
 "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096"
930 866
 "checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6"
@@ -934,12 +870,8 @@ dependencies = [
934 870
 "checksum tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "7392fe0a70d5ce0c882c4778116c519bd5dbaa8a7c3ae3d04578b3afafdcda21"
935 871
 "checksum tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "502b625acb4ee13cbb3b90b8ca80e0addd263ddacf6931666ef751e610b07fb5"
936 872
 "checksum toml 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4a2ecc31b0351ea18b3fe11274b8db6e4d82bce861bbb22e6dbed40417902c65"
937
-"checksum twoway 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "59b11b2b5241ba34be09c3cc85a36e56e48f9888862e19cedf23336d35316ed1"
938
-"checksum typed-arena 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c6c06a92aef38bb4dc5b0df00d68496fc31307c5344c867bb61678c6e1671ec5"
939 873
 "checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86"
940 874
 "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526"
941
-"checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"
942
-"checksum unicode_categories 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e"
943 875
 "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56"
944 876
 "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737"
945 877
 "checksum uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dab5c5526c5caa3d106653401a267fed923e7046f35895ffcb5ca42db64942e6"

+ 1
- 1
Cargo.toml View File

@@ -10,10 +10,10 @@ repository = "https://git.sr.ht/~simulacrumparty/casaubon"
10 10
 [dependencies]
11 11
 chrono = "0.4"
12 12
 clap = "2.32.0"
13
-comrak = "0.3"
14 13
 fs_extra = "1.1.0"
15 14
 lazy_static = "1.2.0"
16 15
 notify = "4.0.0"
16
+pulldown-cmark = "0.0.11"
17 17
 regex = "1"
18 18
 tempfile = "3"
19 19
 toml = "0.4.8"

+ 5
- 5
src/entry.rs View File

@@ -1,5 +1,5 @@
1 1
 use chrono::NaiveDate;
2
-use comrak::{markdown_to_html, ComrakOptions};
2
+use pulldown_cmark::{html, Parser};
3 3
 use regex::Regex;
4 4
 
5 5
 use std::fs;
@@ -24,6 +24,9 @@ pub struct Entry {
24 24
 
25 25
 impl Entry {
26 26
     fn render(&self, template: &str, config: &Config) -> String {
27
+        let parser = Parser::new(&self.body);
28
+        let mut html_buf = String::new();
29
+        html::push_html(&mut html_buf, parser);
27 30
         let formatted_date = match self.date {
28 31
             Some(date) => date.format("%Y-%m-%d").to_string(),
29 32
             None => String::from(""),
@@ -35,10 +38,7 @@ impl Entry {
35 38
             )
36 39
             .replace("{{ title }}", &self.title)
37 40
             .replace("{{ slug }}", &self.slug)
38
-            .replace(
39
-                "{{ body }}",
40
-                &markdown_to_html(&self.body, &ComrakOptions::default()),
41
-            )
41
+            .replace("{{ body }}", &html_buf.to_string())
42 42
             .replace("{{ date }}", &formatted_date)
43 43
     }
44 44
 }

+ 1
- 1
src/lib.rs View File

@@ -1,9 +1,9 @@
1 1
 extern crate chrono;
2
-extern crate comrak;
3 2
 extern crate fs_extra;
4 3
 #[macro_use]
5 4
 extern crate lazy_static;
6 5
 extern crate notify;
6
+extern crate pulldown_cmark;
7 7
 extern crate regex;
8 8
 extern crate toml;
9 9
 extern crate uuid;

Loading…
Cancel
Save