1
1
using Rubberduck . RegexAssistant ;
2
+ using System . Collections . Generic ;
3
+ using System . Linq ;
4
+ using System . Threading . Tasks ;
5
+ using System . Windows . Controls ;
2
6
3
7
namespace Rubberduck . UI . RegexAssistant
4
8
{
@@ -51,15 +55,38 @@ public string Pattern
51
55
private bool _ignoreCaseFlag ;
52
56
private string _pattern ;
53
57
58
+ private List < TreeViewItem > _resultItems ;
59
+ public List < TreeViewItem > ResultItems
60
+ {
61
+ get
62
+ {
63
+ return _resultItems ;
64
+ }
65
+ set
66
+ {
67
+ _resultItems = value ;
68
+ OnPropertyChanged ( ) ;
69
+ }
70
+ }
71
+
54
72
private void RecalculateDescription ( )
55
73
{
56
74
if ( _pattern . Equals ( string . Empty ) )
57
75
{
58
76
_description = "No Pattern given" ;
77
+ var results = new List < TreeViewItem > ( ) ;
78
+ var rootTreeItem = new TreeViewItem ( ) ;
79
+ rootTreeItem . Header = _description ;
80
+ results . Add ( rootTreeItem ) ;
81
+ ResultItems = results ;
59
82
return ;
60
83
}
61
- _description = new Pattern ( _pattern , _ignoreCaseFlag , _ignoreCaseFlag ) . Description ;
62
- base . OnPropertyChanged ( "DescriptionResults" ) ;
84
+ var pattern = new Pattern ( _pattern , _ignoreCaseFlag , _ignoreCaseFlag ) ;
85
+ //_description = pattern.Description;
86
+ var resultItems = new List < TreeViewItem > ( ) ;
87
+ resultItems . Add ( AsTreeViewItem ( ( dynamic ) pattern . RootExpression ) ) ;
88
+ ResultItems = resultItems ;
89
+ //base.OnPropertyChanged("DescriptionResults");
63
90
}
64
91
65
92
public string DescriptionResults
@@ -69,5 +96,53 @@ public string DescriptionResults
69
96
return _description ;
70
97
}
71
98
}
99
+
100
+ private static TreeViewItem AsTreeViewItem ( IRegularExpression expression )
101
+ {
102
+ var t = expression . GetType ( ) ;
103
+
104
+ var result = new TreeViewItem ( ) ;
105
+ result . Header = "Some unknown IRegularExpression subtype was in the view" ;
106
+ foreach ( var subtree in expression . Subexpressions . Select ( exp => AsTreeViewItem ( ( dynamic ) exp ) ) )
107
+ {
108
+ result . Items . Add ( subtree ) ;
109
+ }
110
+ return result ;
111
+ }
112
+
113
+ private static TreeViewItem AsTreeViewItem ( ConcatenatedExpression expression )
114
+ {
115
+ var result = new TreeViewItem ( ) ;
116
+ result . Header = expression . Description ;
117
+ foreach ( var subtree in expression . Subexpressions . Select ( exp => AsTreeViewItem ( ( dynamic ) exp ) ) )
118
+ {
119
+ result . Items . Add ( subtree ) ;
120
+ }
121
+ return result ;
122
+ }
123
+
124
+ private static TreeViewItem AsTreeViewItem ( AlternativesExpression expression )
125
+ {
126
+ var result = new TreeViewItem ( ) ;
127
+ result . Header = expression . Description ;
128
+ foreach ( var subtree in expression . Subexpressions . Select ( exp => AsTreeViewItem ( ( dynamic ) exp ) ) )
129
+ {
130
+ result . Items . Add ( subtree ) ;
131
+ }
132
+ return result ;
133
+ }
134
+
135
+ private static TreeViewItem AsTreeViewItem ( SingleAtomExpression expression )
136
+ {
137
+ var result = new TreeViewItem ( ) ;
138
+ result . Header = expression . Description ;
139
+ // no other Atom has Subexpressions we care about
140
+ if ( expression . Atom . GetType ( ) == typeof ( Group ) )
141
+ {
142
+ result . Items . Add ( AsTreeViewItem ( ( dynamic ) ( ( expression . Atom ) as Group ) . Subexpression ) ) ;
143
+ }
144
+
145
+ return result ;
146
+ }
72
147
}
73
148
}
0 commit comments