Example #1
0
		private static void WriteRoleText(XmlWriter writer, int roleIndex, bool testHyphenBinding, ref VerbalizationHyphenBinder hyphenBinder, ref string pendingPredicateText, ref bool wroteExpandedData)
		{
			if (roleIndex == -1)
			{
				writer.WriteStartElement("orm", "ExpandedData", ORMCoreDomainModel.XmlNamespace);
				if (!string.IsNullOrEmpty(pendingPredicateText))
				{
					writer.WriteAttributeString("FrontText", pendingPredicateText);
					pendingPredicateText = null;
				}
				wroteExpandedData = true;
			}
			else
			{
				string hyphenBindingFormatString;
				if (testHyphenBinding &&
					null != (hyphenBindingFormatString = hyphenBinder.GetRoleFormatString(roleIndex)) &&
					hyphenBindingFormatString.Length > 1)
				{
					writer.WriteStartElement("orm", "RoleText", ORMCoreDomainModel.XmlNamespace);
					writer.WriteAttributeString("RoleIndex", roleIndex.ToString(CultureInfo.InvariantCulture));
					int separatorIndex = hyphenBindingFormatString.IndexOf('\0');
					if (separatorIndex > 0)
					{
						writer.WriteAttributeString("PreBoundText", hyphenBindingFormatString.Substring(0, separatorIndex));
					}
					if ((hyphenBindingFormatString.Length - separatorIndex) > 1)
					{
						writer.WriteAttributeString("PostBoundText", hyphenBindingFormatString.Substring(separatorIndex + 1));
					}
					if (!string.IsNullOrEmpty(pendingPredicateText))
					{
						writer.WriteAttributeString("FollowingText", pendingPredicateText);
						pendingPredicateText = null;
					}
					writer.WriteEndElement();
				}
				else if (!string.IsNullOrEmpty(pendingPredicateText))
				{
					writer.WriteStartElement("orm", "RoleText", ORMCoreDomainModel.XmlNamespace);
					writer.WriteAttributeString("RoleIndex", roleIndex.ToString(CultureInfo.InvariantCulture));
					writer.WriteAttributeString("FollowingText", pendingPredicateText);
					pendingPredicateText = null;
					writer.WriteEndElement();
				}
			}
		}