ArrayBasedUnicodeEscaper.java 2.65 KB
package com.google.common.escape;

import com.google.common.annotations.Beta;
import com.google.common.annotations.GwtCompatible;
import com.google.common.base.Preconditions;
import java.util.Map;
import javax.annotation.Nullable;

@Beta
@GwtCompatible
public abstract class ArrayBasedUnicodeEscaper
  extends UnicodeEscaper
{
  private final char[][] a;
  private final int b;
  private final int c;
  private final int d;
  private final char e;
  private final char f;
  
  protected ArrayBasedUnicodeEscaper(ArrayBasedEscaperMap paramArrayBasedEscaperMap, int paramInt1, int paramInt2, @Nullable String paramString)
  {
    Preconditions.checkNotNull(paramArrayBasedEscaperMap);
    this.a = paramArrayBasedEscaperMap.a;
    this.b = this.a.length;
    int j = paramInt1;
    int i = paramInt2;
    if (paramInt2 < paramInt1)
    {
      i = -1;
      j = Integer.MAX_VALUE;
    }
    this.c = j;
    this.d = i;
    if (j >= 55296)
    {
      this.e = 65535;
      this.f = '\000';
      return;
    }
    this.e = ((char)j);
    this.f = ((char)Math.min(i, 55295));
  }
  
  protected ArrayBasedUnicodeEscaper(Map<Character, String> paramMap, int paramInt1, int paramInt2, @Nullable String paramString)
  {
    this(ArrayBasedEscaperMap.create(paramMap), paramInt1, paramInt2, paramString);
  }
  
  public final String escape(String paramString)
  {
    Preconditions.checkNotNull(paramString);
    int i = 0;
    for (;;)
    {
      String str = paramString;
      if (i < paramString.length())
      {
        int j = paramString.charAt(i);
        if (((j < this.b) && (this.a[j] != null)) || (j > this.f) || (j < this.e)) {
          str = escapeSlow(paramString, i);
        }
      }
      else
      {
        return str;
      }
      i += 1;
    }
  }
  
  protected final char[] escape(int paramInt)
  {
    if (paramInt < this.b)
    {
      char[] arrayOfChar = this.a[paramInt];
      if (arrayOfChar != null) {
        return arrayOfChar;
      }
    }
    if ((paramInt >= this.c) && (paramInt <= this.d)) {
      return null;
    }
    return escapeUnsafe(paramInt);
  }
  
  protected abstract char[] escapeUnsafe(int paramInt);
  
  protected final int nextEscapeIndex(CharSequence paramCharSequence, int paramInt1, int paramInt2)
  {
    while (paramInt1 < paramInt2)
    {
      int i = paramCharSequence.charAt(paramInt1);
      if (((i < this.b) && (this.a[i] != null)) || (i > this.f) || (i < this.e)) {
        break;
      }
      paramInt1 += 1;
    }
    return paramInt1;
  }
}


/* Location:              /home/merong/decompile/hackery-dex2jar.jar!/com/google/common/escape/ArrayBasedUnicodeEscaper.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       0.7.1
 */