Exemplo n.º 1
0
  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);
   }
 }
Exemplo n.º 3
0
  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());
  }
Exemplo n.º 4
0
  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);
  }
Exemplo n.º 5
0
  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
    }
  }