private void WriteText(Member member)
{
TextAccessor text = member.Mapping.Text;
if (text.Mapping is SpecialMapping)
{
SpecialMapping special = (SpecialMapping)text.Mapping;
WriteSourceBeginTyped(member.ArraySource, special.TypeDesc);
switch (special.TypeDesc.Kind)
{
case TypeKind.Node:
Writer.Write("Document.CreateTextNode(Reader.ReadString())");
break;
default:
throw new InvalidOperationException(SR.XmlInternalError);
}
WriteSourceEnd(member.ArraySource);
}
else
{
if (member.IsArrayLike)
{
WriteSourceBegin(member.ArraySource);
if (text.Mapping.TypeDesc.CollapseWhitespace)
{
Writer.Write("CollapseWhitespace(Reader.ReadString())");
}
else
{
Writer.Write("Reader.ReadString()");
}
}
else
{
if (text.Mapping.TypeDesc == StringTypeDesc || text.Mapping.TypeDesc.FormatterName == "String")
{
Writer.Write("tmp = ReadString(tmp, ");
if (text.Mapping.TypeDesc.CollapseWhitespace)
Writer.WriteLine("true);");
else
Writer.WriteLine("false);");
WriteSourceBegin(member.ArraySource);
Writer.Write("tmp");
}
else
{
WriteSourceBegin(member.ArraySource);
WritePrimitive(text.Mapping, "Reader.ReadString()");
}
}
WriteSourceEnd(member.ArraySource);
}
Writer.WriteLine(";");
}