public static List <Verb> GetVerbsWithTenses(string language, IEnumerable <string> verbNames)
        {
            var htmlDocsInfo = new ConcurrentBag <(string VerbName, HtmlDocument HtmlDoc)>();

            Parallel.ForEach(verbNames, (verbName) =>
            {
                var url     = string.Format(urlTemplate, language, verbName);
                var htmlDoc = web.Load(url);

                System.Console.WriteLine("Html document for verb {0} retrieved.", verbName);
                htmlDocsInfo.Add((verbName, htmlDoc));
            });

            var verbs = new List <Verb>();

            foreach (var htmlDocInfo in htmlDocsInfo)
            {
                var verb = new Verb(htmlDocInfo.VerbName, language);
                var verbTenseDivNodes = htmlDocInfo.HtmlDoc.DocumentNode.SelectNodes(xPathAllVerbTenses);

                foreach (var verbTenseDivNode in verbTenseDivNodes)
                {
                    var verbTenseName = verbTenseDivNode.Attributes["mobile-title"].Value;
                    var ulNode        = verbTenseDivNode.Descendants("ul").First();
                    var conjugations  = GetVerbTenseConjugations(language, verbTenseName, ulNode);
                    var verbTense     = new VerbTense(verbTenseName);
                    verbTense.Conjugations = conjugations.ToList();
                    verb.VerbTenses.Add(verbTense);
                }

                verbs.Add(verb);
            }

            return(verbs);
        }
        public static Verb GetVerbWithTenses(string language, string verbName)
        {
            var verb              = new Verb(verbName, language);
            var htmlDoc           = LoadHtmlDocument(language, verbName);
            var verbTenseDivNodes = htmlDoc.DocumentNode.SelectNodes(xPathAllVerbTenses);

            foreach (var verbTenseDivNode in verbTenseDivNodes)
            {
                var verbTenseName = verbTenseDivNode.Attributes["mobile-title"].Value;
                var ulNode        = verbTenseDivNode.Descendants("ul").First();
                var conjugations  = GetVerbTenseConjugations(language, verbTenseName, ulNode);
                var verbTense     = new VerbTense(verbTenseName);
                verbTense.Conjugations = conjugations.ToList();
                verb.VerbTenses.Add(verbTense);
            }

            return(verb);
        }
Ejemplo n.º 3
0
 public VerbTemplate(VerbTense tense, bool subjectIsPlural, bool selectTransitive)
 {
     this.Tense            = tense;
     this.SubjectIsPlural  = subjectIsPlural;
     this.SelectTransitive = selectTransitive;
 }
 public TenseData(VerbTense t, Func <int> p)
 {
     this.Tense    = t;
     this.Property = p;
 }
 public RangeToTense(Range r, VerbTense t)
 {
     this.Range = r;
     this.Tense = t;
 }
 public string GetForm(VerbTense tense, bool isPlural)
 {
     if (tense == VerbTense.Present && !isPlural)
     {
         return(this.PresentSingular);
     }
     else if (tense == VerbTense.Present && isPlural)
     {
         return(this.PresentPlural);
     }
     else if (tense == VerbTense.Past && !isPlural)
     {
         return(this.PastSingular);
     }
     else if (tense == VerbTense.Past && isPlural)
     {
         return(this.PastPlural);
     }
     else if (tense == VerbTense.Future && !isPlural)
     {
         return(this.FutureSingular);
     }
     else if (tense == VerbTense.Future && isPlural)
     {
         return(this.FuturePlural);
     }
     else if (tense == VerbTense.Continuous && !isPlural)
     {
         return(this.ContinuousSingular);
     }
     else if (tense == VerbTense.Continuous && isPlural)
     {
         return(this.ContinuousPlural);
     }
     else if (tense == VerbTense.ContinuousPast && !isPlural)
     {
         return(this.PastContinuousSingular);
     }
     else if (tense == VerbTense.ContinuousPast && isPlural)
     {
         return(this.PastContinuousPlural);
     }
     else if (tense == VerbTense.Perfect && !isPlural)
     {
         return(this.PerfectSingular);
     }
     else if (tense == VerbTense.Perfect && isPlural)
     {
         return(this.PerfectPlural);
     }
     else if (tense == VerbTense.Subjunctive && !isPlural)
     {
         return(this.SubjunctiveSingular);
     }
     else if (tense == VerbTense.Subjunctive && isPlural)
     {
         return(this.SubjunctivePlural);
     }
     else
     {
         throw new Exception(String.Format("Unexpected case of tense ({0}) and isPlural ({1}).", tense, isPlural));
     }
 }
 public bool HasForm(VerbTense tense, bool isPlural)
 {
     return(!String.IsNullOrEmpty(GetForm(tense, isPlural)));
 }