| 357 | } |
| 358 | |
| 359 | private static String join(Collection<Object> objs, String delimiter) { |
| 360 | if (objs == null || objs.isEmpty()) { |
| 361 | return ""; |
| 362 | } |
| 363 | Iterator<Object> iter = objs.iterator(); |
| 364 | if (!iter.hasNext()) return ""; |
| 365 | StringBuilder builder = new StringBuilder(iter.next().toString()); |
| 366 | while (iter.hasNext()) { |
| 367 | builder.append(delimiter).append(iter.next()); |
| 368 | } |
| 369 | return builder.toString(); |
| 370 | } |
| 371 | |
| 372 | private static String jo(Scriptable value, StringifyState state) { |
| 373 | Object trackValue = value, unwrapped = null; |