~ubuntu-branches/ubuntu/trusty/monodevelop/trusty-proposed

« back to all changes in this revision

Viewing changes to src/addins/MonoDevelop.DocFood/MonoDevelop.DocFood/DocGenerator.cs

  • Committer: Package Import Robot
  • Author(s): Jo Shields
  • Date: 2013-05-12 09:46:03 UTC
  • mto: This revision was merged to the branch mainline in revision 29.
  • Revision ID: package-import@ubuntu.com-20130512094603-mad323bzcxvmcam0
Tags: upstream-4.0.5+dfsg
ImportĀ upstreamĀ versionĀ 4.0.5+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
89
89
                        sb.Append ("<root>");
90
90
                        bool wasWs = false;
91
91
                        foreach (char ch in xmlDoc) {
92
 
                                if (char.IsWhiteSpace (ch)) {
 
92
                                if (ch =='\r')
 
93
                                        continue;
 
94
                                if (ch == ' ' || ch == '\t') {
93
95
                                        if (!wasWs)
94
96
                                                sb.Append (' ');
95
97
                                        wasWs = true;
113
115
                                                                readSection.SetAttribute (reader.LocalName, reader.Value);
114
116
                                                        } while (reader.MoveToNextAttribute ());
115
117
                                                }
116
 
                                                readSection.Documentation = reader.ReadElementString ();
 
118
                                                readSection.Documentation = reader.ReadElementString ().Trim ();
117
119
                                                sections.Add (readSection);
118
120
                                        }
119
121
                                }
225
227
                        }
226
228
                        return null;
227
229
                }
 
230
 
 
231
                static string GetName (object member)
 
232
                {
 
233
                        if (member is IParameter)
 
234
                                return ((IParameter)member).Name;
 
235
                        return ((INamedElement)member).Name;
 
236
                }
228
237
                
229
 
                public bool EvaluateCondition (List<KeyValuePair<string, string>> conditions)
 
238
                public bool EvaluateCondition (List<KeyValuePair<string, string>> conditions, object member)
230
239
                {
231
240
                        foreach (var condition in conditions) {
232
241
                                bool result = false;
237
246
                                                break;
238
247
                                        case "modifier":
239
248
                                                if (member is IMember) {
240
 
                                                        try {
241
 
                                                                var mod = (Accessibility)Enum.Parse (typeof(Accessibility), val);
242
 
                                                                result |=  ((IMember)member).Accessibility == mod;
243
 
                                                        } catch (Exception) {
 
249
                                                        if (val.ToUpperInvariant () == "STATIC"){
 
250
                                                                result |= ((IMember)member).IsStatic;
 
251
                                                        } else {
 
252
                                                                try {
 
253
                                                                        var mod = (Accessibility)Enum.Parse (typeof(Accessibility), val);
 
254
                                                                        result |=  ((IMember)member).Accessibility == mod;
 
255
                                                                } catch (Exception) {
 
256
                                                                }
244
257
                                                        }
245
258
                                                }
246
259
                                                break;
257
270
                                                result |= idx < ((IParameterizedMember)member).Parameters.Count && name == ((IParameterizedMember)member).Parameters[idx].Name;
258
271
                                                break;
259
272
                                        case "returns":
 
273
                                                if (member is IParameter) {
 
274
                                                        result |= val == ((IParameter)member).Type.ToString ();
 
275
                                                        break;
 
276
                                                }
260
277
                                                if ((member as IMember) == null)
261
278
                                                        break;
262
279
                                                result |= val == ((IMember)member).ReturnType.ToString ();
271
288
                                                        }
272
289
                                                }
273
290
                                                        
274
 
                                                result |= val == member.Name;
 
291
                                                result |= val == GetName (member);
275
292
                                                break;
276
293
                                        case "endsWith":
277
294
                                                if (member == null)
278
295
                                                        break;
279
 
                                                result |= member.Name.EndsWith (val);
 
296
                                                result |= GetName (member).EndsWith (val);
280
297
                                                break;
281
298
                                        case "startsWith":
282
299
                                                if (member == null)
283
300
                                                        break;
284
 
                                                result |= member.Name.StartsWith (val);
 
301
                                                result |= GetName (member).StartsWith (val);
285
302
                                                break;
286
303
                                        case "startsWithWord":
287
304
                                                if (member == null)
288
305
                                                        break;
289
 
                                                result |= member.Name.StartsWith (val);
 
306
                                                result |= GetName (member).StartsWith (val);
290
307
                                                break;
291
308
                                        case "wordCount":
292
309
                                                result |= Int32.Parse (val) == wordCount;
308
325
                        
309
326
                        this.member = member;
310
327
                        this.currentType = GetType (member);
311
 
                        DocConfig.Instance.Rules.ForEach (r => r.Run (this));
 
328
                        DocConfig.Instance.Rules.ForEach (r => r.Run (this, member));
312
329
                        
313
330
                        if (member is IParameterizedMember) {
314
331
                                this.currentType = "parameter";
316
333
                                        curName = p.Name;
317
334
                                        this.member = member;
318
335
                                        SplitWords (p, p.Name);
319
 
                                        DocConfig.Instance.Rules.ForEach (r => r.Run (this));
 
336
                                        DocConfig.Instance.Rules.ForEach (r => r.Run (this, p));
320
337
                                }
321
338
                        }
