1
+ using Rubberduck . Parsing . Rewriter ;
2
+ using Rubberduck . Parsing . VBA . Parsing ;
3
+ using Rubberduck . VBEditor ;
4
+
5
+ namespace Rubberduck . Refactorings
6
+ {
7
+ public abstract class RefactoringPreviewProviderWrapperBase < TModel > : IRefactoringPreviewProvider < TModel >
8
+ where TModel : class , IRefactoringModel
9
+ {
10
+ private readonly IRewritingManager _rewritingManager ;
11
+ private readonly ICodeOnlyRefactoringAction < TModel > _refactoringAction ;
12
+
13
+ protected RefactoringPreviewProviderWrapperBase (
14
+ ICodeOnlyRefactoringAction < TModel > refactoringAction ,
15
+ IRewritingManager rewritingManager )
16
+ {
17
+ _refactoringAction = refactoringAction ;
18
+ _rewritingManager = rewritingManager ;
19
+ }
20
+
21
+ protected abstract QualifiedModuleName ComponentToShow ( TModel model ) ;
22
+
23
+ public string Preview ( TModel model )
24
+ {
25
+ var rewriteSession = RewriteSession ( RewriteSessionCodeKind ) ;
26
+ _refactoringAction . Refactor ( model , rewriteSession ) ;
27
+ var componentToShow = ComponentToShow ( model ) ;
28
+ var rewriter = rewriteSession . CheckOutModuleRewriter ( componentToShow ) ;
29
+ return rewriter . GetText ( ) ;
30
+ }
31
+
32
+ private IExecutableRewriteSession RewriteSession ( CodeKind codeKind )
33
+ {
34
+ return codeKind == CodeKind . AttributesCode
35
+ ? _rewritingManager . CheckOutAttributesSession ( )
36
+ : _rewritingManager . CheckOutCodePaneSession ( ) ;
37
+ }
38
+
39
+ protected virtual CodeKind RewriteSessionCodeKind => CodeKind . CodePaneCode ;
40
+ }
41
+ }
0 commit comments