mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-27 22:42:38 +01:00
Minor refact
This commit is contained in:
parent
1dae1e6828
commit
694376f154
@ -1216,6 +1216,76 @@ namespace Nikse.SubtitleEdit.Core
|
||||
return Uri.UnescapeDataString(text);
|
||||
}
|
||||
|
||||
public static string ReverseStartAndEndingForRightToLeft(string s)
|
||||
{
|
||||
var lines = s.SplitToLines();
|
||||
var newLines = new StringBuilder();
|
||||
foreach (var line in lines)
|
||||
{
|
||||
string s2 = line;
|
||||
|
||||
bool startsWithItalic = false;
|
||||
if (s2.StartsWith("<i>", StringComparison.Ordinal))
|
||||
{
|
||||
startsWithItalic = true;
|
||||
s2 = s2.Remove(0, 3);
|
||||
}
|
||||
bool endsWithItalic = false;
|
||||
if (s2.EndsWith("</i>", StringComparison.Ordinal))
|
||||
{
|
||||
endsWithItalic = true;
|
||||
s2 = s2.Remove(s2.Length - 4, 4);
|
||||
}
|
||||
|
||||
var pre = new StringBuilder();
|
||||
var post = new StringBuilder();
|
||||
|
||||
int i = 0;
|
||||
while (i < s2.Length && @"- !?.""،,():;[]".Contains(s2[i]))
|
||||
{
|
||||
pre.Append(s2[i]);
|
||||
i++;
|
||||
}
|
||||
int j = s2.Length - 1;
|
||||
while (j > i && @"- !?.""،,():;[]".Contains(s2[j]))
|
||||
{
|
||||
post.Append(s2[j]);
|
||||
j--;
|
||||
}
|
||||
if (startsWithItalic)
|
||||
newLines.Append("<i>");
|
||||
newLines.Append(ReverseParenthesis(post.ToString()));
|
||||
newLines.Append(s2.Substring(pre.Length, s2.Length - (pre.Length + post.Length)));
|
||||
newLines.Append(ReverseParenthesis(ReverseString(pre.ToString())));
|
||||
if (endsWithItalic)
|
||||
newLines.Append("</i>");
|
||||
newLines.AppendLine();
|
||||
}
|
||||
return newLines.ToString().Trim();
|
||||
}
|
||||
|
||||
private static string ReverseString(string s)
|
||||
{
|
||||
var charArray = s.ToCharArray();
|
||||
Array.Reverse(charArray);
|
||||
return new string(charArray);
|
||||
}
|
||||
|
||||
private static string ReverseParenthesis(string s)
|
||||
{
|
||||
const string k = "@__<<>___@";
|
||||
|
||||
s = s.Replace("(", k);
|
||||
s = s.Replace(')', '(');
|
||||
s = s.Replace(k, ")");
|
||||
|
||||
s = s.Replace("[", k);
|
||||
s = s.Replace(']', '[');
|
||||
s = s.Replace(k, "]");
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
public static string FixEnglishTextInRightToLeftLanguage(string text, string reverseChars)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
|
@ -11457,83 +11457,13 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
foreach (int index in SubtitleListview1.SelectedIndices)
|
||||
{
|
||||
var p = _subtitle.Paragraphs[index];
|
||||
p.Text = ReverseStartAndEndingForRTL(p.Text);
|
||||
p.Text = Utilities.ReverseStartAndEndingForRightToLeft(p.Text);
|
||||
SubtitleListview1.SetText(index, p.Text);
|
||||
if (index == selectedIndex)
|
||||
textBoxListViewText.Text = p.Text;
|
||||
}
|
||||
}
|
||||
|
||||
private static string ReverseString(string s)
|
||||
{
|
||||
var charArray = s.ToCharArray();
|
||||
Array.Reverse(charArray);
|
||||
return new string(charArray);
|
||||
}
|
||||
|
||||
private static string ReverseParenthesis(string s)
|
||||
{
|
||||
const string k = "@__<<>___@";
|
||||
|
||||
s = s.Replace("(", k);
|
||||
s = s.Replace(')', '(');
|
||||
s = s.Replace(k, ")");
|
||||
|
||||
s = s.Replace("[", k);
|
||||
s = s.Replace(']', '[');
|
||||
s = s.Replace(k, "]");
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
private static string ReverseStartAndEndingForRTL(string s)
|
||||
{
|
||||
var lines = s.SplitToLines();
|
||||
var newLines = new StringBuilder();
|
||||
foreach (var line in lines)
|
||||
{
|
||||
string s2 = line;
|
||||
|
||||
bool startsWithItalic = false;
|
||||
if (s2.StartsWith("<i>", StringComparison.Ordinal))
|
||||
{
|
||||
startsWithItalic = true;
|
||||
s2 = s2.Remove(0, 3);
|
||||
}
|
||||
bool endsWithItalic = false;
|
||||
if (s2.EndsWith("</i>", StringComparison.Ordinal))
|
||||
{
|
||||
endsWithItalic = true;
|
||||
s2 = s2.Remove(s2.Length - 4, 4);
|
||||
}
|
||||
|
||||
var pre = new StringBuilder();
|
||||
var post = new StringBuilder();
|
||||
|
||||
int i = 0;
|
||||
while (i < s2.Length && @"- !?.""،,():;[]".Contains(s2[i]))
|
||||
{
|
||||
pre.Append(s2[i]);
|
||||
i++;
|
||||
}
|
||||
int j = s2.Length - 1;
|
||||
while (j > i && @"- !?.""،,():;[]".Contains(s2[j]))
|
||||
{
|
||||
post.Append(s2[j]);
|
||||
j--;
|
||||
}
|
||||
if (startsWithItalic)
|
||||
newLines.Append("<i>");
|
||||
newLines.Append(ReverseParenthesis(post.ToString()));
|
||||
newLines.Append(s2.Substring(pre.Length, s2.Length - (pre.Length + post.Length)));
|
||||
newLines.Append(ReverseParenthesis(ReverseString(pre.ToString())));
|
||||
if (endsWithItalic)
|
||||
newLines.Append("</i>");
|
||||
newLines.AppendLine();
|
||||
}
|
||||
return newLines.ToString().Trim();
|
||||
}
|
||||
|
||||
private void MergeDialogs()
|
||||
{
|
||||
if (SubtitleListview1.SelectedItems.Count == 2 && SubtitleListview1.SelectedIndices[0] + 1 == SubtitleListview1.SelectedIndices[1])
|
||||
|
Loading…
Reference in New Issue
Block a user