322
339
                        
342
359
                                                break;
343
360
                                        }
344
361
                                        count++;
345
 
                                        DocConfig.Instance.Rules.ForEach (r => r.Run (this));
 
362
                                        DocConfig.Instance.Rules.ForEach (r => r.Run (this, param));
346
363
                                }
347
364
                        }
348
365
                        
380
397
//                              DocConfig.Instance.Rules.ForEach (r => r.Run (this));
381
398
//                      }
382
399
                }
383
 
                
 
400
 
384
401
                void Init (IEntity member)
385
402
                {
 
403
                        if (member == null)
 
404
                                throw new ArgumentNullException ("member");
386
405
                        FillDocumentation (GetBaseDocumentation (member));
387
406
                        //                      if (provider != null && !member.Location.IsEmpty && member.BodyRegion.EndLine > 1) {
388
407
                        //                              LineSegment start = data.Document.GetLine (member.Region.BeginLine);
442
461
                                
443
462
                                var property = member as IProperty;
444
463
                                if (property != null) {
445
 
                                        if (property.CanGet && property.CanSet && property.Getter.Accessibility != Accessibility.Private && property.Setter.Accessibility != Accessibility.Private) {
 
464
                                        var hasPublicGetter = property.Getter != null && property.Getter.Accessibility != Accessibility.Private;
 
465
                                        var hasPublicSetter = property.Setter != null && property.Setter.Accessibility != Accessibility.Private;
 
466
 
 
467
                                        if (property.CanGet && property.CanSet && hasPublicGetter && hasPublicSetter) {
446
468
                                                tags ["AccessText"] = "Gets or sets";
447
 
                                        } else if (property.CanGet && property.Getter.Accessibility != Accessibility.Private) {
 
469
                                        } else if (property.CanGet && hasPublicGetter) {
448
470
                                                tags ["AccessText"] = "Gets";
449
 
                                        } else if (property.Setter.Accessibility != Accessibility.Private) {
 
471
                                        } else if (hasPublicSetter) {
450
472
                                                tags ["AccessText"] = "Sets";
451
473
                                        } else if (property.CanGet && property.CanSet) {
452
474
                                                tags ["AccessText"] = "Gets or sets";
460
482
                        
461
483
                        SplitWords (member, member.Name);
462
484
                }
 
485
 
 
486
                static readonly string[,] irregularVerbs = new string[,] {
 
487
                        { "arise", "arose", "arisen"},
 
488
                        { "awake", "awoke", "awoken"},
 
489
                        { "backslide", "backslid", "backslidden"},
 
490
                        { "be", "was, were", "been"},
 
491
                        { "bear", "bore", "born"},
 
492
                        { "beat", "beat", "beaten"},
 
493
                        { "become", "became", "become"},
 
494
                        { "begin", "began", "begun"},
 
495
                        { "bend", "bent", "bent"},
 
496
                        { "bet", "bet", "bet"},
 
497
                        { "bid", "bid", "bidden"},
 
498
                        { "bind", "bound", "bound"},
 
499
                        { "bite", "bit", "bitten"},
 
500
                        { "bleed", "bled", "bled"},
 
501
                        { "blow", "blew", "blown"},
 
502
                        { "break", "broke", "broken"},
 
503
                        { "breed", "bred", "bred"},
 
504
                        { "bring", "brought", "brought"},
 
505
                        { "broadcast", "broadcast", "broadcast"},
 
506
                        { "browbeat", "browbeat", "browbeaten"},
 
507
                        { "build", "built", "built"},
 
508
                        { "burn", "burned", "burned"},
 
509
                        { "burst", "burst", "burst"},
 
510
                        { "bust", "busted", "busted"},
 
511
                        { "buy", "bought", "bought"},
 
512
                        { "cast", "cast", "cast"},
 
513
                        { "catch", "caught", "caught"},
 
514
                        { "choose", "chose", "chosen"},
 
515
                        { "cling", "clung", "clung"},
 
516
                        { "clothe", "clothed", "clothed"},
 
517
                        { "come", "came", "come"},
 
518
                        { "cost", "cost", "cost"},
 
519
                        { "creep", "crept", "crept"},
 
520
                        { "crossbreed", "crossbred", "crossbred"},
 
521
                        { "cut", "cut", "cut"},
 
522
                        { "daydream", "daydreamed", "daydreamed"},
 
523
                        { "deal", "dealt", "dealt"},
 
524
                        { "dig", "dug", "dug"},
 
525
                        { "disprove", "disproved", "disproved"},
 
526
                        { "dive", "dove", "dived"},
 
527
                        { "do", "did", "done"},
 
528
                        { "draw", "drew", "drawn"},
 
529
                        { "dream", "dreamed", "dreamed"},
 
530
                        { "drink", "drank", "drunk"},
 
531
                        { "drive", "drove", "driven"},
 
532
                        { "dwell", "dwelt", "dwelt"},
 
533
                        { "eat", "ate", "eaten"},
 
534
                        { "fall", "fell", "fallen"},
 
535
                        { "feed", "fed", "fed"},
 
536
                        { "feel", "felt", "felt"},
 
537
                        { "fight", "fought", "fought"},
 
538
                        { "find", "found", "found"},
 
539
                        { "fit", "fitted", "fitted"},
 
540
                        { "flee", "fled", "fled"},
 
541
                        { "fling", "flung", "flung"},
 
542
                        { "fly", "flew", "flown"},
 
543
                        { "forbid", "forbade", "forbidden"},
 
544
                        { "forecast", "forecast", "forecast"},
 
545
                        { "forego", "forewent", "foregone"},
 
546
                        { "foresee", "foresaw", "foreseen"},
 
547
                        { "foretell", "foretold", "foretold"},
 
548
                        { "forget", "forgot", "forgotten"},
 
549
                        { "forgive", "forgave", "forgiven"},
 
550
                        { "forsake", "forsook", "forsaken"},
 
551
                        { "freeze", "froze", "frozen"},
 
552
                        { "frostbite", "frostbit", "frostbitten"},
 
553
                        { "get", "got", "gotten"},
 
554
                        { "give", "gave", "given"},
 
555
                        { "go", "went", "gone"},
 
556
                        { "grind", "ground", "ground"},
 
557
                        { "grow", "grew", "grown"},
 
558
                        { "hand-feed", "hand-fed", "hand-fed"},
 
559
                        { "handwrite", "handwrote", "handwritten"},
 
560
                        { "hang", "hung", "hung"},
 
561
                        { "have", "had", "had"},
 
562
                        { "hear", "heard", "heard"},
 
563
                        { "hew", "hewed", "hewn"},
 
564
                        { "hide", "hid", "hidden"},
 
565
                        { "hit", "hit", "hit"},
 
566
                        { "hold", "held", "held"},
 
567
                        { "hurt", "hurt", "hurt"},
 
568
                        { "inbreed", "inbred", "inbred"},
 
569
                        { "inlay", "inlaid", "inlaid"},
 
570
                        { "input", "input", "input"},
 
571
                        { "interbreed", "interbred", "interbred"},
 
572
                        { "interweave", "interwove", "interwoven"},
 
573
                        { "interwind", "interwound", "interwound"},
 
574
                        { "jerry-build", "jerry-built", "jerry-built"},
 
575
                        { "keep", "kept", "kept"},
 
576
                        { "kneel", "knelt", "knelt"},
 
577
                        { "knit", "knitted", "knitted"},
 
578
                        { "know", "knew", "known"},
 
579
                        
 
580
                        { "lay", "laid", "laid"},
 
581
                        { "lead", "led", "led"},
 
582
                        { "lean", "leaned", "leaned"},
 
583
                        { "leap", "leaped", "leaped"},
 
584
                        { "learn", "learned", "learned"},
 
585
                        { "leave", "left", "left"},
 
586
                        { "lend", "lent", "lent"},
 
587
                        { "let", "let", "let"},
 
588
                        { "lie", "lay", "lain"},
 
589
                        { "lie", "lied", "lied"},
 
590
                        { "light", "lit", "lit"},
 
591
                        { "lip-read", "lip-read", "lip-read"},
 
592
                        { "lose", "lost", "lost"},
 
593
                        
 
594
                        { "make", "made", "made"},
 
595
                        { "mean", "meant", "meant"},
 
596
                        { "meet", "met", "met"},
 
597
                        { "miscast", "miscast", "miscast"},
 
598
                        { "misdeal", "misdealt", "misdealt"},
 
599
                        { "misdo", "misdid", "misdone"},
 
600
                        { "mishear", "misheard", "misheard"},
 
601
                        { "mislay", "mislaid", "mislaid"},
 
602
                        { "mislead", "misled", "misled"},
 
603
                        { "mislearn", "mislearned", "mislearned"},
 
604
                        { "misread", "misread", "misread"},
 
605
                        { "misset", "misset", "misset"},
 
606
                        { "misspeak", "misspoke", "misspoken"},
 
607
                        { "misspell", "misspelled", "misspelled"},
 
608
                        { "misspend", "misspent", "misspent"},
 
609
                        { "mistake", "mistook", "mistaken"},
 
610
                        { "misteach", "mistaught", "mistaught"},
 
611
                        { "misunderstand", "misunderstood", "misunderstood"},
 
612
                        { "miswrite", "miswrote", "miswritten"},
 
613
                        { "mow", "mowed", "mowed"},
 
614
                        
 
615
                        { "offset", "offset", "offset"},
 
616
                        { "outbid", "outbid", "outbid"},
 
617
                        { "outbreed", "outbred", "outbred"},
 
618
                        { "outdo", "outdid", "outdone"},
 
619
                        { "outdraw", "outdrew", "outdrawn"},
 
620
                        { "outdrink", "outdrank", "outdrunk"},
 
621
                        { "outdrive", "outdrove", "outdriven"},
 
622
                        { "outfight", "outfought", "outfought"},
 
623
                        { "outfly", "outflew", "outflown"},
 
624
                        { "outgrow", "outgrew", "outgrown"},
 
625
                        { "outleap", "outleaped", "outleaped"},
 
626
                        { "outlie", "outlied", "outlied"},
 
627
                        { "outride", "outrode", "outridden"},
 
628
                        { "outrun", "outran", "outrun"},
 
629
                        { "outsell", "outsold", "outsold"},
 
630
                        { "outshine", "outshined", "outshined"},
 
631
                        { "outshoot", "outshot", "outshot"},
 
632
                        { "outsing", "outsang", "outsung"},
 
633
                        { "outsit", "outsat", "outsat"},
 
634
                        { "outsleep", "outslept", "outslept"},
 
635
                        { "outsmell", "outsmelled", "outsmelled"},
 
636
                        { "outspeak", "outspoke", "outspoken"},
 
637
                        { "outspeed", "outsped", "outsped"},
 
638
                        { "outspend", "outspent", "outspent"},
 
639
                        { "outswear", "outswore", "outsworn"},
 
640
                        { "outswim", "outswam", "outswum"},
 
641
                        { "outthink", "outthought", "outthought"},
 
642
                        { "outthrow", "outthrew", "outthrown"},
 
643
                        { "outwrite", "outwrote", "outwritten"},
 
644
                        { "overbid", "overbid", "overbid"},
 
645
                        { "overbreed", "overbred", "overbred"},
 
646
                        { "overbuild", "overbuilt", "overbuilt"},
 
647
                        { "overbuy", "overbought", "overbought"},
 
648
                        { "overcome", "overcame", "overcome"},
 
649
                        { "overdo", "overdid", "overdone"},
 
650
                        { "overdraw", "overdrew", "overdrawn"},
 
651
                        { "overdrink", "overdrank", "overdrunk"},
 
652
                        { "overeat", "overate", "overeaten"},
 
653
                        { "overfeed", "overfed", "overfed"},
 
654
                        { "overhang", "overhung", "overhung"},
 
655
                        { "overhear", "overheard", "overheard"},
 
656
                        { "overlay", "overlaid", "overlaid"},
 
657
                        { "overpay", "overpaid", "overpaid"},
 
658
                        { "override", "overrode", "overridden"},
 
659
                        { "overrun", "overran", "overrun"},
 
660
                        { "oversee", "oversaw", "overseen"},
 
661
                        { "oversell", "oversold", "oversold"},
 
662
                        { "oversew", "oversewed", "oversewn"},
 
663
                        { "overshoot", "overshot", "overshot"},
 
664
                        { "oversleep", "overslept", "overslept"},
 
665
                        { "overspeak", "overspoke", "overspoken"},
 
666
                        { "overspend", "overspent", "overspent"},
 
667
                        { "overspill", "overspilled", "overspilled"},
 
668
                        { "overtake", "overtook", "overtaken"},
 
669
                        { "overthink", "overthought", "overthought"},
 
670
                        { "overthrow", "overthrew", "overthrown"},
 
671
                        { "overwind", "overwound", "overwound"},
 
672
                        { "overwrite", "overwrote", "overwritten"},
 
673
                        
 
674
                        { "partake", "partook", "partaken"},
 
675
                        { "pay", "paid", "paid"},
 
676
                        { "plead", "pleaded", "pleaded"},
 
677
                        { "prebuild", "prebuilt", "prebuilt"},
 
678
                        { "predo", "predid", "predone"},
 
679
                        { "premake", "premade", "premade"},
 
680
                        { "prepay", "prepaid", "prepaid"},
 
681
                        { "presell", "presold", "presold"},
 
682
                        { "preset", "preset", "preset"},
 
683
                        { "preshrink", "preshrank", "preshrunk"},
 
684
                        { "proofread", "proofread", "proofread"},
 
685
                        { "prove", "proved", "proven"},
 
686
                        { "put", "put", "put"},
 
687
                        
 
688
                        { "quick-freeze", "quick-froze", "quick-frozen"},
 
689
                        { "quit", "quit", "quit"},
 
690
                        
 
691
                        { "read", "read", " read"},
 
692
                        { "reawake", "reawoke", "reawaken"},
 
693
                        { "rebid", "rebid", "rebid"},
 
694
                        { "rebind", "rebound", "rebound"},
 
695
                        { "rebroadcast", "rebroadcast", "rebroadcast"},
 
696
                        { "rebuild", "rebuilt", "rebuilt"},
 
697
                        { "recast", "recast", "recast"},
 
698
                        { "recut", "recut", "recut"},
 
699
                        { "redeal", "redealt", "redealt"},
 
700
                        { "redo", "redid", "redone"},
 
701
                        { "redraw", "redrew", "redrawn"},
 
702
                        { "refit", "refit", "refit"},
 
703
                        { "regrind", "reground", "reground"},
 
704
                        { "regrow", "regrew", "regrown"},
 
705
                        { "rehang", "rehung", "rehung"},
 
706
                        { "rehear", "reheard", "reheard"},
 
707
                        { "reknit", "reknitted", "reknitted"},
 
708
                        { "relay", "relaid", "relaid"},
 
709
                        { "relearn", "relearned", "relearned"},
 
710
                        { "relight", "relit", "relit"},
 
711
                        { "remake", "remade", "remade"},
 
712
                        { "repay", "repaid", "repaid"},
 
713
                        { "reread", "reread", "reread"},
 
714
                        { "rerun", "reran", "rerun"},
 
715
                        { "resell", "resold", "resold"},
 
716
                        { "resend", "resent", "resent"},
 
717
                        { "reset", "reset", "reset"},
 
718
                        { "resew", "resewed", "resewn"},
 
719
                        { "retake", "retook", "retaken"},
 
720
                        { "reteach", "retaught", "retaught"},
 
721
                        { "retear", "retore", "retorn"},
 
722
                        { "retell", "retold", "retold"},
 
723
                        { "rethink", "rethought", "rethought"},
 
724
                        { "retread", "retread", "retread"},
 
725
                        { "retrofit", "retrofitted", "retrofitted"},
 
726
                        { "rewake", "rewoke", "rewaken"},
 
727
                        { "rewear", "rewore", "reworn"},
 
728
                        { "reweave", "rewove", "rewoven"},
 
729
                        { "rewed", "rewed", "rewed"},
 
730
                        { "rewet", "rewet", "rewet"},
 
731
                        { "rewin", "rewon", "rewon"},
 
732
                        { "rewind", "rewound", "rewound"},
 
733
                        { "rewrite", "rewrote", "rewritten"},
 
734
                        { "rid", "rid", "rid"},
 
735
                        { "ride", "rode", "ridden"},
 
736
                        { "ring", "rang", "rung"},
 
737
                        { "rise", "rose", "risen"},
 
738
                        { "roughcast", "roughcast", "roughcast"},
 
739
                        { "run", "ran", "run"},
 
740
                        
 
741
                        { "sand-cast", "sand-cast", "sand-cast"},
 
742
                        { "saw", "sawed", "sawed"},
 
743
                        { "say", "said", "said"},
 
744
                        { "see", "saw", "seen"},
 
745
                        { "seek", "sought", "sought"},
 
746
                        { "sell", "sold", "sold"},
 
747
                        { "send", "sent", "sent"},
 
748
                        { "set", "set", "set"},
 
749
                        { "sew", "sewed", "sewn"},
 
750
                        { "shake", "shook", "shaken"},
 
751
                        { "shave", "shaved", "shaved"},
 
752
                        { "shear", "sheared", "sheared"},
 
753
                        { "shed", "shed", "shed"},
 
754
                        { "shine", "shined", "shined"},
 
755
                        { "shoot", "shot", "shot"},
 
756
                        { "show", "showed", "shown"},
 
757
                        { "shrink", "shrank", "shrunk"},
 
758
                        { "shut", "shut", "shut"},
 
759
                        { "sight-read", "sight-read", "sight-read"},
 
760
                        { "sing", "sang", "sung"},
 
761
                        { "sink", "sank", "sunk"},
 
762
                        { "sit", "sat", "sat"},
 
763
                        { "slay", "slew", "slain"},
 
764
                        { "sleep", "slept", "slept"},
 
765
                        { "slide", "slid", "slid"},
 
766
                        { "sling", "slung", "slung"},
 
767
                        { "slink", "slinked", "slinked"},
 
768
                        { "slit", "slit", "slit"},
 
769
                        { "smell", "smelled", "smelled"},
 
770
                        { "sneak", "sneaked", "sneaked"},
 
771
                        { "sow", "sowed", "sown"},
 
772
                        { "speak", "spoke", "spoken"},
 
773
                        { "speed", "sped", "sped"},
 
774
                        { "spell", "spelled", "spelled"},
 
775
                        { "spend", "spent", "spent"},
 
776
                        { "spill", "spilled", "spilled"},
 
777
                        { "spin", "spun", "spun"},
 
778
                        { "spit", "spit", "spit"},
 
779
                        { "split", "split", "split"},
 
780
                        { "spoil", "spoiled", "spoiled"},
 
781
                        { "spoon-feed", "spoon-fed", "spoon-fed"},
 
782
                        { "spread", "spread", "spread"},
 
783
                        { "spring", "sprang", "sprung"},
 
784
                        { "stand", "stood", "stood"},
 
785
                        { "steal", "stole", "stolen"},
 
786
                        { "stick", "stuck", "stuck"},
 
787
                        { "sting", "stung", "stung"},
 
788
                        { "stink", "stunk", "stunk"},
 
789
                        { "strew", "strewed", "strewn"},
 
790
                        { "stride", "strode", "stridden"},
 
791
                        { "strike", "struck", "struck"},
 
792
                        { "string", "strung", "strung"},
 
793
                        { "strive", "strove", "striven"},
 
794
                        { "sublet", "sublet", "sublet"},
 
795
                        { "sunburn", "sunburned", "sunburned"},
 
796
                        { "swear", "swore", "sworn"},
 
797
                        { "sweat", "sweat", "sweat"},
 
798
                        { "sweep", "swept", "swept"},
 
799
                        { "swell", "swelled", "swollen"},
 
800
                        { "swim", "swam", "swum"},
 
801
                        { "swing", "swung", "swung"},
 
802
                        
 
803
                        { "take", "took", "taken"},
 
804
                        { "teach", "taught", "taught"},
 
805
                        { "tear", "tore", "torn"},
 
806
                        { "telecast", "telecast", "telecast"},
 
807
                        { "tell", "told", "told"},
 
808
                        { "test-drive", "test-drove", "test-driven"},
 
809
                        { "test-fly", "test-flew", "test-flown"},
 
810
                        { "think", "thought", "thought"},
 
811
                        { "throw", "threw", "thrown"},
 
812
                        { "thrust", "thrust", "thrust"},
 
813
                        { "tread", "trod", "trodden"},
 
814
                        { "typecast", "typecast", "typecast"},
 
815
                        { "typeset", "typeset", "typeset"},
 
816
                        { "typewrite", "typewrote", "typewritten"},
 
817
                        
 
818
                        { "unbend", "unbent", "unbent"},
 
819
                        { "unbind", "unbound", "unbound"},
 
820
                        { "unclothe", "unclothed", "unclothed"},
 
821
                        { "underbid", "underbid", "underbid"},
 
822
                        { "undercut", "undercut", "undercut"},
 
823
                        { "underfeed", "underfed", "underfed"},
 
824
                        { "undergo", "underwent", "undergone"},
 
825
                        { "underlie", "underlay", "underlain"},
 
826
                        { "undersell", "undersold", "undersold"},
 
827
                        { "underspend", "underspent", "underspent"},
 
828
                        { "understand", "understood", "understood"},
 
829
                        { "undertake", "undertook", "undertaken"},
 
830
                        { "underwrite", "underwrote", "underwritten"},
 
831
                        { "undo", "undid", "undone"},
 
832
                        { "unfreeze", "unfroze", "unfrozen"},
 
833
                        { "unhang", "unhung", "unhung"},
 
834
                        { "unhide", "unhid", "unhidden"},
 
835
                        { "unknit", "unknitted", "unknitted"},
 
836
                        { "unlearn", "unlearned", "unlearned"},
 
837
                        { "unsew", "unsewed", "unsewn"},
 
838
                        { "unsling", "unslung", "unslung"},
 
839
                        { "unspin", "unspun", "unspun"},
 
840
                        { "unstick", "unstuck", "unstuck"},
 
841
                        { "unstring", "unstrung", "unstrung"},
 
842
                        { "unweave", "unwove", "unwoven"},
 
843
                        { "unwind", "unwound", "unwound"},
 
844
                        { "uphold", "upheld", "upheld"},
 
845
                        { "upset", "upset", "upset"},
 
846
                        
 
847
                        
 
848
                        { "wake", "woke", "woken"},
 
849
                        { "waylay", "waylaid", "waylaid"},
 
850
                        { "wear", "wore", "worn"},
 
851
                        { "weave", "wove", "woven"},
 
852
                        { "wed", "wed", "wed"},
 
853
                        { "weep", "wept", "wept"},
 
854
                        { "wet", "wet", "wet"},
 
855
                        { "whet", "whetted", "whetted"},
 
856
                        { "win", "won", "won"},
 
857
                        { "wind", "wound", "wound"},
 
858
                        { "withdraw", "withdrew", "withdrawn"},
 
859
                        { "withhold", "withheld", "withheld"},
 
860
                        { "withstand", "withstood", "withstood"},
 
861
                        { "wring", "wrung", "wrung"}
 
862
                };
 
863
 
 
864
                string GetPastParticipleVerb (string str)
 
865
                {
 
866
                        for (int i = 0; i < irregularVerbs.GetLength (0); i++) {
 
867
                                if (irregularVerbs[i, 0] == str)
 
868
                                        return irregularVerbs[i, 2];
 
869
                        }
 
870
 
 
871
                        if (str.EndsWith ("e"))
 
872
                                return str +"d";
 
873
                        return str + "ed";
 
874
                }
463
875
                
464
876
                void SplitWords (object obj, string name)
465
877
                {
516
928
                                words.Insert (ofTheIndex, "of");
517
929
                                words.Insert (ofTheIndex, word);
518
930
                        } 
519
 
                        
 
931
 
 
932
                        tags["FirstAsVerbPastParticiple"] = GetPastParticipleVerb (words[0]);
520
933
                        if (obj is IMethod && words.Count > 1) {
521
934
                                if (words[0].EndsWith("s")) {
522
935
                                        words[0] += "es";