From 83806ba8e6dbdb0ecd861a94704266bcc12b9998 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Mon, 22 Oct 2018 15:31:34 -0700 Subject: [PATCH] Finishing up library version of ripgrep. --- scripts/webserver.sh | 2 +- server/service/src/main.rs | 23 +++++++++++++++-------- server/ui/src/index.tsx | 2 +- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/scripts/webserver.sh b/scripts/webserver.sh index 07eb6e1..2330de1 100755 --- a/scripts/webserver.sh +++ b/scripts/webserver.sh @@ -2,4 +2,4 @@ cd ../server/ui yarn yarn build cd ../service -cargo run +cargo run --release diff --git a/server/service/src/main.rs b/server/service/src/main.rs index f4382d7..d316a63 100644 --- a/server/service/src/main.rs +++ b/server/service/src/main.rs @@ -9,7 +9,7 @@ use actix_web::{fs, http, server, App, HttpResponse, Query}; use std::error::Error; -use grep::regex::RegexMatcher; +use grep::regex::RegexMatcherBuilder; use grep::searcher::sinks::Lossy; use grep::searcher::{BinaryDetection, SearcherBuilder}; use std::fs::File; @@ -47,23 +47,30 @@ fn search(query: Query) -> HttpResponse { fn ripgrep(query: Query) -> String { let page = query.page.unwrap_or(1); let size = query.size.unwrap_or(10); - let offset = size * (page - 1) + 1; + let offset = size * (page - 1); let csv_file = File::open("../../torrents.csv"); - println!( - "query = {} , page = {}, size = {}, offset = {}", - query.q, page, size, offset - ); + println!("query = {} , page = {}, size = {}", query.q, page, size); let results = search_file(csv_file.unwrap(), &query.q).unwrap(); - results[offset - 1..offset + size].join("") + let last: usize = if offset + size < results.len() { + offset + size + } else { + results.len() + }; + + results[offset..last].join("") } fn search_file(file: File, query: &str) -> Result, Box> { let pattern = query.replace(" ", ".*"); - let matcher = RegexMatcher::new_line_matcher(&pattern)?; + let matcher = RegexMatcherBuilder::new() + .case_insensitive(true) + .build(&pattern) + .unwrap(); + let mut matches: Vec = vec![]; let mut searcher = SearcherBuilder::new() diff --git a/server/ui/src/index.tsx b/server/ui/src/index.tsx index 9f2e1c5..95bbb96 100644 --- a/server/ui/src/index.tsx +++ b/server/ui/src/index.tsx @@ -1,5 +1,5 @@ import { render, Component, linkEvent } from 'inferno'; -import moment from 'moment'; +import * as moment from 'moment'; import { endpoint } from './env'; import { SearchParams, Results, State } from './interfaces';