in tapestry-framework/src/org/apache/tapestry/AbstractMarkupWriter.java [793:841]
private void safePrint(char[] data, int offset, int length, boolean isAttribute)
{
int safelength = 0;
int start = offset;
for (int i = 0; i < length; i++)
{
char ch = data[offset + i];
// Ignore safe characters. In an attribute, quotes
// are not ok and are escaped.
boolean isSafe = (ch < _safe.length && _safe[ch]);
if (isAttribute && ch == '"')
isSafe = false;
if (isSafe)
{
safelength++;
continue;
}
// Write the safe stuff.
if (safelength > 0)
_writer.write(data, start, safelength);
String entity = null;
// Look for a known entity.
if (ch < _entities.length)
entity = _entities[ch];
// Failing that, emit a numeric entity.
if (entity == null)
entity = "&#" + (int) ch + ";";
_writer.print(entity);
start = offset + i + 1;
safelength = 0;
}
if (safelength > 0)
_writer.write(data, start, safelength);
}