Add "continuation style" "trailing ellipsis only" - thx Joel :)

This commit is contained in:
niksedk 2022-01-24 20:05:08 +01:00
parent 62f3fc585d
commit 0c8e30b1b8
10 changed files with 84 additions and 48 deletions

View File

@ -1289,6 +1289,8 @@ namespace Nikse.SubtitleEdit.Core.Common
return 7;
case ContinuationStyle.NoneEllipsisForPauses:
return 8;
case ContinuationStyle.OnlyTrailingEllipsis:
return 9;
default:
return 0;
}
@ -1314,6 +1316,8 @@ namespace Nikse.SubtitleEdit.Core.Common
return ContinuationStyle.LeadingTrailingEllipsis;
case 8:
return ContinuationStyle.NoneEllipsisForPauses;
case 9:
return ContinuationStyle.OnlyTrailingEllipsis;
default:
return ContinuationStyle.None;
}
@ -1321,11 +1325,11 @@ namespace Nikse.SubtitleEdit.Core.Common
public static string GetContinuationStylePreview(ContinuationStyle continuationStyle)
{
string line1 = "Lorem ipsum dolor sit amet\nconsectetur adipiscing elit,";
string line2 = "donec eget turpis consequat\nturpis commodo hendrerit";
string line3 = "praesent vel velit rutrum tellus\npharetra tristique vel non orci";
string linePause = "(...)";
string line4 = "mauris mollis consectetur nibh,\nnec congue est viverra quis.";
var line1 = "Lorem ipsum dolor sit amet\nconsectetur adipiscing elit,";
var line2 = "donec eget turpis consequat\nturpis commodo hendrerit";
var line3 = "praesent vel velit rutrum tellus\npharetra tristique vel non orci";
var linePause = "(...)";
var line4 = "mauris mollis consectetur nibh,\nnec congue est viverra quis.";
var profile = GetContinuationProfile(continuationStyle);
@ -1452,6 +1456,17 @@ namespace Nikse.SubtitleEdit.Core.Common
GapPrefix = "...",
GapPrefixAddSpace = false
};
case ContinuationStyle.OnlyTrailingEllipsis:
return new ContinuationProfile
{
Suffix = "…",
SuffixApplyIfComma = true,
SuffixAddSpace = false,
SuffixReplaceComma = true,
Prefix = "",
PrefixAddSpace = false,
UseDifferentStyleGap = false
};
default:
return new ContinuationProfile
{

View File

@ -11,5 +11,6 @@
LeadingTrailingEllipsis,
LeadingTrailingDash,
LeadingTrailingDashDots,
OnlyTrailingEllipsis,
}
}

View File

