1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
use ::{Assignments, Conditions, Orders}; use itertools::Itertools; use std::borrow::Cow; pub fn escape(keyword: &str) -> String { let mut result = keyword.replace("\"", "\\\""); result.insert(0, '"'); result.push('"'); result } #[doc(hidden)] pub fn keyword_list<'a, I: Iterator<Item=&'a Cow<'static, str>>>(keywords: I) -> String { keywords.map(|i| i.to_owned()).join(", ") } #[doc(hidden)] pub fn assignment_list(assignments: &Assignments, offset: usize) -> String { assignments.iter() .map(|a| &a.0) .enumerate() .map(|(i, n)| format!("{} = ${}", n, offset + i)) .join(", ") } #[doc(hidden)] pub fn condition_list(conditions: &Conditions, mut offset: usize) -> String { conditions.iter() .map(|c| format!("{} {}", c.0, c.1.to_placeholder_string(&mut offset))) .join(" AND ") } #[doc(hidden)] pub fn order_list(orders: &Orders) -> String { orders.iter() .map(|o| format!("{} {}", o.0, o.1)) .join(", ") } #[doc(hidden)] pub fn placeholders(offset: usize, n: usize) -> String { (offset..offset+n).map(|i| format!("${}", i)).join(", ") }