1e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sappersteinpackage com.android.mail.utils;
2e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein
3e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sappersteinimport android.support.v4.text.BidiFormatter;
4e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein
5e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein/**
6e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein * A small utility class for working with strings.
7e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein */
8e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sappersteinpublic class StringUtils {
9e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein
10e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein    /**
11e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein     * Returns a string containing the tokens joined by delimiters.
12e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein     * Additionally, each token is first passed through {@link BidiFormatter#unicodeWrap(String)}
13e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein     * before appending to the string.
14e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein     */
15e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein    public static String joinAndBidiFormat(String delimiter, Iterable<String> tokens) {
16e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein        return joinAndBidiFormat(delimiter, tokens, BidiFormatter.getInstance());
17e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein    }
18e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein
19e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein    /**
20e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein     * Returns a string containing the tokens joined by delimiters.
21e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein     * Additionally, each token is first passed through {@link BidiFormatter#unicodeWrap(String)}
22e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein     * before appending to the string.
23e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein     */
24e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein    public static String joinAndBidiFormat(
25e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein            String delimiter, Iterable<String> tokens, BidiFormatter bidiFormatter) {
26e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein        final StringBuilder sb = new StringBuilder();
27e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein        boolean firstTime = true;
28e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein        for (String token : tokens) {
29e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein            if (firstTime) {
30e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein                firstTime = false;
31e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein            } else {
32e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein                sb.append(delimiter);
33e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein            }
34e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein            sb.append(bidiFormatter.unicodeWrap(token));
35e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein        }
36e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein        return sb.toString();
37e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein    }
38e4d9cf0795b197d3ca9a3716df1063f56abd0a5fAndrew Sapperstein}
39