@ -47,12 +47,12 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
}
}
int minGapMs = ContinuationUtilities.GetMinimumGapMs();
var minGapMs = ContinuationUtilities.GetMinimumGapMs();
bool inSentence = false;
var inSentence = false;
bool? inItalicSentence = null;
for (int i = 0; i < subtitle.Paragraphs.Count - 1; i++)
for (var i = 0; i < subtitle.Paragraphs.Count - 1; i++)
{
var p = subtitle.Paragraphs[i];
var pNext = subtitle.Paragraphs[i + 1];
@ -64,7 +64,7 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
var shouldProcess = true;
// Detect gap
bool gap = pNext.StartTime.TotalMilliseconds - p.EndTime.TotalMilliseconds >= minGapMs;
var gap = pNext.StartTime.TotalMilliseconds - p.EndTime.TotalMilliseconds >= minGapMs;
// Convert for Arabic
if (callbacks.Language == "ar")
@ -136,7 +136,7 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
var textNextWithoutPrefix = ContinuationUtilities.SanitizeString(oldTextNextWithoutPrefix, true);
// Get last word of this paragraph
string lastWord = ContinuationUtilities.GetLastWord(text);
var lastWord = ContinuationUtilities.GetLastWord(text);
// If ends with dots (possible interruptions), or nothing, check if next sentence is new sentence, otherwise don't check by default
@ -169,7 +169,7 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
// and profile states to NOT replace comma,
// and next sentence starts with conjunction,
// try to re-add comma
bool addComma = lastWord.EndsWith(",") || HasSuffix(text)
var addComma = lastWord.EndsWith(",") || HasSuffix(text)
&& (gap ? !_continuationProfile.GapSuffixReplaceComma : !_continuationProfile.SuffixReplaceComma)
&& ContinuationUtilities.StartsWithConjunction(textNextWithoutPrefix, callbacks.Language);

View File

@ -731,17 +731,17 @@ namespace Nikse.SubtitleEdit.Forms
_ocrFixEngine = new OcrFixEngine(_ocrFixEngineLanguage, null, this);
}
string fixAction = _language.FixCommonOcrErrors;
int noOfFixes = 0;
string lastLine = string.Empty;
for (int i = 0; i < Subtitle.Paragraphs.Count; i++)
var fixAction = _language.FixCommonOcrErrors;
var noOfFixes = 0;
var lastLine = string.Empty;
for (var i = 0; i < Subtitle.Paragraphs.Count; i++)
{
var p = Subtitle.Paragraphs[i];
string text = _ocrFixEngine.FixOcrErrors(p.Text, i, lastLine, false, OcrFixEngine.AutoGuessLevel.Cautious);
var text = _ocrFixEngine.FixOcrErrors(p.Text, i, lastLine, false, OcrFixEngine.AutoGuessLevel.Cautious);
lastLine = text;
if (AllowFix(p, fixAction) && p.Text != text)
{
string oldText = p.Text;
var oldText = p.Text;
p.Text = text;
noOfFixes++;
AddFixToListView(p, fixAction, oldText, p.Text);

View File

@ -1195,6 +1195,7 @@ namespace Nikse.SubtitleEdit.Forms.Options
comboBoxContinuationStyle.Items.Add(LanguageSettings.Current.Settings.ContinuationStyleLeadingTrailingDashDots);
comboBoxContinuationStyle.Items.Add(LanguageSettings.Current.Settings.ContinuationStyleLeadingTrailingEllipsis);
comboBoxContinuationStyle.Items.Add(LanguageSettings.Current.Settings.ContinuationStyleNoneTrailingEllipsis);
comboBoxContinuationStyle.Items.Add(LanguageSettings.Current.Settings.ContinuationStyleOnlyTrailingEllipsis);
comboBoxContinuationStyle.SelectedIndex = 0;
toolTipContinuationPreview.RemoveAll();
toolTipContinuationPreview.SetToolTip(comboBoxContinuationStyle, ContinuationUtilities.GetContinuationStylePreview(continuationStyle));

View File

@ -329,6 +329,7 @@ namespace Nikse.SubtitleEdit.Forms.Options
comboBoxContinuationStyle.Items.Add(LanguageSettings.Current.Settings.ContinuationStyleLeadingTrailingDots);
comboBoxContinuationStyle.Items.Add(LanguageSettings.Current.Settings.ContinuationStyleLeadingTrailingDash);
comboBoxContinuationStyle.Items.Add(LanguageSettings.Current.Settings.ContinuationStyleLeadingTrailingDashDots);
comboBoxContinuationStyle.Items.Add(LanguageSettings.Current.Settings.ContinuationStyleNoneTrailingEllipsis);
comboBoxContinuationStyle.SelectedIndex = 0;
toolTipContinuationPreview.RemoveAll();
toolTipContinuationPreview.SetToolTip(comboBoxContinuationStyle, ContinuationUtilities.GetContinuationStylePreview(RulesProfiles[idx].ContinuationStyle));

View File

@ -2603,6 +2603,7 @@ can edit in same subtitle file (collaboration)",
ContinuationStyleNoneLeadingTrailingDots = "None, dots for pauses",
ContinuationStyleNoneTrailingEllipsis = "None, ellipsis for pauses",
ContinuationStyleOnlyTrailingDots = "Dots (trailing only)",
ContinuationStyleOnlyTrailingEllipsis = "Ellipsis (trailing only)",
ContinuationStyleLeadingTrailingDots = "Dots",
ContinuationStyleLeadingTrailingEllipsis = "Ellipsis",
ContinuationStyleLeadingTrailingDash = "Dash",

View File

@ -2449,6 +2449,7 @@
public string ContinuationStyleLeadingTrailingDots { get; set; }
public string ContinuationStyleLeadingTrailingEllipsis { get; set; }
public string ContinuationStyleNoneTrailingEllipsis { get; set; }
public string ContinuationStyleOnlyTrailingEllipsis { get; set; }
public string ContinuationStyleLeadingTrailingDash { get; set; }
public string ContinuationStyleLeadingTrailingDashDots { get; set; }
public string CpsLineLengthStyle { get; set; }

View File

@ -15,6 +15,7 @@ using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using Nikse.SubtitleEdit.Core.Enums;
namespace Nikse.SubtitleEdit.Logic.Ocr
{
@ -1176,11 +1177,25 @@ namespace Nikse.SubtitleEdit.Logic.Ocr
var st = new StrippableText(text);
if (lastLine == null || !lastLine.EndsWith("...", StringComparison.Ordinal) && !EndsWithAbbreviation(lastLine, abbreviationList))
{
if (st.StrippedText.Length > 0 && !char.IsUpper(st.StrippedText[0]) && !st.Pre.EndsWith('[') && !st.Pre.EndsWith('(') &&
var skip = lastLine != null &&
(lastLine.EndsWith("...", StringComparison.Ordinal) || lastLine.EndsWith("…")) &&
Configuration.Settings.General.ContinuationStyle == ContinuationStyle.OnlyTrailingDots;
if (!skip && lastLine != null &&
(lastLine.EndsWith("...", StringComparison.Ordinal) || lastLine.EndsWith("…")) &&
Configuration.Settings.General.ContinuationStyle == ContinuationStyle.OnlyTrailingEllipsis)
{
skip = true;
}
if (!skip && HtmlUtil.StartsWithUrl(st.StrippedText))
{
skip = true;
}
if (!skip && st.StrippedText.Length > 0 && !char.IsUpper(st.StrippedText[0]) && !st.Pre.EndsWith('[') && !st.Pre.EndsWith('(') &&
!st.Pre.Contains("...", StringComparison.Ordinal) &&
!st.Pre.Contains('…'))
{
if (!HtmlUtil.StartsWithUrl(st.StrippedText))
{
var uppercaseLetter = char.ToUpper(st.StrippedText[0]);
if (st.StrippedText.Length > 1 && uppercaseLetter == 'L' && (st.StrippedText[1] == ' ' || char.IsLower(st.StrippedText[1])))
@ -1214,7 +1229,6 @@ namespace Nikse.SubtitleEdit.Logic.Ocr
}
}
}
}
// lines ending with ". should often end at ... (of no other quotes exists near by)
if ((lastLine == null || !lastLine.Contains('"')) &&

View File

@ -1366,6 +1366,8 @@ namespace Nikse.SubtitleEdit.Logic
return LanguageSettings.Current.Settings.ContinuationStyleLeadingTrailingEllipsis;
case ContinuationStyle.NoneEllipsisForPauses:
return LanguageSettings.Current.Settings.ContinuationStyleNoneTrailingEllipsis;
case ContinuationStyle.OnlyTrailingEllipsis:
return LanguageSettings.Current.Settings.ContinuationStyleOnlyTrailingEllipsis;
default:
return LanguageSettings.Current.Settings.ContinuationStyleNone;
}