public MarkdownConverter(IConversionOptions options, HttpClient?httpClient = null, ILogger?logger = null) { this.options = options; this.logger = logger ?? NullLogger.Instance; this.httpClient = httpClient ?? new HttpClient(); this.includeXPaths = this.options.IncludeTags.Where(t => t.StartsWith("/")).ToList(); this.includeTags = this.options.IncludeTags.Except(this.includeXPaths).ToHashSet(); this.excludeXPaths = this.options.ExcludeTags.Where(t => t.StartsWith("/")).ToList(); this.excludeTags = this.options.ExcludeTags.Except(this.includeXPaths).ToHashSet(); }
public string ConvertToWords(double number, IConversionOptions options = null) { var dictionary = new EnglishDictionary(); var groupsToWordsConverter = new EnglishTripletToWordsConverter(dictionary); var converter = new NumberToWordsConverterBuilder() .WithDictionary(dictionary) .WithTripletConverter(groupsToWordsConverter) .Build(); return(converter.ConvertToWords(number, options)); }
public void Convert(string inputFile, string outputFile, IConversionOptions options) { if (string.IsNullOrWhiteSpace(Controller.FFmpegPath)) { throw new FFmpegException("Engine is not initialized yet"); } string additionalArgs = Path.DirectorySeparatorChar == '\\' ? "-nostdin -y -loglevel info " : "-y -loglevel info "; var startInfo = new ProcessStartInfo { FileName = Controller.FFmpegPath, Arguments = $"{additionalArgs}-i \"{inputFile}\" {options}\"{outputFile}\"", UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true, CreateNoWindow = true, WindowStyle = ProcessWindowStyle.Hidden }; using (var process = new Process()) { List <string> receivedMessagesLog = new List <string>(); TimeSpan totalMediaDuration = new TimeSpan(); Exception caughtException = null; process.StartInfo = startInfo; process.ErrorDataReceived += (sender, received) => { if (received.Data == null) { return; } try { receivedMessagesLog.Insert(0, received.Data); Match matchDuration = RegexEngine.Index[RegexEngine.Find.Duration].Match(received.Data); if (matchDuration.Success) { TimeSpan.TryParse(matchDuration.Groups[1].Value, out totalMediaDuration); } if (RegexEngine.IsProgressData(received.Data, out ConvertProgressEventArgs progressEvent)) { progressEvent.TotalDuration = totalMediaDuration; OnProgressChanged(progressEvent); } else if (RegexEngine.IsConvertCompleteData(received.Data, out ConversionCompleteEventArgs convertCompleteEvent)) { convertCompleteEvent.TotalDuration = totalMediaDuration; OnConversionComplete(convertCompleteEvent); } } catch (Exception ex) { caughtException = ex; } }; process.Start(); process.BeginErrorReadLine(); process.WaitForExit(); if (process.ExitCode != 0 || caughtException != null) { throw new Exception( process.ExitCode + ": " + receivedMessagesLog[0], caughtException); } } }
public MarkdownConverter(IConversionOptions options, ILogger?logger = null) : this(options, null, logger) { }
public virtual string ConvertToWords(double number, IConversionOptions options = null) { var wordsBuilder = new StringBuilder(); var tempNumber = number; var opt = options ?? ConversionOptions.Default; var currencyInfo = _converterDictionary.GetCurrencyInfo(opt.CurrencyCode); if (number < 0) { wordsBuilder.Append(_converterDictionary.GetMinus()); wordsBuilder.Append(opt.WordSeparator); tempNumber = Math.Abs(number); } (int IntegerValue, int decimalValue) = GetDecimalPartValue(number); string decimalString = ProcessGroup(decimalValue, -1, 0); string retVal = string.Empty; int group = 0; if (tempNumber < 1) { retVal = $"{_converterDictionary.GetZero()}"; } else { while (tempNumber >= 1) { int numberToProcess = (int)(tempNumber % 1000); tempNumber /= 1000; string groupDescription = ProcessGroup(numberToProcess, group, Math.Floor(tempNumber)); if (groupDescription != string.Empty) { if (group > 0) { var separator = retVal == string.Empty ? string.Empty : opt.WordSeparator; retVal = $"{_converterDictionary.GetGroup(group)}{separator}{retVal.TrimStart()}"; } retVal = $"{groupDescription.Trim()}{opt.WordSeparator}{retVal.TrimStart()}"; } group++; } } if (!string.IsNullOrEmpty(retVal)) { wordsBuilder.Append(retVal.Trim()); var currencyName = (IntegerValue == 1 ? currencyInfo.Name : currencyInfo.PluralName); wordsBuilder.Append(opt.WordSeparator); wordsBuilder.Append(currencyName.Trim()); } if (!string.IsNullOrEmpty(decimalString)) { wordsBuilder.Append(opt.WordSeparator); wordsBuilder.Append($"{_converterDictionary.GetAnd()}"); wordsBuilder.Append(opt.WordSeparator); wordsBuilder.Append(decimalString.Trim()); wordsBuilder.Append(opt.WordSeparator); var currencyPartName = (decimalValue == 1 ? currencyInfo.PartName : currencyInfo.PluralPartName); wordsBuilder.Append(currencyPartName.Trim()); } var result = wordsBuilder.ToString(); return(LetterCaseHelper.ConvertLetterCaseTo(result, opt.LanguageCode, opt.LetterCase)); }