133873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultzpackage com.xtremelabs.robolectric.shadows;
23a15df058f1e3fd7fbff5c3b17126249f1ed909aChristian Williams & Ryan Richard
33a15df058f1e3fd7fbff5c3b17126249f1ed909aChristian Williams & Ryan Richardimport android.text.TextUtils;
422c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implementation;
522c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implements;
652db1b0d94ef698425ebd641ad7fecc5f674a4dbTyler Schultzimport com.xtremelabs.robolectric.util.Join;
752db1b0d94ef698425ebd641ad7fecc5f674a4dbTyler Schultz
852db1b0d94ef698425ebd641ad7fecc5f674a4dbTyler Schultzimport java.util.Collection;
93a15df058f1e3fd7fbff5c3b17126249f1ed909aChristian Williams & Ryan Richard
103a15df058f1e3fd7fbff5c3b17126249f1ed909aChristian Williams & Ryan Richard@SuppressWarnings({"UnusedDeclaration"})
113a15df058f1e3fd7fbff5c3b17126249f1ed909aChristian Williams & Ryan Richard@Implements(TextUtils.class)
12afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williamspublic class ShadowTextUtils {
13de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
143a15df058f1e3fd7fbff5c3b17126249f1ed909aChristian Williams & Ryan Richard    public static CharSequence expandTemplate(CharSequence template,
153a15df058f1e3fd7fbff5c3b17126249f1ed909aChristian Williams & Ryan Richard                                              CharSequence... values) {
163a15df058f1e3fd7fbff5c3b17126249f1ed909aChristian Williams & Ryan Richard        String s = template.toString();
173a15df058f1e3fd7fbff5c3b17126249f1ed909aChristian Williams & Ryan Richard        for (int i = 0, valuesLength = values.length; i < valuesLength; i++) {
183a15df058f1e3fd7fbff5c3b17126249f1ed909aChristian Williams & Ryan Richard            CharSequence value = values[i];
193a15df058f1e3fd7fbff5c3b17126249f1ed909aChristian Williams & Ryan Richard            s = s.replace("^" + (i + 1), value);
203a15df058f1e3fd7fbff5c3b17126249f1ed909aChristian Williams & Ryan Richard        }
213a15df058f1e3fd7fbff5c3b17126249f1ed909aChristian Williams & Ryan Richard        return s;
223a15df058f1e3fd7fbff5c3b17126249f1ed909aChristian Williams & Ryan Richard    }
237b451e9ee0ea07caeb2a0667ab44a321a36127ffJan Berkel
247b451e9ee0ea07caeb2a0667ab44a321a36127ffJan Berkel    @Implementation
257b451e9ee0ea07caeb2a0667ab44a321a36127ffJan Berkel    public static boolean isEmpty(CharSequence s) {
267b451e9ee0ea07caeb2a0667ab44a321a36127ffJan Berkel      return (s == null || s.length() == 0);
277b451e9ee0ea07caeb2a0667ab44a321a36127ffJan Berkel    }
2883003bbf38ccf4556ccc09ed9ce97c7725d58623Jan Berkel
2983003bbf38ccf4556ccc09ed9ce97c7725d58623Jan Berkel    @Implementation
30b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen    public static int getTrimmedLength(CharSequence s) {
31b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen        int len = s.length();
32b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen
33b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen        int start = 0;
34b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen        while (start < len && s.charAt(start) <= ' ') {
35b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen            start++;
36b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen        }
37b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen
38b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen        int end = len;
39b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen        while (end > start && s.charAt(end - 1) <= ' ') {
40b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen            end--;
41b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen        }
42b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen
43b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen        return end - start;
44b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen    }
45b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen
46b94e22bd3dae3749629c3d9e14bf52bfb7ce78a1Jon Boekenoogen    @Implementation
4783003bbf38ccf4556ccc09ed9ce97c7725d58623Jan Berkel    public static String join(CharSequence delimiter, Iterable tokens) {
4852db1b0d94ef698425ebd641ad7fecc5f674a4dbTyler Schultz        return Join.join((String) delimiter, (Collection) tokens);
4983003bbf38ccf4556ccc09ed9ce97c7725d58623Jan Berkel    }
5083003bbf38ccf4556ccc09ed9ce97c7725d58623Jan Berkel
5183003bbf38ccf4556ccc09ed9ce97c7725d58623Jan Berkel    @Implementation
5283003bbf38ccf4556ccc09ed9ce97c7725d58623Jan Berkel    public static String join(CharSequence delimiter, Object[] tokens) {
5352db1b0d94ef698425ebd641ad7fecc5f674a4dbTyler Schultz        return Join.join((String) delimiter, tokens);
5483003bbf38ccf4556ccc09ed9ce97c7725d58623Jan Berkel    }
55a16489f7f239bf6974e4f5607bb071670ae02245Jon Boekenoogen
56a16489f7f239bf6974e4f5607bb071670ae02245Jon Boekenoogen    @Implementation
57a16489f7f239bf6974e4f5607bb071670ae02245Jon Boekenoogen    public static boolean isDigitsOnly(CharSequence str) {
58a16489f7f239bf6974e4f5607bb071670ae02245Jon Boekenoogen        final int len = str.length();
59a16489f7f239bf6974e4f5607bb071670ae02245Jon Boekenoogen        for (int i = 0; i < len; i++) {
60a16489f7f239bf6974e4f5607bb071670ae02245Jon Boekenoogen          if (!Character.isDigit(str.charAt(i))) {
61a16489f7f239bf6974e4f5607bb071670ae02245Jon Boekenoogen            return false;
62a16489f7f239bf6974e4f5607bb071670ae02245Jon Boekenoogen          }
63a16489f7f239bf6974e4f5607bb071670ae02245Jon Boekenoogen        }
64a16489f7f239bf6974e4f5607bb071670ae02245Jon Boekenoogen        return true;
65a16489f7f239bf6974e4f5607bb071670ae02245Jon Boekenoogen    }
66d928e52bac8898c3058cb0a7cce7d1ac9eb94c3bJessica Chen
67d928e52bac8898c3058cb0a7cce7d1ac9eb94c3bJessica Chen    @Implementation
68d928e52bac8898c3058cb0a7cce7d1ac9eb94c3bJessica Chen    public static String[] split(String text, String expression) {
69d928e52bac8898c3058cb0a7cce7d1ac9eb94c3bJessica Chen    	if(text.length() == 0) {
70d928e52bac8898c3058cb0a7cce7d1ac9eb94c3bJessica Chen    		return new String[]{};
71d928e52bac8898c3058cb0a7cce7d1ac9eb94c3bJessica Chen    	}
72d928e52bac8898c3058cb0a7cce7d1ac9eb94c3bJessica Chen
73d928e52bac8898c3058cb0a7cce7d1ac9eb94c3bJessica Chen    	return text.split(expression);
74d928e52bac8898c3058cb0a7cce7d1ac9eb94c3bJessica Chen    }
753a15df058f1e3fd7fbff5c3b17126249f1ed909aChristian Williams & Ryan Richard}
76