Ignore:
Timestamp:
Dec 1, 2009, 12:48:22 PM (12 years ago)
Author:
kohnen
Message:
  • regular expression match added to costfunction
  • transpositionanalyser minor changes
  • Transposition-Analyser-Sample minor changes
Location:
trunk/CrypPlugins/CostFunction
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/CostFunction/CostFunction.cs

    r922 r929  
    2626using Cryptool.PluginBase.Control;
    2727using System.IO;
     28using System.Text.RegularExpressions;
    2829namespace Cryptool.Plugins.CostFunction
    2930{
     
    4546
    4647        private IDictionary<int, IDictionary<string, double[]>> statistics;
    47      
     48
    4849        #endregion
    4950        #region internal constants
     
    6465            set
    6566            {
    66                 this.inputText = value;               
     67                this.inputText = value;
    6768                OnPropertyChanged("InputText");
    6869            }
     
    7879            set
    7980            {
    80                 this.outputText = value;               
     81                this.outputText = value;
    8182                OnPropertyChanged("OutputText");
    8283            }
     
    9697            }
    9798        }
    98                
     99
    99100        [PropertyInfo(Direction.ControlSlave, "SDES Slave", "Direct access to SDES.", "", DisplayLevel.Beginner)]
    100101        public IControlCost ControlSlave
     
    106107                return controlSlave;
    107108            }
    108         } 
     109        }
    109110
    110111        #endregion
     
    114115        public event GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
    115116        public event PluginProgressChangedEventHandler OnPluginProgressChanged;
    116        
     117
    117118
    118119        public ISettings Settings
     
    173174                }
    174175
    175                 ProgressChanged(0.5, 1); 
     176                ProgressChanged(0.5, 1);
    176177                bigramInput = ByteArrayToString(array);
    177178                switch (settings.FunctionType)
     
    187188
    188189                    case 2: // Log 2 Bigrams
    189                         this.Value = calculateNGrams(bigramInput,2,2);
     190                        this.Value = calculateNGrams(bigramInput, 2, 2);
    190191                        break;
    191192
    192193                    case 3: // sinkov Bigrams
    193                         this.Value = calculateNGrams(bigramInput,2,3);
     194                        this.Value = calculateNGrams(bigramInput, 2, 3);
    194195                        break;
    195196                    case 4: //percentaged Bigrams
    196                         this.Value = calculateNGrams(bigramInput,2,1);
     197                        this.Value = calculateNGrams(bigramInput, 2, 1);
    197198                        break;
    198199                    case 5: //contains
    199200                        this.Value = contains(bigramInput);
    200201                        break;
     202                    case 6: //regular expressions
     203                        this.Value = regex(bigramInput);
     204                        break;
    201205                    default:
    202206                        this.Value = -1;
    203207                        break;
    204208                }//end switch               
    205  
     209
    206210                this.OutputText = this.InputText;
    207                 ProgressChanged(1, 1);   
     211                ProgressChanged(1, 1);
    208212
    209213            }//end if
    210            
     214
    211215        }//end Execute
    212        
    213        
     216
     217
    214218        public void PostExecution()
    215219        {
     
    219223        public void Pause()
    220224        {
    221            
     225
    222226        }
    223227
     
    234238        public void Dispose()
    235239        {
    236            
    237         }
    238 
    239         #endregion     
     240
     241        }
     242
     243        #endregion
    240244
    241245        #region INotifyPropertyChanged Members
     
    268272        #region private methods
    269273
     274
    270275        public double contains(string input)
    271276        {
    272277            if (settings.Contains == null)
    273278            {
    274                 GuiLogMessage("There is no text to be searched for. Please insert text in the 'Contains text' - Textarea", NotificationLevel.Error);
     279                GuiLogMessage("There is no text to be searched for. Please insert text in the 'Contains text / Regular Expression' - Textarea", NotificationLevel.Error);
    275280                return new Double();
    276281            }
    277282
    278             if(input.Contains(settings.Contains))
     283            if (input.Contains(settings.Contains))
    279284            {
    280285                return 1.0;
    281286            }
    282287            return -1.0;
     288        }
     289
     290        public double regex(string input)
     291        {
     292            if (settings.Contains == null)
     293            {
     294                GuiLogMessage("There is no Regular Expression to be searched for. Please insert regex in the 'Contains text / Regular Expression' - Textarea", NotificationLevel.Error);
     295                return new Double();
     296            }
     297            try
     298            {
     299                Match match = Regex.Match(input, settings.Contains);
     300                if (match.Success)
     301                {
     302                    return 1.0;
     303                }
     304                else
     305                {
     306                    return -1.0;
     307                }
     308            }
     309            catch (Exception e)
     310            {
     311                GuiLogMessage(e.Message, NotificationLevel.Error);
     312                return -1.0;
     313            }
     314
    283315        }
    284316
     
    318350            foreach (byte b in text)
    319351            {
    320                     n[b]++;
    321                     counter++;
    322                     if (counter == bytesToUse)
    323                         break;
     352                n[b]++;
     353                counter++;
     354                if (counter == bytesToUse)
     355                    break;
    324356            }
    325357
     
    328360            for (int i = 0; i < n.Length; i++)
    329361            {
    330                 coindex = coindex + n[i] * (n[i] - 1);               
     362                coindex = coindex + n[i] * (n[i] - 1);
    331363            }
    332364
     
    365397            foreach (byte b in text)
    366398            {
    367                     n[b]++;
    368                     counter++;
    369                     if (counter == bytesToUse)
    370                         break;
     399                n[b]++;
     400                counter++;
     401                if (counter == bytesToUse)
     402                    break;
    371403            }
    372404
     
    411443                    {
    412444                        score += corpusGrams[g][valueSelection];
    413            
     445
    414446                    }
    415447                }
     
    425457            {
    426458                //GuiLogMessage("Trying to load default statistics for " + gramLength + "-grams", NotificationLevel.Info);
    427                 statistics[gramLength] = LoadDefaultStatistics(gramLength);               
     459                statistics[gramLength] = LoadDefaultStatistics(gramLength);
    428460            }
    429461
     
    489521        #endregion
    490522
    491      
     523
    492524    }
    493525
     
    544576                case 5: // Contains
    545577                    return RelationOperator.LargerThen;
     578                case 6: // Regular Expression
     579                    return RelationOperator.LargerThen;
    546580                default:
    547581                    throw new NotImplementedException("The value " + ((CostFunctionSettings)this.plugin.Settings).FunctionType + " is not implemented.");
     
    585619                case 5: //Contains
    586620                    return plugin.contains(plugin.ByteArrayToString(text));
     621                case 6: // regular expression
     622                    return plugin.regex(plugin.ByteArrayToString(text));
    587623                default:
    588624                    throw new NotImplementedException("The value " + ((CostFunctionSettings)this.plugin.Settings).FunctionType + " is not implemented.");
     
    591627
    592628
    593         #endregion
     629    #endregion
    594630    }
    595    
     631
    596632}
    597633
  • trunk/CrypPlugins/CostFunction/CostFunctionSettings.cs

    r922 r929  
    3333        #endregion
    3434       
    35         [TaskPane("FunctionType", "Select the type of function", null, 1, false, DisplayLevel.Beginner, ControlType.ComboBox, new string[] { "Index of coincidence", "Entropy", "Bigrams: log 2", "Bigrams: Sinkov", "Bigrams: Percentaged", "Contains"})]
     35        [TaskPane("FunctionType", "Select the type of function", null, 1, false, DisplayLevel.Beginner, ControlType.ComboBox, new string[] { "Index of coincidence", "Entropy", "Bigrams: log 2", "Bigrams: Sinkov", "Bigrams: Percentaged", "Contains", "Regular Expression"})]
    3636        public int FunctionType
    3737        {
     
    6060
    6161        private string contains;
    62         [TaskPane("Contains text", "Text checked for.", null, 5, false, DisplayLevel.Beginner, ControlType.TextBox)]
     62        [TaskPane("Contains text / Regular Expression:", "Text checked for / Regular Expression match", null, 5, false, DisplayLevel.Beginner, ControlType.TextBox)]
    6363        public String Contains
    6464        {
Note: See TracChangeset for help on using the changeset viewer.