/* Subtitle.cs $
This file is part of the HandBrake source code.
Homepage: .
It may be used under the terms of the GNU General Public License. */
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
namespace Handbrake.Parsing
{
///
/// An object that represents a subtitle associated with a Title, in a DVD
///
public class Subtitle
{
private int m_trackNumber;
///
/// The track number of this Subtitle
///
public int TrackNumber
{
get
{
return this.m_trackNumber;
}
}
private string m_language;
///
/// The language (if detected) of this Subtitle
///
public string Language
{
get
{
return this.m_language;
}
}
///
/// Override of the ToString method to make this object easier to use in the UI
///
/// A string formatted as: {track #} {language}
public override string ToString()
{
return string.Format("{0} {1}", this.m_trackNumber, this.m_language);
}
public static Subtitle Parse(StringReader output)
{
string curLine = output.ReadLine();
Match m = Regex.Match(curLine, @"^ \+ ([0-9]*), ([A-Za-z, ]*) \((.*)\)");
if (m.Success && !curLine.Contains("HandBrake has exited."))
{
Subtitle thisSubtitle = new Subtitle();
thisSubtitle.m_trackNumber = int.Parse(m.Groups[1].Value.Trim().ToString());
thisSubtitle.m_language = m.Groups[2].Value;
return thisSubtitle;
}
else
return null;
}
public static Subtitle[] ParseList(StringReader output)
{
List subtitles = new List();
while ((char)output.Peek() != '+')
{
Subtitle thisSubtitle = Subtitle.Parse(output);
if (thisSubtitle != null)
subtitles.Add(thisSubtitle);
else
break;
}
return subtitles.ToArray();
}
}
}