private String func_78283_c(String p_78283_1_) { if (p_78283_1_ != null && Bidi.requiresBidi(p_78283_1_.toCharArray(), 0, p_78283_1_.length())) { Bidi var2 = new Bidi(p_78283_1_, -2); byte[] var3 = new byte[var2.getRunCount()]; String[] var4 = new String[var3.length]; int var7; for (int var5 = 0; var5 < var3.length; ++var5) { int var6 = var2.getRunStart(var5); var7 = var2.getRunLimit(var5); int var8 = var2.getRunLevel(var5); String var9 = p_78283_1_.substring(var6, var7); var3[var5] = (byte) var8; var4[var5] = var9; } String[] var11 = (String[]) var4.clone(); Bidi.reorderVisually(var3, 0, var4, 0, var3.length); StringBuilder var12 = new StringBuilder(); var7 = 0; while (var7 < var4.length) { byte var13 = var3[var7]; int var14 = 0; while (true) { if (var14 < var11.length) { if (!var11[var14].equals(var4[var7])) { ++var14; continue; } var13 = var3[var14]; } if ((var13 & 1) == 0) { var12.append(var4[var7]); } else { for (var14 = var4[var7].length() - 1; var14 >= 0; --var14) { char var10 = var4[var7].charAt(var14); if (var10 == 40) { var10 = 41; } else if (var10 == 41) { var10 = 40; } var12.append(var10); } } ++var7; break; } } return var12.toString(); } else { return p_78283_1_; } }
private static void reorderRunsVisually(BidiRun[] bidiRunsInLogicalOrder) { if (bidiRunsInLogicalOrder.length > 1) { byte[] levels = new byte[bidiRunsInLogicalOrder.length]; for (int i = 0; i < bidiRunsInLogicalOrder.length; i++) { levels[i] = bidiRunsInLogicalOrder[i].level; } Bidi.reorderVisually(levels, 0, bidiRunsInLogicalOrder, 0, levels.length); } }
public void testReorderVisually() { String[] init = new String[] {"a", "b", "c", "d"}; String[] s = new String[4]; System.arraycopy(init, 0, s, 0, s.length); Bidi.reorderVisually(new byte[] {2, 1, 3, 0}, 0, s, 0, 4); assertEquals("[c, b, a, d]", Arrays.asList(s).toString()); System.arraycopy(init, 0, s, 0, s.length); Bidi.reorderVisually(new byte[] {1, 3}, 0, s, 1, 2); assertEquals("[a, c, b, d]", Arrays.asList(s).toString()); System.arraycopy(init, 0, s, 0, s.length); Bidi.reorderVisually(new byte[] {2, 1, 3, 0}, 1, s, 1, 2); assertEquals("[a, c, b, d]", Arrays.asList(s).toString()); System.arraycopy(init, 0, s, 0, s.length); Bidi.reorderVisually(new byte[] {2, 1, 2, 1}, 1, s, 0, 3); assertEquals("[c, b, a, d]", Arrays.asList(s).toString()); System.arraycopy(init, 0, s, 0, s.length); Bidi.reorderVisually(new byte[] {2, 1, 0, 1}, 1, s, 0, 3); assertEquals("[a, b, c, d]", Arrays.asList(s).toString()); }
public void testOne(TestHarness harness, String input, String levels, String expected) { Object[] inputA = new Object[input.length()]; byte[] levelsA = new byte[levels.length()]; for (int i = 0; i < input.length(); ++i) { inputA[i] = input.substring(i, i + 1); levelsA[i] = (byte) (levels.charAt(i) - '0'); } Bidi.reorderVisually(levelsA, 0, inputA, 0, inputA.length); StringBuffer result = new StringBuffer(); for (int i = 0; i < inputA.length; ++i) result.append(inputA[i]); harness.check(result.toString(), expected); }
public void testBadReorderVisually() { String[] s = new String[] {"a", "b", "c", "d"}; try { Bidi.reorderVisually(new byte[] {2, 1, 3, 0}, 0, s, 0, 5); fail("should throw IAE"); } catch (IllegalArgumentException e) { // expected } try { Bidi.reorderVisually(new byte[] {2, 1, 3, 0}, 0, s, -1, 1); fail("should throw IAE"); } catch (IllegalArgumentException e) { // expected } try { Bidi.reorderVisually(new byte[] {2, 1, 3, 0}, -1, s, 0, 1); fail("should throw IAE"); } catch (IllegalArgumentException e) { // expected } try { Bidi.reorderVisually(null, 0, s, 0, 1); fail("should throw NPE"); } catch (NullPointerException e) { // expected } try { Bidi.reorderVisually(new byte[] {2, 1, 3, 0}, 0, null, 0, 1); fail("should throw NPE"); } catch (NullPointerException e) { // expected } try { Bidi.reorderVisually(new byte[] {2, 1, 3, 0}, 1, s, 0, -1); fail("should throw IAE"); } catch (IllegalArgumentException e) { // expected } }