rdc/targets/java/
cg_utils.rs1use genco::prelude::*;
2use genco::quote;
3
4pub trait Compact<T> {
5 fn compact(&self) -> T;
6 fn join(&self, sep: &str) -> T;
7}
8
9impl Compact<java::Tokens> for Vec<java::Tokens> {
10 fn compact(&self) -> java::Tokens {
11 let iter = self.iter();
12 quote!($(for t in iter => $t))
13 }
14
15 fn join(&self, sep: &str) -> java::Tokens {
16 let iter = self.iter();
17 quote!($(for t in iter join ($sep) => $t))
18 }
19}
20
21#[macro_export]
22macro_rules! quote_iter {
23 ($val:expr => $t:expr) => {{
24 $val.map($t)
25 .collect::<Vec<genco::prelude::java::Tokens>>()
26 .compact()
27 }};
28
29 ($val:expr, join($sep:expr) => $t:expr) => {{
30 $val.map($t)
31 .collect::<Vec<genco::prelude::java::Tokens>>()
32 .join($sep)
33 }};
34}