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