public bool IsDialog(List <string> lines, Paragraph p, Paragraph prev) { if (lines.Count < 2 || lines.Count > 3) { return(false); } var l0 = HtmlUtil.RemoveHtmlTags(lines[0]); var l1 = HtmlUtil.RemoveHtmlTags(lines[1], true); var noLineEnding = SkipLineEndingCheck || LanguageAutoDetect.IsLanguageWithoutPeriods(TwoLetterLanguageCode); if (lines.Count == 2) { if ((l0.HasSentenceEnding(TwoLetterLanguageCode) || noLineEnding) && (l1.TrimStart().StartsWith(GetDashChar()) || l1.TrimStart().StartsWith(GetAlternateDashChar()))) { return(true); } var prevEnding = prev == null || prev.Text.HasSentenceEnding(TwoLetterLanguageCode) || p.StartTime.TotalMilliseconds - prev.EndTime.TotalMilliseconds > 3000; if (prevEnding && (l0.StartsWith(GetDashChar()) || l0.StartsWith(GetAlternateDashChar())) && l0.HasSentenceEnding(TwoLetterLanguageCode)) { return(true); } } if (lines.Count == 3) { var l2 = HtmlUtil.RemoveHtmlTags(lines[2], true); // - I'm fine today, but I would have // been better if I had a some candy. // - How are you? if (IsDialogThreeLinesTwoOne(l0, l1, l2)) { return(true); } // - How are you? // - I'm fine today, but I would have // been better if I had a some candy. if (IsDialogThreeLinesOneTwo(l0, l1, l2)) { return(true); } if ((l0.HasSentenceEnding(TwoLetterLanguageCode) || noLineEnding) && (l1.TrimStart().StartsWith(GetDashChar()) || l1.TrimStart().StartsWith(GetAlternateDashChar())) && (l1.HasSentenceEnding(TwoLetterLanguageCode) || noLineEnding) && (l2.TrimStart().StartsWith(GetDashChar()) || l2.TrimStart().StartsWith(GetAlternateDashChar()))) { return(true); } } return(false); }
public static int CountWords(this string source) { return(HtmlUtil.RemoveHtmlTags(source, true).Split(new[] { ' ', '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries).Length); }
public bool IsDialog(List <string> lines) { if (lines.Count < 2 || lines.Count > 3) { return(false); } var l0 = HtmlUtil.RemoveHtmlTags(lines[0]); var l1 = HtmlUtil.RemoveHtmlTags(lines[1], true); var noLineEnding = SkipLineEndingCheck || LanguageAutoDetect.IsLanguageWithoutPeriods(TwoLetterLanguageCode); if (lines.Count == 2) { if ((l0.HasSentenceEnding(TwoLetterLanguageCode) || noLineEnding) && (l1.TrimStart().StartsWith(GetDashChar()) || l1.TrimStart().StartsWith(GetAlternateDashChar()))) { return(true); } if ((l0.TrimStart().StartsWith(GetDashChar()) || l0.TrimStart().StartsWith(GetAlternateDashChar())) && l0.EndsWith("--", StringComparison.Ordinal) && !l0.EndsWith("---", StringComparison.Ordinal) && (l1.TrimStart().StartsWith(GetDashChar()) || l1.TrimStart().StartsWith(GetAlternateDashChar()))) { var trimmed = l0.TrimEnd('-').TrimEnd(); if (trimmed.Length > 0 && char.IsLetterOrDigit(trimmed[trimmed.Length - 1])) { return(true); } } } if (lines.Count == 3) { var l2 = HtmlUtil.RemoveHtmlTags(lines[2], true); // - I'm fine today, but I would have // been better if I had a some candy. // - How are you? if (IsDialogThreeLinesTwoOne(l0, l1, l2)) { return(true); } // - How are you? // - I'm fine today, but I would have // been better if I had a some candy. if (IsDialogThreeLinesOneTwo(l0, l1, l2)) { return(true); } if ((l0.HasSentenceEnding(TwoLetterLanguageCode) || noLineEnding) && (l1.TrimStart().StartsWith(GetDashChar()) || l1.TrimStart().StartsWith(GetAlternateDashChar())) && (l1.HasSentenceEnding(TwoLetterLanguageCode) || noLineEnding) && (l2.TrimStart().StartsWith(GetDashChar()) || l2.TrimStart().StartsWith(GetAlternateDashChar()))) { return(true); } } return(false); }