using System;\r
using System.Collections.Generic;\r
-using System.Text;\r
using System.IO;\r
+using System.Text.RegularExpressions;\r
\r
namespace Handbrake.Parsing\r
{\r
return string.Format("{0} {1}", this.m_trackNumber, this.m_language);\r
}\r
\r
- public static Subtitle Parse(StreamReader output)\r
+ public static Subtitle Parse(StringReader output)\r
{\r
string curLine = output.ReadLine();\r
- if (!curLine.Contains("HandBrake has exited."))\r
+ Match m = Regex.Match(curLine, @"^ \+ ([0-9]*), ([A-Za-z]*) \((.*)\)");\r
+ if (m.Success && !curLine.Contains("HandBrake has exited."))\r
{\r
Subtitle thisSubtitle = new Subtitle();\r
- string[] splitter = curLine.Split(new string[] { " + ", ", " }, StringSplitOptions.RemoveEmptyEntries);\r
- thisSubtitle.m_trackNumber = int.Parse(splitter[0]);\r
- thisSubtitle.m_language = splitter[1];\r
+ thisSubtitle.m_trackNumber = int.Parse(m.Groups[1].Value.Trim().ToString());\r
+ thisSubtitle.m_language = m.Groups[2].Value;\r
return thisSubtitle;\r
}\r
else\r
}\r
}\r
\r
- public static Subtitle[] ParseList(StreamReader output)\r
+ public static Subtitle[] ParseList(StringReader output)\r
{\r
List<Subtitle> subtitles = new List<Subtitle>();\r
- while ((char)output.Peek() != '+') // oh glorious hack, serve me well\r
+ while ((char)output.Peek() != '+')\r
{\r
Subtitle thisSubtitle = Subtitle.Parse(output);\r
\r