public SyntaxTokenCollection Format(PropertySyntax syntax) { SyntaxTokenCollection tokens = new SyntaxTokenCollection(); tokens.AddRange(FormatVisibility(syntax)); tokens.Add(Constants.Space); tokens.AddRange(FormatType(syntax)); tokens.Add(Constants.Space); tokens.Add(FormatIdentifier(syntax)); tokens.Add(new SyntaxToken(" {", SyntaxTokens.Text)); if (_syntax.GetMethod != null) { tokens.Add(new SyntaxToken("\n\t", SyntaxTokens.Text)); if (syntax.GetVisibility() != syntax.GetGetterVisibility()) { tokens.AddRange(FormatGetVisibility(syntax)); tokens.Add(Constants.Space); } tokens.Add(Constants.KeywordGet); tokens.Add(new SyntaxToken(";", SyntaxTokens.Text)); } if (_syntax.SetMethod != null) { tokens.Add(new SyntaxToken("\n\t", SyntaxTokens.Text)); if (syntax.GetVisibility() != syntax.GetSetterVisibility()) { tokens.AddRange(FormatSetVisibility(syntax)); tokens.Add(Constants.Space); } tokens.Add(Constants.KeywordSet); tokens.Add(new SyntaxToken(";", SyntaxTokens.Text)); } tokens.Add(new SyntaxToken("\n\t}", SyntaxTokens.Text)); return(tokens); }
public SyntaxTokenCollection Format(EventSyntax syntax) { SyntaxTokenCollection tokens = new SyntaxTokenCollection(); SyntaxToken inheritanceModifier = FormatInheritance(syntax); tokens.AddRange(FormatVisibility(syntax)); if (inheritanceModifier != null) { tokens.Add(Constants.Space); tokens.Add(inheritanceModifier); } tokens.Add(Constants.Space); tokens.Add(Constants.KeywordEvent); tokens.Add(Constants.Space); tokens.AddRange(FormatType(syntax)); tokens.Add(Constants.Space); tokens.Add(new SyntaxToken(syntax.GetIdentifier(), SyntaxTokens.Text)); tokens.Add(new SyntaxToken(" {\n\t", SyntaxTokens.Text)); tokens.Add(Constants.KeywordEventAdd); tokens.Add(new SyntaxToken(";\n\t", SyntaxTokens.Text)); tokens.Add(Constants.KeywordEventRemove); tokens.Add(new SyntaxToken(";\n\t", SyntaxTokens.Text)); tokens.Add(new SyntaxToken("}", SyntaxTokens.Text)); return(tokens); }
public SyntaxTokenCollection Format(MethodSyntax syntax) { SyntaxTokenCollection tokens = new SyntaxTokenCollection(); SyntaxToken inheritanceModifier = FormatInheritance(syntax); tokens.AddRange(FormatVisibility(syntax)); if (inheritanceModifier != null) { tokens.Add(Constants.Space); tokens.Add(inheritanceModifier); } tokens.Add(Constants.Space); tokens.AddRange(FormatReturnType(syntax)); tokens.Add(Constants.Space); tokens.Add(new SyntaxToken(syntax.GetIdentifier(), SyntaxTokens.Text)); if (syntax.Method.IsGeneric) { tokens.Add(Constants.GenericStart); List <GenericTypeRef> genericTypes = syntax.GetGenericParameters(); for (int i = 0; i < genericTypes.Count; i++) { if (i != 0) { tokens.Add(new SyntaxToken(", ", SyntaxTokens.Text)); } tokens.Add(FormatTypeName(genericTypes[i])); } tokens.Add(Constants.GenericEnd); } tokens.AddRange(FormatParameters(syntax)); return(tokens); }
/// <summary> /// Formats the provided <paramref name="syntax"/> instance based on a /// c# class decleration. /// </summary> /// <param name="syntax">The syntax for format.</param> /// <returns>A fully formatted c# class decleration.</returns> public SyntaxTokenCollection Format(ClassSyntax syntax) { SyntaxTokenCollection tokens = new SyntaxTokenCollection(); SyntaxToken inheritanceModifier = FormatInheritance(syntax); tokens.AddRange(FormatVisibility(syntax)); if (inheritanceModifier != null) { tokens.Add(Constants.Space); tokens.Add(inheritanceModifier); } tokens.Add(Constants.Space); tokens.Add(Constants.KeywordClass); tokens.Add(Constants.Space); tokens.Add(new SyntaxToken(syntax.GetIdentifier(), SyntaxTokens.Text)); if (_syntax.Class.IsGeneric) { List <GenericTypeRef> genericTypes = _syntax.GetGenericParameters(); tokens.AddRange(FormatGenericParameters(genericTypes)); } tokens.AddRange(FormatClassBase(syntax)); return(tokens); }
private void TestIt(string method, string expected) { TypeDef container = _assemblyDef.FindType(NamespaceName, TypeName); MethodDef testMethod = container.Methods.First(p => p.Name == method); IFormatter formatter = CreateFormatter(testMethod); SyntaxTokenCollection tokens = formatter.Format(); Assert.AreEqual(expected, tokens.ToString()); }
public SyntaxTokenCollection Format(FieldSyntax syntax) { SyntaxTokenCollection tokens = new SyntaxTokenCollection(); tokens.AddRange(GetVisibility(syntax)); tokens.Add(Constants.Space); tokens.Add(GetType(syntax)); tokens.Add(Constants.Space); tokens.Add(new SyntaxToken(syntax.GetIdentifier(), SyntaxTokens.Text)); return(tokens); }
public SyntaxTokenCollection Format(OperatorSyntax syntax) { SyntaxTokenCollection tokens = new SyntaxTokenCollection(); string identifier = syntax.GetIdentifier(); SyntaxToken inheritanceModifier = FormatInheritance(syntax); tokens.AddRange(FormatVisibility(syntax)); if (inheritanceModifier != null) { tokens.Add(Constants.Space); tokens.Add(inheritanceModifier); } if (identifier == "op_Explicit") { tokens.Add(Constants.Space); tokens.Add(new SyntaxToken("Narrowing", SyntaxTokens.Keyword)); } else if (identifier == "op_Implicit") { tokens.Add(Constants.Space); tokens.Add(new SyntaxToken("Widening", SyntaxTokens.Keyword)); } tokens.Add(Constants.Space); tokens.Add(new SyntaxToken("Operator", SyntaxTokens.Keyword)); tokens.Add(Constants.Space); tokens.AddRange(FormatName(syntax)); if (syntax.Method.IsGeneric) { tokens.Add(new SyntaxToken("<", SyntaxTokens.Text)); List <GenericTypeRef> genericTypes = syntax.GetGenericParameters(); for (int i = 0; i < genericTypes.Count; i++) { if (i != 0) { tokens.Add(new SyntaxToken(", ", SyntaxTokens.Text)); } tokens.Add(FormatTypeName(genericTypes[i])); } tokens.Add(new SyntaxToken(">", SyntaxTokens.Text)); } tokens.AddRange(FormatParameters(syntax)); tokens.Add(Constants.Space); tokens.Add(Constants.KeywordAs); tokens.Add(Constants.Space); tokens.AddRange(FormatReturnType(syntax)); return(tokens); }
public SyntaxTokenCollection Format(StructSyntax syntax) { SyntaxTokenCollection tokens = new SyntaxTokenCollection(); tokens.AddRange(FormatVisibility(syntax)); tokens.Add(Constants.Space); tokens.Add(Constants.KeywordStruct); tokens.Add(Constants.Space); tokens.Add(new SyntaxToken(syntax.GetIdentifier(), SyntaxTokens.Text)); tokens.Add(Constants.Space); tokens.AddRange(FormatInterfaces(syntax)); return(tokens); }
public SyntaxTokenCollection Format(EnumSyntax syntax) { SyntaxTokenCollection tokens = new SyntaxTokenCollection(); tokens.AddRange(FormatVisibility(syntax)); tokens.Add(Constants.Space); tokens.Add(Constants.KeywordEnumeration); tokens.Add(Constants.Space); tokens.Add(new SyntaxToken(syntax.GetIdentifier(), SyntaxTokens.Text)); tokens.Add(new SyntaxToken(" : ", SyntaxTokens.Text)); tokens.Add(FormatTypeName(syntax.GetUnderlyingType())); return tokens; }
public SyntaxTokenCollection Format(IndexorSyntax syntax) { SyntaxTokenCollection tokens = new SyntaxTokenCollection(); tokens.AddRange(FormatVisibility(syntax)); tokens.Add(Constants.Space); tokens.Add(new SyntaxToken("Property", SyntaxTokens.Keyword)); tokens.Add(Constants.Space); tokens.Add(FormatIdentifier(syntax)); tokens.Add(Constants.Space); tokens.Add(Constants.KeywordAs); tokens.Add(Constants.Space); tokens.AddRange(FormatType(syntax)); return(tokens); }
public SyntaxTokenCollection Format(ConstantSyntax syntax) { SyntaxTokenCollection tokens = new SyntaxTokenCollection(); // e.g. Protected Const MyConstant As Integer tokens.AddRange(GetVisibility(syntax)); tokens.Add(Constants.Space); tokens.Add(new SyntaxToken("Const", SyntaxTokens.Keyword)); tokens.Add(Constants.Space); tokens.Add(new SyntaxToken(syntax.GetIdentifier(), SyntaxTokens.Text)); tokens.Add(Constants.Space); tokens.Add(Constants.KeywordAs); tokens.Add(Constants.Space); tokens.Add(GetType(syntax)); return(tokens); }
public SyntaxTokenCollection Format(ConstructorSyntax syntax) { SyntaxTokenCollection tokens = new SyntaxTokenCollection(); SyntaxToken inheritanceModifier = FormatInheritance(syntax); tokens.AddRange(FormatVisibility(syntax)); if (inheritanceModifier != null) { tokens.Add(Constants.Space); tokens.Add(inheritanceModifier); } tokens.Add(Constants.Space); tokens.Add(new SyntaxToken(syntax.GetIdentifier(), SyntaxTokens.Text)); tokens.AddRange(FormatParameters(syntax)); return(tokens); }
public SyntaxTokenCollection Format(DelegateSyntax syntax) { SyntaxTokenCollection tokens = new SyntaxTokenCollection(); tokens.AddRange(FormatVisibility(syntax)); tokens.Add(Constants.Space); tokens.Add(Constants.KeywordDelegate); tokens.Add(Constants.Space); tokens.AddRange(FormatReturnType(syntax)); tokens.Add(Constants.Space); tokens.Add(new SyntaxToken(syntax.GetIdentifier(), SyntaxTokens.Text)); if (_syntax.Class.IsGeneric) { List <GenericTypeRef> genericTypes = _syntax.GetGenericParameters(); tokens.AddRange(FormatGenericParameters(genericTypes)); } tokens.AddRange(FormatParameters(syntax.Method)); return(tokens); }
public SyntaxTokenCollection Format(InterfaceSyntax syntax) { SyntaxTokenCollection tokens = new SyntaxTokenCollection(); tokens.AddRange(FormatVisibility(syntax)); tokens.Add(Constants.Space); tokens.Add(new SyntaxToken("Interface", SyntaxTokens.Keyword)); tokens.Add(Constants.Space); tokens.Add(new SyntaxToken(syntax.GetIdentifier(), SyntaxTokens.Text)); List <SyntaxToken> baseTokens = FormatInterfaceBase(syntax); if (baseTokens.Count > 0) { tokens.Add(new SyntaxToken(" _\n\t", SyntaxTokens.Text)); tokens.AddRange(baseTokens); } return(tokens); }
public SyntaxTokenCollection Format(DelegateSyntax syntax) { SyntaxTokenCollection tokens = new SyntaxTokenCollection(); tokens.AddRange(FormatVisibility(syntax)); tokens.Add(Constants.Space); tokens.Add(new SyntaxToken("Delegate", SyntaxTokens.Keyword)); tokens.Add(Constants.Space); if (IsMethodFunction(syntax.GetReturnType())) { tokens.Add(Constants.KeywordFunction); } else { tokens.Add(Constants.KeywordSub); } tokens.Add(Constants.Space); tokens.Add(new SyntaxToken(syntax.GetIdentifier(), SyntaxTokens.Text)); tokens.AddRange(FormatParameters(syntax.Method)); // Add the generic details of the delegate if (_syntax.Class.IsGeneric) { List <GenericTypeRef> genericTypes = _syntax.GetGenericParameters(); tokens.AddRange(FormatGenericParameters(genericTypes)); } if (this.IsMethodFunction(syntax.GetReturnType())) { tokens.Add(Constants.Space); tokens.Add(Constants.KeywordAs); tokens.Add(Constants.Space); tokens.AddRange(FormatReturnType(syntax)); } return(tokens); }
/// <summary> /// Formats the indexer based on the language specification as a /// collection of syntax tokens. /// </summary> /// <param name="syntax">The syntax class that describes the indexer.</param> /// <returns>The collection of tokens describing the indexer in the language</returns> public SyntaxTokenCollection Format(IndexorSyntax syntax) { SyntaxTokenCollection tokens = new SyntaxTokenCollection(); tokens.AddRange(FormatVisibility(syntax)); tokens.Add(Constants.Space); tokens.AddRange(FormatType(syntax)); tokens.Add(Constants.Space); tokens.Add(FormatIdentifier(syntax)); // Provide the properties to access the indexer, these are // obtained from the get method. MethodSyntax getMethod = new MethodSyntax( _syntax.GetMethod != null ? _syntax.GetMethod : _syntax.SetMethod ); tokens.Add(new SyntaxToken("[", SyntaxTokens.Text)); List <ParameterDetails> parameters = getMethod.GetParameters(); // dont output the last parameter if we are not using the get method as it is the return value... for (int i = 0; i < parameters.Count; i++) { ParameterDetails current = parameters[i]; tokens.AddRange(FormatTypeDetails(current.TypeDetails)); tokens.Add(Constants.Space); tokens.Add(new SyntaxToken(current.Name, SyntaxTokens.Text)); if (i < parameters.Count - 1) { tokens.Add(new SyntaxToken(", ", SyntaxTokens.Text)); } } tokens.Add(new SyntaxToken("]", SyntaxTokens.Text)); tokens.Add(new SyntaxToken(" {", SyntaxTokens.Text)); if (_syntax.GetMethod != null) { tokens.Add(new SyntaxToken("\n\t", SyntaxTokens.Text)); if (syntax.GetVisibility() != syntax.GetGetterVisibility()) { tokens.AddRange(FormatGetVisibility(syntax)); tokens.Add(Constants.Space); } tokens.Add(Constants.KeywordGet); tokens.Add(new SyntaxToken(";", SyntaxTokens.Text)); } if (this._syntax.SetMethod != null) { tokens.Add(new SyntaxToken("\n\t", SyntaxTokens.Text)); if (syntax.GetVisibility() != syntax.GetSetterVisibility()) { tokens.AddRange(FormatSetVisibility(syntax)); tokens.Add(Constants.Space); } tokens.Add(Constants.KeywordSet); tokens.Add(new SyntaxToken(";", SyntaxTokens.Text)); } tokens.Add(new SyntaxToken("\n\t}", SyntaxTokens.Text)); return(tokens); }