using System;
using CTA.Rules.Actions.ActionHelpers;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editing;
namespace CTA.Rules.Update
{
///
/// List of actions that can run on Member Accesses
///
public class MemberAccessActions
{
public Func GetAddCommentAction(string comment)
{
SyntaxNode AddComment(SyntaxGenerator syntaxGenerator, SyntaxNode node)
{
if (node is Microsoft.CodeAnalysis.VisualBasic.Syntax.MemberAccessExpressionSyntax)
{
return CommentHelper.AddVBComment(node, comment);
}
else
{
return CommentHelper.AddCSharpComment(node, comment);
}
}
return AddComment;
}
public Func GetRemoveMemberAccessAction(string _)
{
static SyntaxNode RemoveMemberAccess(SyntaxGenerator syntaxGenerator, SyntaxNode node)
{
if(node is MemberAccessExpressionSyntax)
{
return (node as MemberAccessExpressionSyntax).Expression;
}
if (node is Microsoft.CodeAnalysis.VisualBasic.Syntax.MemberAccessExpressionSyntax)
{
return (node as Microsoft.CodeAnalysis.VisualBasic.Syntax.MemberAccessExpressionSyntax).Expression;
}
return node;
}
return RemoveMemberAccess;
}
}
}