void Transform::appendEscapingTags()

in src/main/cpp/transform.cpp [26:87]


void Transform::appendEscapingTags(
	LogString& buf, const LogString& input)
{
	//Check if the string is zero length -- if so, return
	//what was sent in.

	if (input.length() == 0 )
	{
		return;
	}

	logchar specials[] = { 0x22 /* " */, 0x26 /* & */, 0x3C /* < */, 0x3E /* > */, 0x00 };
	size_t start = 0;
	size_t special = input.find_first_of(specials, start);

	while (special != LogString::npos)
	{
		if (special > start)
		{
			buf.append(input, start, special - start);
		}

		switch (input[special])
		{
			case 0x22:
				buf.append(LOG4CXX_STR("&quot;"));
				break;

			case 0x26:
				buf.append(LOG4CXX_STR("&amp;"));
				break;

			case 0x3C:
				buf.append(LOG4CXX_STR("&lt;"));
				break;

			case 0x3E:
				buf.append(LOG4CXX_STR("&gt;"));
				break;

			default:
				buf.append(1, input[special]);
				break;
		}

		start = special + 1;

		if (special < input.size())
		{
			special = input.find_first_of(specials, start);
		}
		else
		{
			special = LogString::npos;
		}
	}

	if (start < input.size())
	{
		buf.append(input, start, input.size() - start);
	}
}