OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / win / C# / Parsing / Subtitle.cs
index 66cc078..6d83d26 100644 (file)
@@ -1,7 +1,7 @@
 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
@@ -43,15 +43,15 @@ namespace Handbrake.Parsing
             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
@@ -60,10 +60,10 @@ namespace Handbrake.Parsing
             }\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