Working on Fix common errors - Fix spanish questionmark/exclamation + inverted marks - thx Mike

Also added unit tests (now 100 :)


git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@1977 99eadd0c-20b8-1223-b5c4-2a2b2df33de2
This commit is contained in:
niksedk 2013-08-04 21:46:40 +00:00
parent c1d0a92427
commit dafab010fc
2 changed files with 52 additions and 2 deletions

View File

@ -4039,6 +4039,14 @@ namespace Nikse.SubtitleEdit.Forms
if (last != null && p.Text.Contains(mark) && !p.Text.Contains(inverseMark) && last.Text.Contains(inverseMark) && !last.Text.Contains(mark))
skip = true;
if (!skip && Utilities.CountTagInText(p.Text, mark) == Utilities.CountTagInText(p.Text, inverseMark) &&
Utilities.RemoveHtmlTags(p.Text).TrimStart(inverseMark[0]).Contains(inverseMark) == false &&
Utilities.RemoveHtmlTags(p.Text).TrimEnd(mark[0]).Contains(mark) == false)
{
skip = true;
}
if (!skip)
{
int startIndex = 0;
@ -4102,8 +4110,20 @@ namespace Nikse.SubtitleEdit.Forms
part = part.Substring(speakerEnd + 1);
}
StripableText st = new StripableText(part);
p.Text = p.Text.Remove(j, markIndex - j + 1).Insert(j, speaker + st.Pre + inverseMark + st.StrippedText + st.Post);
var st = new StripableText(part);
if (j == 0 && mark == "!" && st.Pre == "¿" && Utilities.CountTagInText(p.Text, mark) == 1 && Utilities.RemoveHtmlTags(p.Text).EndsWith(mark))
{
p.Text = inverseMark + p.Text;
}
else if (j == 0 && mark == "?" && st.Pre == "¡" && Utilities.CountTagInText(p.Text, mark) == 1 && Utilities.RemoveHtmlTags(p.Text).EndsWith(mark))
{
p.Text = inverseMark + p.Text;
}
else
{
p.Text = p.Text.Remove(j, markIndex - j + 1).Insert(j, speaker + st.Pre + inverseMark + st.StrippedText + st.Post);
}
}
}
}

View File

@ -421,6 +421,36 @@ namespace Test
Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "¡Cómo estás!");
}
[TestMethod]
[DeploymentItem("SubtitleEdit.exe")]
public void FixSpanishExclamationMarkDouble()
{
var target = new FixCommonErrors_Accessor();
InitializeFixCommonErrorsLine(target, "¡¡PARA!!");
target.FixSpanishInvertedQuestionAndExclamationMarks();
Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "¡¡PARA!!");
}
[TestMethod]
[DeploymentItem("SubtitleEdit.exe")]
public void FixSpanishExclamationMarkTriple()
{
var target = new FixCommonErrors_Accessor();
InitializeFixCommonErrorsLine(target, "¡¡¡PARA!!!");
target.FixSpanishInvertedQuestionAndExclamationMarks();
Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "¡¡¡PARA!!!");
}
[TestMethod]
[DeploymentItem("SubtitleEdit.exe")]
public void FixSpanishExclamationMarkAndQuestionMark()
{
var target = new FixCommonErrors_Accessor();
InitializeFixCommonErrorsLine(target, "¿Cómo estás?!");
target.FixSpanishInvertedQuestionAndExclamationMarks();
Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "¡¿Cómo estás?!");
}
#endregion
}