PageRenderTime 62ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/framework/java/jd-gui/android/text/util/Rfc822Tokenizer.java

https://bitbucket.org/chameleonos/miui_frameworks
Java | 288 lines | 276 code | 8 blank | 4 comment | 101 complexity | 5acb657cd0f20eef95c7a0d69be7a5e4 MD5 | raw file
  1. package android.text.util;
  2. import android.widget.MultiAutoCompleteTextView.Tokenizer;
  3. import java.util.ArrayList;
  4. import java.util.Collection;
  5. public class Rfc822Tokenizer
  6. implements MultiAutoCompleteTextView.Tokenizer
  7. {
  8. private static void crunch(StringBuilder paramStringBuilder)
  9. {
  10. int i = 0;
  11. int j = paramStringBuilder.length();
  12. while (i < j)
  13. if (paramStringBuilder.charAt(i) == 0)
  14. {
  15. if ((i == 0) || (i == j - 1) || (paramStringBuilder.charAt(i - 1) == ' ') || (paramStringBuilder.charAt(i - 1) == 0) || (paramStringBuilder.charAt(i + 1) == ' ') || (paramStringBuilder.charAt(i + 1) == 0))
  16. {
  17. paramStringBuilder.deleteCharAt(i);
  18. j--;
  19. }
  20. else
  21. {
  22. i++;
  23. }
  24. }
  25. else
  26. i++;
  27. for (int k = 0; k < j; k++)
  28. if (paramStringBuilder.charAt(k) == 0)
  29. paramStringBuilder.setCharAt(k, ' ');
  30. }
  31. public static void tokenize(CharSequence paramCharSequence, Collection<Rfc822Token> paramCollection)
  32. {
  33. StringBuilder localStringBuilder1 = new StringBuilder();
  34. StringBuilder localStringBuilder2 = new StringBuilder();
  35. StringBuilder localStringBuilder3 = new StringBuilder();
  36. int i = 0;
  37. int j = paramCharSequence.length();
  38. while (i < j)
  39. {
  40. char c1 = paramCharSequence.charAt(i);
  41. if ((c1 == ',') || (c1 == ';'))
  42. {
  43. i++;
  44. while ((i < j) && (paramCharSequence.charAt(i) == ' '))
  45. i++;
  46. crunch(localStringBuilder1);
  47. if (localStringBuilder2.length() > 0)
  48. paramCollection.add(new Rfc822Token(localStringBuilder1.toString(), localStringBuilder2.toString(), localStringBuilder3.toString()));
  49. while (true)
  50. {
  51. localStringBuilder1.setLength(0);
  52. localStringBuilder2.setLength(0);
  53. localStringBuilder3.setLength(0);
  54. break;
  55. if (localStringBuilder1.length() > 0)
  56. paramCollection.add(new Rfc822Token(null, localStringBuilder1.toString(), localStringBuilder3.toString()));
  57. }
  58. }
  59. if (c1 == '"')
  60. {
  61. i++;
  62. while (true)
  63. {
  64. if (i >= j)
  65. break label275;
  66. char c4 = paramCharSequence.charAt(i);
  67. if (c4 == '"')
  68. {
  69. i++;
  70. break;
  71. }
  72. if (c4 == '\\')
  73. {
  74. if (i + 1 < j)
  75. localStringBuilder1.append(paramCharSequence.charAt(i + 1));
  76. i += 2;
  77. }
  78. else
  79. {
  80. localStringBuilder1.append(c4);
  81. i++;
  82. }
  83. }
  84. }
  85. else
  86. {
  87. label275: if (c1 == '(')
  88. {
  89. int k = 1;
  90. i++;
  91. while ((i < j) && (k > 0))
  92. {
  93. char c3 = paramCharSequence.charAt(i);
  94. if (c3 == ')')
  95. {
  96. if (k > 1)
  97. localStringBuilder3.append(c3);
  98. k--;
  99. i++;
  100. }
  101. else if (c3 == '(')
  102. {
  103. localStringBuilder3.append(c3);
  104. k++;
  105. i++;
  106. }
  107. else if (c3 == '\\')
  108. {
  109. if (i + 1 < j)
  110. localStringBuilder3.append(paramCharSequence.charAt(i + 1));
  111. i += 2;
  112. }
  113. else
  114. {
  115. localStringBuilder3.append(c3);
  116. i++;
  117. }
  118. }
  119. }
  120. else if (c1 == '<')
  121. {
  122. i++;
  123. while (true)
  124. {
  125. if (i >= j)
  126. break label469;
  127. char c2 = paramCharSequence.charAt(i);
  128. if (c2 == '>')
  129. {
  130. i++;
  131. break;
  132. }
  133. localStringBuilder2.append(c2);
  134. i++;
  135. }
  136. }
  137. else
  138. {
  139. label469: if (c1 == ' ')
  140. {
  141. localStringBuilder1.append('\000');
  142. i++;
  143. }
  144. else
  145. {
  146. localStringBuilder1.append(c1);
  147. i++;
  148. }
  149. }
  150. }
  151. }
  152. crunch(localStringBuilder1);
  153. if (localStringBuilder2.length() > 0)
  154. paramCollection.add(new Rfc822Token(localStringBuilder1.toString(), localStringBuilder2.toString(), localStringBuilder3.toString()));
  155. while (true)
  156. {
  157. return;
  158. if (localStringBuilder1.length() > 0)
  159. paramCollection.add(new Rfc822Token(null, localStringBuilder1.toString(), localStringBuilder3.toString()));
  160. }
  161. }
  162. public static Rfc822Token[] tokenize(CharSequence paramCharSequence)
  163. {
  164. ArrayList localArrayList = new ArrayList();
  165. tokenize(paramCharSequence, localArrayList);
  166. return (Rfc822Token[])localArrayList.toArray(new Rfc822Token[localArrayList.size()]);
  167. }
  168. public int findTokenEnd(CharSequence paramCharSequence, int paramInt)
  169. {
  170. int i = paramCharSequence.length();
  171. int j = paramInt;
  172. while (true)
  173. {
  174. int k;
  175. if (j < i)
  176. {
  177. k = paramCharSequence.charAt(j);
  178. if ((k != 44) && (k != 59));
  179. }
  180. else
  181. {
  182. return j;
  183. }
  184. if (k == 34)
  185. {
  186. j++;
  187. while (true)
  188. {
  189. if (j >= i)
  190. break label107;
  191. int i1 = paramCharSequence.charAt(j);
  192. if (i1 == 34)
  193. {
  194. j++;
  195. break;
  196. }
  197. if ((i1 == 92) && (j + 1 < i))
  198. j += 2;
  199. else
  200. j++;
  201. }
  202. }
  203. else
  204. {
  205. label107: if (k == 40)
  206. {
  207. int m = 1;
  208. j++;
  209. while ((j < i) && (m > 0))
  210. {
  211. int n = paramCharSequence.charAt(j);
  212. if (n == 41)
  213. {
  214. m--;
  215. j++;
  216. }
  217. else if (n == 40)
  218. {
  219. m++;
  220. j++;
  221. }
  222. else if ((n == 92) && (j + 1 < i))
  223. {
  224. j += 2;
  225. }
  226. else
  227. {
  228. j++;
  229. }
  230. }
  231. }
  232. else if (k == 60)
  233. {
  234. j++;
  235. while (true)
  236. {
  237. if (j >= i)
  238. break label241;
  239. if (paramCharSequence.charAt(j) == '>')
  240. {
  241. j++;
  242. break;
  243. }
  244. j++;
  245. }
  246. }
  247. else
  248. {
  249. label241: j++;
  250. }
  251. }
  252. }
  253. }
  254. public int findTokenStart(CharSequence paramCharSequence, int paramInt)
  255. {
  256. int i = 0;
  257. int j = 0;
  258. while (j < paramInt)
  259. {
  260. j = findTokenEnd(paramCharSequence, j);
  261. if (j < paramInt)
  262. {
  263. j++;
  264. while ((j < paramInt) && (paramCharSequence.charAt(j) == ' '))
  265. j++;
  266. if (j < paramInt)
  267. i = j;
  268. }
  269. }
  270. return i;
  271. }
  272. public CharSequence terminateToken(CharSequence paramCharSequence)
  273. {
  274. return paramCharSequence + ", ";
  275. }
  276. }
  277. /* Location: /home/lithium/miui/chameleon/2.11.16/framework_dex2jar.jar
  278. * Qualified Name: android.text.util.Rfc822Tokenizer
  279. * JD-Core Version: 0.6.2
  280. */