From f66b5599faa5eb39a23c94398af98e2a946dd364 Mon Sep 17 00:00:00 2001 From: Luna D Date: Mon, 13 Sep 2021 00:38:46 +0200 Subject: [PATCH] clean up --- native/philomena_markdown/Cargo.lock | 158 ++++++++++++++++----------- native/philomena_markdown/Cargo.toml | 7 +- native/philomena_markdown/src/lib.rs | 84 +++----------- 3 files changed, 115 insertions(+), 134 deletions(-) diff --git a/native/philomena_markdown/Cargo.lock b/native/philomena_markdown/Cargo.lock index 1b8087b9..dc8a70b6 100644 --- a/native/philomena_markdown/Cargo.lock +++ b/native/philomena_markdown/Cargo.lock @@ -177,19 +177,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca" -[[package]] -name = "env_logger" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - [[package]] name = "fake-simd" version = "0.1.2" @@ -220,6 +207,18 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394" +[[package]] +name = "fuchsia-cprng" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" + +[[package]] +name = "gcc" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" + [[package]] name = "generic-array" version = "0.12.4" @@ -253,15 +252,6 @@ dependencies = [ "libc", ] -[[package]] -name = "humantime" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" -dependencies = [ - "quick-error", -] - [[package]] name = "indexmap" version = "1.7.0" @@ -326,15 +316,6 @@ dependencies = [ "safemem", ] -[[package]] -name = "log" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" -dependencies = [ - "cfg-if", -] - [[package]] name = "maplit" version = "1.0.2" @@ -449,14 +430,11 @@ dependencies = [ [[package]] name = "philomena_markdown" -version = "0.2.0" +version = "0.3.0" dependencies = [ "comrak", "jemallocator", - "lazy_static", - "log", - "pretty_env_logger", - "regex", + "rust-crypto", "rustler", ] @@ -480,16 +458,6 @@ dependencies = [ "xml-rs", ] -[[package]] -name = "pretty_env_logger" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "926d36b9553851b8b0005f1275891b392ee4d2d833852c417ed025477350fb9d" -dependencies = [ - "env_logger", - "log", -] - [[package]] name = "proc-macro2" version = "1.0.29" @@ -499,12 +467,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - [[package]] name = "quote" version = "1.0.9" @@ -514,6 +476,53 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "rand" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" +dependencies = [ + "libc", + "rand 0.4.6", +] + +[[package]] +name = "rand" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" +dependencies = [ + "fuchsia-cprng", + "libc", + "rand_core 0.3.1", + "rdrand", + "winapi", +] + +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +dependencies = [ + "rand_core 0.4.2", +] + +[[package]] +name = "rand_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" + +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +dependencies = [ + "rand_core 0.3.1", +] + [[package]] name = "regex" version = "1.5.4" @@ -531,6 +540,25 @@ version = "0.6.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" +[[package]] +name = "rust-crypto" +version = "0.2.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f76d05d3993fd5f4af9434e8e436db163a12a9d40e1a58a726f27a01dfd12a2a" +dependencies = [ + "gcc", + "libc", + "rand 0.3.23", + "rustc-serialize", + "time", +] + +[[package]] +name = "rustc-serialize" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" + [[package]] name = "rustler" version = "0.22.0" @@ -668,15 +696,6 @@ dependencies = [ "walkdir", ] -[[package]] -name = "termcolor" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" -dependencies = [ - "winapi-util", -] - [[package]] name = "textwrap" version = "0.11.0" @@ -686,6 +705,17 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "time" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +dependencies = [ + "libc", + "wasi", + "winapi", +] + [[package]] name = "twoway" version = "0.2.2" @@ -776,6 +806,12 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + [[package]] name = "winapi" version = "0.3.9" diff --git a/native/philomena_markdown/Cargo.toml b/native/philomena_markdown/Cargo.toml index fc691309..a0460a7d 100644 --- a/native/philomena_markdown/Cargo.toml +++ b/native/philomena_markdown/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "philomena_markdown" -version = "0.2.0" +version = "0.3.0" authors = ["Xe ", "Luna ", "Liam White "] edition = "2018" @@ -11,12 +11,9 @@ crate-type = ["dylib"] [dependencies] comrak = { git = "https://github.com/philomena-dev/comrak", branch = "main" } -lazy_static = "1.4" -regex = "1.5" -log = "0" -pretty_env_logger = "0" rustler = "0.22" jemallocator = "0.3.2" +rust-crypto = "0.2" [profile.release] opt-level = 3 diff --git a/native/philomena_markdown/src/lib.rs b/native/philomena_markdown/src/lib.rs index fed1baae..e8fdcfab 100644 --- a/native/philomena_markdown/src/lib.rs +++ b/native/philomena_markdown/src/lib.rs @@ -1,92 +1,40 @@ use comrak::{markdown_to_html, ComrakOptions}; -use lazy_static::lazy_static; -use regex::{Captures, Regex}; -use rustler::Term; use jemallocator::Jemalloc; #[global_allocator] static GLOBAL: Jemalloc = Jemalloc; -mod atoms { - rustler::atoms! { - ok, - } -} - rustler::init! { "Elixir.Philomena.Markdown", [to_html, to_html_unsafe] } -const IMAGE_MENTION_REGEX: &'static str = r#">>([0-9]+)([|t|s|p]?)"#; - -lazy_static! { - static ref IMAGE_MENTION_REPLACE: Regex = Regex::new(IMAGE_MENTION_REGEX).unwrap(); +fn common_options() -> ComrakOptions { + let mut options = ComrakOptions::default(); + options.extension.autolink = true; + options.extension.table = true; + options.extension.description_lists = true; + options.extension.superscript = true; + options.extension.strikethrough = true; + options.extension.philomena = true; + options.parse.smart = true; + options.render.hardbreaks = true; + options.render.github_pre_lang = true; + options } #[rustler::nif(schedule = "DirtyCpu")] fn to_html(input: String) -> String { - let _ = pretty_env_logger::try_init(); - let mut text: String = input; - - if text.contains(">>") { - text = text.replace(">>", ">>"); - } - - let mut options = ComrakOptions::default(); - options.extension.autolink = true; - options.extension.table = true; - options.extension.description_lists = true; - options.extension.superscript = true; - options.extension.strikethrough = true; - options.extension.philomena = true; - options.parse.smart = true; - options.render.hardbreaks = true; - options.render.github_pre_lang = true; + let mut options = common_options(); options.render.escape = true; - let mut result = markdown_to_html(&text, &options); - result = match IMAGE_MENTION_REPLACE.captures(&result) { - None => result, - Some(fields) => { - match fields.get(2).unwrap().as_str() { - "t" => result, // TODO(Xe): thumbnail rendering - "s" => result, // TODO(Xe): small preview rendering - "p" => result, // TODO(Xe): large preview rendering - "" => String::from( - IMAGE_MENTION_REPLACE.replace_all(&result, |caps: &Captures| { - format!(r#">>{0}"#, &caps[1]) - }), - ), - _ => result, - } - } - }; - - result + markdown_to_html(&input, &options) } #[rustler::nif(schedule = "DirtyCpu")] fn to_html_unsafe(input: String) -> String { - let mut text: String = input; - - if text.contains(">>") { - text = text.replace(">>", ">>"); - } - - let mut options = ComrakOptions::default(); - options.extension.autolink = true; - options.extension.table = true; - options.extension.description_lists = true; - options.extension.superscript = true; - options.extension.strikethrough = true; - options.extension.philomena = true; - options.parse.smart = true; - options.render.hardbreaks = true; - options.render.github_pre_lang = true; + let mut options = common_options(); options.render.unsafe_ = true; - let result = markdown_to_html(&text, &options); - - result + markdown_to_html(&input, &options) }