From 778ec1efeb9529c221014636be310e61897cee35 Mon Sep 17 00:00:00 2001 From: n0m1s Date: Sun, 5 Jan 2020 22:48:19 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20added=20fuzzy=20search=20for=20gitm?= =?UTF-8?q?oji?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 16 ++++++++++++++++ Cargo.toml | 1 + src/main.rs | 17 +++++++++++++++-- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d115e71..8c968c5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -193,6 +193,7 @@ dependencies = [ "git2 0.11.0 (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.44 (registry+https://github.com/rust-lang/crates.io-index)", + "simsearch 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -439,6 +440,14 @@ dependencies = [ "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "simsearch" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "strsim 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "socket2" version = "0.3.11" @@ -450,6 +459,11 @@ dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "strsim" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "syn" version = "0.14.9" @@ -595,7 +609,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "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_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)" = "48c575e0cc52bdd09b47f330f646cf59afc586e9c4e3ccd6fc1f625b8ea1dad7" +"checksum simsearch 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1b83e2d460ac1b8305d8659b8cba6b2208ca0e68df9393ab1dcc4e07dda5f3c8" "checksum socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e8b74de517221a2cb01a53349cf54182acdc31a074727d3079068448c0676d85" +"checksum strsim 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" "checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" "checksum syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "dff0acdb207ae2fe6d5976617f887eb1e35a2ba52c13c7234c790960cdad9238" "checksum synstructure 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "85bb9b7550d063ea184027c9b8c20ac167cd36d3e06b3a40bceb9d746dc1a7b7" diff --git a/Cargo.toml b/Cargo.toml index 1df9d45..5474ef2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,3 +11,4 @@ curl = "0.4.25" derive_more = "0.99.2" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" +simsearch = "0.1" diff --git a/src/main.rs b/src/main.rs index 28160ea..2f6b0ae 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,16 +1,29 @@ +extern crate simsearch; + mod settings; mod gitmoji; use settings::Settings; use gitmoji::Gitmojis; +use simsearch::SimSearch; fn main() { let settings = Settings::new(None); gitmoji::update(&gitmoji::Url::default_github(), &settings.repo_path, &settings.json_path).unwrap(); - let gitmojis = Gitmojis::load(&settings.json_path).unwrap(); - for gitmoji in gitmojis.gitmojis { + let db = Gitmojis::load(&settings.json_path).unwrap(); + let mut engine: SimSearch = SimSearch::new(); + + for i in 0..db.gitmojis.len() { + let gitmoji = &db.gitmojis[i]; + + engine.insert(i, &format!("{}: {}", gitmoji.name, gitmoji.description)); + } + + let results: Vec = engine.search("lip"); + for i in results { + let gitmoji = &db.gitmojis[i]; println!("{} - {}", gitmoji.emoji, gitmoji.description); } }