public string FormatMemberNameToken(string token, IMember member, IIntermediateCodeTranslatorOptions options, bool declarePoint) { TranslatorFormatterMemberType memberType = TranslatorFormatterMemberType.Local; string titleText = string.Empty; if (member is IMethodMember) { memberType = TranslatorFormatterMemberType.Method; titleText = string.Format("(method) {0}", member.GetUniqueIdentifier()); } else if (member is IMethodSignatureMember) { memberType = TranslatorFormatterMemberType.MethodSignature; titleText = string.Format("(method) {0}", member.GetUniqueIdentifier()); } else if (member is IPropertyMember || member is IIndexerMember) { memberType = TranslatorFormatterMemberType.Property; var pMember = ((IPropertyMember)member); titleText = string.Format("(property) {0} {1}", pMember.PropertyType.ToString(), member.GetUniqueIdentifier()); } else if (member is IPropertySignatureMember || member is IIndexerSignatureMember) { memberType = TranslatorFormatterMemberType.PropertySignature; var pMember = ((IPropertySignatureMember)member); titleText = string.Format("(property) {0} {1}", pMember.PropertyType.ToString(), member.GetUniqueIdentifier()); } else if (member is IMethodParameterMember) { memberType = TranslatorFormatterMemberType.Parameter; var pMember = ((IMethodParameterMember)member); titleText = string.Format("(parameter) {0} {1}", pMember.ParameterType.ToString(), member.GetUniqueIdentifier()); } else if (member is IMethodSignatureParameterMember) { memberType = TranslatorFormatterMemberType.Parameter; var pMember = ((IMethodSignatureParameterMember)member); titleText = string.Format("(parameter) {0} {1}", pMember.ParameterType.ToString(), member.GetUniqueIdentifier()); } else if (member is IIndexerParameterMember) { memberType = TranslatorFormatterMemberType.Parameter; var pMember = ((IIndexerParameterMember)member); titleText = string.Format("(parameter) {0} {1}", pMember.ParameterType.ToString(), member.GetUniqueIdentifier()); } else if (member is IIndexerSignatureParameterMember) { memberType = TranslatorFormatterMemberType.Parameter; var pMember = ((IIndexerSignatureParameterMember)member); titleText = string.Format("(parameter) {0} {1}", pMember.ParameterType.ToString(), member.GetUniqueIdentifier()); } else if (member is IConstructorParameterMember) { memberType = TranslatorFormatterMemberType.Parameter; var pMember = ((IConstructorParameterMember)member); titleText = string.Format("(parameter) {0} {1}", pMember.ParameterType.ToString(), member.GetUniqueIdentifier()); } else if (member is IFieldMember) { var fMember = ((IFieldMember)member); titleText = string.Format("(field) {0} {1}", fMember.FieldType.ToString(), member.GetUniqueIdentifier()); memberType = TranslatorFormatterMemberType.Field; } else if (member is IStatementBlockLocalMember) { var lMember = ((IStatementBlockLocalMember)member); titleText = string.Format("(local variable) {0} {1}", lMember.LocalType.ToString(), member.GetUniqueIdentifier()); memberType = TranslatorFormatterMemberType.Local; } var activeType = options.BuildTrail.FirstOrDefault(p => p is IDeclaredType) as IDeclaredType; string result = token.HtmlEncode(); if (declarePoint) { string targetName = string.Format("m:{0}::{1}", activeType.GetTypeName(options, true), GetMemberUniqueIdentifier(member).Replace("<", "[").Replace(">", "]").Replace("(", "%28").Replace(")", "%29")); result = string.Format("<a name=\"{1}\"></a>{0}", result, targetName); } result = FormatMemberNameToken(result, memberType); var declaringType = GetDeclaringType(member); if (!declarePoint && declaringType != null) { string targetName = string.Format("m:{0}::{1}", declaringType.GetTypeName(options, true), GetMemberUniqueIdentifier(member).Replace("<", "[").Replace(">", "]").Replace("(", "%28").Replace(")", "%29")); result = string.Format("<a style=\"text-decoration:none;\" {3}href=\"{0}#{1}\">{2}</a>", options.GetFileNameOf(declaringType), targetName, result, string.IsNullOrEmpty(titleText) ? string.Empty : string.Format("title=\"{0}\" ", titleText)); } return(result); }
public string FormatTypeNameToken(string identifierToken, IType type, IIntermediateCodeTranslatorOptions options, bool declarePoint) { string color = ""; bool bold = false; if (type.IsDelegate) { color = delegateColor; } else if (type.IsClass) { color = classColor; bold = true; } else if (type.IsInterface) { color = interfaceColor; } else if (type.IsEnumerator) { color = enumColor; } else if (type.IsStructure) { color = structColor; } string result = identifierToken; if (declarePoint && type is IDeclaredType) { result = string.Format("<a name=\"t:{1}\"></a>{0}", result, type.GetTypeName(options, true)); } if (bold) { result = string.Format("<span style=\"color:{0};font-weight:bolder;\">{1}</span>", color, result); } else { result = string.Format("<span style=\"color:{0};\">{1}</span>", color, result); } if (!declarePoint && options.GetFileNameOf != null && type is IDeclaredType) { result = string.Format("<a style=\"text-decoration:none;\" href=\"{1}#t:{2}\">{0}</a>", result, options.GetFileNameOf(type), type.GetTypeName(options, true)); } return(result); }
public string FormatLabelToken(string labelName, ILabelStatement label, IIntermediateCodeTranslatorOptions options, bool declarePoint) { var parentTarget = label.SourceBlock; Stack <int> indices = new Stack <int>(); indices.Push(parentTarget.IndexOf(label)); while (parentTarget.Parent is IStatementBlock) { var oldTarget = parentTarget; parentTarget = (IStatementBlock)parentTarget.Parent; indices.Push(parentTarget.IndexOf((IStatement)oldTarget)); } var parentMember = parentTarget.Parent as IMember; string uniqueIdentifier; string result = labelName; var activeType = options.BuildTrail.FirstOrDefault(p => p is IDeclaredType) as IDeclaredType; if (parentMember == null) { uniqueIdentifier = label.Name; } else { uniqueIdentifier = string.Format("{0}::{{{1}}}", parentMember.GetUniqueIdentifier(), string.Join("}.{", (from i in indices select i.ToString()).ToArray())); } if (declarePoint) { result = string.Format("<a name=\"{0}\"></a>{1}", uniqueIdentifier, result); } string titleText = string.Format("(label) {0}", labelName); result = FormatMemberNameToken(result, TranslatorFormatterMemberType.Label); if (!declarePoint) { result = string.Format("<a style=\"text-decoration:none;\" {3}href=\"{0}#{1}\">{2}</a>", options.GetFileNameOf(activeType), uniqueIdentifier, result, string.IsNullOrEmpty(titleText) ? string.Empty : string.Format("title=\"{0}\" ", titleText)); } return(result); }