source: trunk/CrypPlugins/RegularExpressions/RegExMatch.cs @ 792

Last change on this file since 792 was 792, checked in by wiefels, 12 years ago

regular expression expanded by adding REPLACE

File size: 5.5 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.IO;
6using System.ComponentModel;
7
8using Cryptool.PluginBase;
9using Cryptool.PluginBase.Validation;
10using Cryptool;
11using Cryptool.PluginBase.IO;
12using Cryptool.PluginBase.Miscellaneous;
13
14using System.Text.RegularExpressions;
15
16namespace Cryptool.Plugins.RegularExpressions
17{
18    [Author("Daniel Kohnen", "kohnen@cryptool.org", "Universität Duisburg Essen", "http://www.uni-due.de")]
19    [PluginInfo(false, "Regular Expression Match", "Matching Regular Expression", "", "RegularExpressions/icons/regmatchicon.png")]
20
21
22    public class RegExMatch : IThroughput
23    {
24        #region Private variables
25
26        private RegExMatchSettings settings;
27        private string input;
28        private string pattern;
29        private string outputText;
30        private Boolean outputBool = false;
31
32        # endregion
33
34        # region Public Methods
35
36        public RegExMatch()
37        {
38                this.settings = new RegExMatchSettings();
39        }
40
41        # endregion
42
43        # region Properties
44
45        [PropertyInfo(Direction.InputData, "Input", "Input a string to be processed by the RegEx Matcher", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
46        public string Input
47        {
48            get
49            {
50                return this.input;
51            }
52
53            set
54            {
55                this.input = value;
56                OnPropertyChange("Input");
57            }
58        }
59
60        [PropertyInfo(Direction.InputData, "Pattern", "Pattern for the RegEx", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
61        public string Pattern
62        {
63            get
64            {
65                return this.pattern;
66            }
67
68            set
69            {
70                this.pattern = value;
71                OnPropertyChange("Pattern");
72            }
73        }
74
75        [PropertyInfo(Direction.OutputData, "Output", "Output", "", DisplayLevel.Beginner)]
76        public string OutputText
77        {
78            get
79            {
80                    return this.outputText;
81            }
82            set
83            {
84                this.outputText = value;
85                OnPropertyChange("OutputText");
86            }
87        }
88
89        [PropertyInfo(Direction.OutputData, "Output Bool", "True: pattern matches. False: it does not.", "", DisplayLevel.Beginner)]
90        public Boolean OutputBool
91        {
92            get
93            {
94                return this.outputBool;       
95            }
96            set
97            {
98                this.outputBool = value;
99                OnPropertyChange("OutputBool");
100            }
101        }
102
103        # endregion
104
105        #region IPlugin Member
106
107        public void Dispose()
108        {
109         
110        }
111
112        public void Execute()
113        {
114            try
115            {
116                if (input != null && pattern != null)
117                {
118                    Match match = Regex.Match(input, pattern);
119                    if (match.Success)
120                    {
121                        OutputBool = true;
122                        OutputText = match.Value;
123
124                    }
125
126                    else
127                    {
128                        OutputBool = false;
129                        OutputText = "";
130
131                    }
132                }
133
134                ProgressChanged(1, 1);
135            }
136            catch (Exception e)
137            {
138                //GuiLogMessage("Regular Expression is not valid.", NotificationLevel.Warning);
139            }
140        }
141
142        public void Initialize()
143        {
144           
145        }
146
147        public event GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
148
149        public void GuiLogMessage(string message, NotificationLevel logLevel)
150        {
151            EventsHelper.GuiLogMessage(OnGuiLogNotificationOccured, this, new GuiLogEventArgs(message, this, logLevel));
152        }
153       
154        public event PluginProgressChangedEventHandler OnPluginProgressChanged;
155        public event StatusChangedEventHandler OnPluginStatusChanged;
156       
157        private void OnPropertyChange(String propertyname)
158        {
159            EventsHelper.PropertyChanged(PropertyChanged, this, new PropertyChangedEventArgs(propertyname));
160        }
161
162        private void ProgressChanged(double value, double max)
163        {
164            EventsHelper.ProgressChanged(OnPluginProgressChanged, this, new PluginProgressEventArgs(value, max));
165        }
166
167        public void Pause()
168        {
169           
170        }
171
172        public void PostExecution()
173        {
174           
175        }
176
177        public void PreExecution()
178        {
179           
180        }
181
182        public System.Windows.Controls.UserControl Presentation
183        {
184            get { return null; }
185        }
186
187        public System.Windows.Controls.UserControl QuickWatchPresentation
188        {
189            get { return null; }
190        }
191
192        public ISettings Settings
193        {
194            get { return this.settings;}
195            set { this.settings = (RegExMatchSettings)value; }
196        }
197
198        public void Stop()
199        {
200           
201        }
202
203        #endregion
204
205        #region INotifyPropertyChanged Member
206
207        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
208
209        #endregion
210    }
211}
Note: See TracBrowser for help on using the repository browser.