static void Main(string[] args) { var wordnet = new WordnetDictionary( "/media/milleniumbug/stuff/asdf/english_resources/english-wordnet-2020.xml", "/media/milleniumbug/stuff/asdf/english_resources/wordnet.cache"); var latin1 = Encoding.GetEncoding("iso-8859-1"); var hyphenationList = HyphenationFileReader.ReadFromFile("/home/milleniumbug/dokumenty/asdf/english_resources/delphiforfun/Syllables.txt", ((char)183).ToString(), latin1) .Concat(HyphenationFileReader.ReadFromFile("/home/milleniumbug/dokumenty/asdf/english_resources/delphiforfun/SyllablesUpdate.txt", " ", latin1)) .OrderBy(hyphentationInfo => hyphentationInfo.Word, StringComparer.InvariantCulture) .ToList(); string?line; var loader = new ResourceHyphenatePatternsLoader(HyphenatePatternsLanguage.EnglishUs); Hyphenator hypenator = new Hyphenator(loader, "-"); while (true) { Console.Write("> "); line = Console.ReadLine(); if (line == null) { break; } var resultOpt = BinarySearch( hyphenationList, (list, index) => list[index], hyphenationList.Count, line, info => info.Word, StringComparer.InvariantCulture); resultOpt.Match(result => { Console.WriteLine(string.Join("-", result.element.Syllables)); }, () => { Console.WriteLine("fall back to generic hyphenator"); Console.WriteLine(hypenator.HyphenateText(line)); }); var lookupResult = wordnet.Lookup(line); foreach (var entry in lookupResult) { Console.WriteLine($"{line} ({entry.PartOfSpeech})"); foreach (var definition in entry.Definition) { Console.WriteLine(definition); } foreach (var example in entry.Examples) { Console.WriteLine($"- {example}"); } } } }
public HyphenatePatternsLoader(Language language) { this.language = language; switch (language) { case Language.enUS: this.originalPatternLoader = new ResourceHyphenatePatternsLoader(HyphenatePatternsLanguage.EnglishUs); return; case Language.enGB: this.originalPatternLoader = new ResourceHyphenatePatternsLoader(HyphenatePatternsLanguage.EnglishBritish); return; case Language.ruRU: this.originalPatternLoader = new ResourceHyphenatePatternsLoader(HyphenatePatternsLanguage.Russian); return; default: break; } var names = typeof(HyphenatePatternsLoader).Assembly.GetManifestResourceNames(); using (var stream = typeof(HyphenatePatternsLoader).Assembly.GetManifestResourceStream($"{nameof(PdfCardGenerator)}.Resources.{language}.hyp.txt")) using (var reader = new StreamReader(stream)) this.exceptions = reader.ReadToEnd(); if (patternLookup.ContainsKey(language)) { this.patterns = patternLookup[language]; } else { using (var stream = typeof(HyphenatePatternsLoader).Assembly.GetManifestResourceStream($"{nameof(PdfCardGenerator)}.Resources.{language}.pat.txt")) using (var reader = new StreamReader(stream)) this.patterns = reader.ReadToEnd(); //var patternsClasses = this.patterns // .Split(new[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries) // .Select(x => new Pattern(x)); //var orderd = new System.Collections.Generic.SortedList<Pattern, Pattern>(); //foreach (var item in patternsClasses) // orderd.Add(item, item); //this.patterns = string.Join("\r\n", orderd // .Select(x => x.Value.str)); patternLookup[language] = this.patterns; } }
static void Main(string[] args) { if (args.Length == 0) { Console.WriteLine("Usage:\n\thyphenator \"path\\to\\file.txt\""); return; } var opts = new ResourceHyphenatePatternsLoader(HyphenatePatternsLanguage.EnglishUs); var nhyphenator = new Hyphenator(opts, "-"); try { var lines = File.ReadAllLines(args[0]); foreach (var line in lines) { Console.WriteLine(nhyphenator.HyphenateText(line)); } } catch (FileNotFoundException) { Console.WriteLine($"Could not find {args[0]}. Check the file path."); } }