package java.text;
import java.util.Comparator;
import com.dragome.commons.javascript.ScriptHelper;
public abstract class Collator implements Comparator<Object>
{
protected Collator()
{
}
// According the ECMAScript Language Specification, the method localeCompare must return
// 0 or -0 when comparing two strings that are considered canonically equivalent by the Unicode standard.
// This is not honored by Safari. As a workaround, we compute the offset to the expected 0 value. Calls
// method String.compareTo are then corrected by this value.
static int equalityOffset= ScriptHelper.evalInt("'a'.localeCompare('a')", null);
public int compare(Object o1, Object o2)
{
return compare((String) o1, (String) o2);
}
public abstract int compare(String o1, String o2);
/**
* Gets the Collator for the desired locale.
*/
public static Collator getInstance()
{
return new Collator()
{
public int compare(String s1, String s2)
{
ScriptHelper.put("s1", s1, this);
ScriptHelper.put("s2", s2, this);
return ScriptHelper.evalInt("s1.localeCompare(s2)", this) - equalityOffset;
}
};
}
}