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); }
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))); }