From 2558ce9a00676eacac8cbf7964c61585000c17ba Mon Sep 17 00:00:00 2001 From: Kerollmops Date: Mon, 18 May 2020 12:40:33 +0200 Subject: [PATCH] Export the value_to_string helper function --- .../src/update/documents_addition.rs | 59 ++++++++++--------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/meilisearch-core/src/update/documents_addition.rs b/meilisearch-core/src/update/documents_addition.rs index ddb3c8340..e737e5068 100644 --- a/meilisearch-core/src/update/documents_addition.rs +++ b/meilisearch-core/src/update/documents_addition.rs @@ -118,29 +118,6 @@ fn index_value( value: &Value, ) -> Option { - fn value_to_string(string: &mut String, value: &Value) { - match value { - Value::Null => (), - Value::Bool(boolean) => { let _ = write!(string, "{}", &boolean); }, - Value::Number(number) => { let _ = write!(string, "{}", &number); }, - Value::String(text) => string.push_str(&text), - Value::Array(array) => { - for value in array { - value_to_string(string, value); - let _ = string.write_str(". "); - } - }, - Value::Object(object) => { - for (key, value) in object { - string.push_str(key); - let _ = string.write_str(". "); - value_to_string(string, value); - let _ = string.write_str(". "); - } - }, - } - } - match value { Value::Null => None, Value::Bool(boolean) => { @@ -158,20 +135,48 @@ fn index_value( Some(number_of_words) }, Value::Array(_) => { - let mut text = String::new(); - value_to_string(&mut text, value); + let text = value_to_string(value); let number_of_words = indexer.index_text(document_id, indexed_pos, &text); Some(number_of_words) }, Value::Object(_) => { - let mut text = String::new(); - value_to_string(&mut text, value); + let text = value_to_string(value); let number_of_words = indexer.index_text(document_id, indexed_pos, &text); Some(number_of_words) }, } } +// TODO move this helper functions elsewhere +fn value_to_string(value: &Value) -> String { + fn internal_value_to_string(string: &mut String, value: &Value) { + match value { + Value::Null => (), + Value::Bool(boolean) => { let _ = write!(string, "{}", &boolean); }, + Value::Number(number) => { let _ = write!(string, "{}", &number); }, + Value::String(text) => string.push_str(&text), + Value::Array(array) => { + for value in array { + internal_value_to_string(string, value); + let _ = string.write_str(". "); + } + }, + Value::Object(object) => { + for (key, value) in object { + string.push_str(key); + let _ = string.write_str(". "); + internal_value_to_string(string, value); + let _ = string.write_str(". "); + } + }, + } + } + + let mut string = String::new(); + internal_value_to_string(&mut string, value); + string +} + // TODO move this helper functions elsewhere fn value_to_number(value: &Value) -> Option { use std::str::FromStr;