[gnome-subtitles] Fixed parsing and writing of some subtitle formats (fixes bug #643389, based on a patch from Pawel57



commit 7a0e1c6b1435f86490e92edc7983b15b1b60a767
Author: Pedro Castro <pedro gnomesubtitles org>
Date:   Sun Sep 11 22:29:59 2011 +0100

    Fixed parsing and writing of some subtitle formats (fixes bug #643389, based on a patch from Pawel57)

 .../SubtitleFormatKaraokeLyricsLRC.cs              |    6 +++---
 .../IO/SubtitleFormats/SubtitleFormatMPSub.cs      |    4 ++--
 .../IO/SubtitleFormats/SubtitleFormatSofni.cs      |    6 +++---
 .../SubtitleFormats/SubtitleFormatSubCreator1x.cs  |    8 ++++----
 .../SubtitleFormatViPlaySubtitleFile.cs            |   10 +++++-----
 5 files changed, 17 insertions(+), 17 deletions(-)
---
diff --git a/src/SubLib/IO/SubtitleFormats/SubtitleFormatKaraokeLyricsLRC.cs b/src/SubLib/IO/SubtitleFormats/SubtitleFormatKaraokeLyricsLRC.cs
index 990e0b0..c373d9a 100644
--- a/src/SubLib/IO/SubtitleFormats/SubtitleFormatKaraokeLyricsLRC.cs
+++ b/src/SubLib/IO/SubtitleFormats/SubtitleFormatKaraokeLyricsLRC.cs
@@ -1,6 +1,6 @@
 /*
  * This file is part of SubLib.
- * Copyright (C) 2007-2008 Pedro Castro
+ * Copyright (C) 2007-2008,2011 Pedro Castro
  *
  * SubLib is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -34,9 +34,9 @@ internal class SubtitleFormatKaraokeLyricsLRC : SubtitleFormat {
 		
 		lineBreak = "|"; // It does not manage line breaks, but still using this char as a separator
 		
-		format = @"\[\s*\d+:\d+.\d+\s*\].+\n+\[\s*\d+:\d+.\d+\s*\]";
+		format = @"\[\s*\d+:\d+[.,]\d+\s*\].+\n+\[\s*\d+:\d+[.,]\d+\s*\]";
 		
-		subtitleIn = @"\[\s*(?<StartMinutes>\d+)\s*:\s*(?<StartSeconds>\d+)\s*.\s*(?<StartCentiseconds>\d+)\s*\]\s*(?<Text>.*)\n+\[\s*(?<EndMinutes>\d+)\s*:\s*(?<EndSeconds>\d+)\s*.\s*(?<EndCentiseconds>\d+)\s*\]";
+		subtitleIn = @"\[\s*(?<StartMinutes>\d+)\s*:\s*(?<StartSeconds>\d+)\s*[.,]\s*(?<StartCentiseconds>\d+)\s*\]\s*(?<Text>.*)\n+\[\s*(?<EndMinutes>\d+)\s*:\s*(?<EndSeconds>\d+)\s*[.,]\s*(?<EndCentiseconds>\d+)\s*\]";
 		
 		subtitleOut = "[<<StartMinutes>>:<<StartSeconds>>.<<StartCentiseconds>>]<<Text>>\n" +
 			"[<<EndMinutes>>:<<EndSeconds>>.<<EndCentiseconds>>]";
diff --git a/src/SubLib/IO/SubtitleFormats/SubtitleFormatMPSub.cs b/src/SubLib/IO/SubtitleFormats/SubtitleFormatMPSub.cs
index 73f02e5..ec8c3a6 100644
--- a/src/SubLib/IO/SubtitleFormats/SubtitleFormatMPSub.cs
+++ b/src/SubLib/IO/SubtitleFormats/SubtitleFormatMPSub.cs
@@ -32,9 +32,9 @@ internal class SubtitleFormatMPSub : SubtitleFormat {
 		extensions = new string[] { "sub" };
 		lineBreak = "\n";
 
-		format = @"TITLE\s*=.*\n(.*\n)*FORMAT\s*=.*\n(.*\n)*[ \f\r\t\v]*\n\d+(\.\d+)? \d+(\.\d+)?\s+.+";
+		format = @"TITLE\s*=.*\n(.*\n)*FORMAT\s*=.*\n(.*\n)*[ \f\r\t\v]*\n\d+([.,]\d+)? \d+([.,]\d+)?\s+.+";
 
-		subtitleInTimesMode = @"(?<StartElapsedTime>\d+(\.\d*)?)[^\d\n](?<EndElapsedTime>\d+(\.\d*)?).*(?<Text>(\n?.*(?!\n[ \f\r\t\v]*\n))*.)";
+		subtitleInTimesMode = @"(?<StartElapsedTime>\d+([.,]\d*)?)[^\d\n](?<EndElapsedTime>\d+([.,]\d*)?).*(?<Text>(\n?.*(?!\n[ \f\r\t\v]*\n))*.)";
 		subtitleInFramesMode = @"(?<StartElapsedFrames>\d+)[^\d\n](?<EndElapsedFrames>\d+).*(?<Text>(\n?.*(?!\n[ \f\r\t\v]*\n))*.)";
 		
 		subtitleOutTimesMode = "<<StartElapsedTime>> <<EndElapsedTime>>\n<<Text>>\n";
diff --git a/src/SubLib/IO/SubtitleFormats/SubtitleFormatSofni.cs b/src/SubLib/IO/SubtitleFormats/SubtitleFormatSofni.cs
index d6eca63..fe5261c 100644
--- a/src/SubLib/IO/SubtitleFormats/SubtitleFormatSofni.cs
+++ b/src/SubLib/IO/SubtitleFormats/SubtitleFormatSofni.cs
@@ -1,6 +1,6 @@
 /*
  * This file is part of SubLib.
- * Copyright (C) 2007-2008 Pedro Castro
+ * Copyright (C) 2007-2008,2011 Pedro Castro
  *
  * SubLib is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -32,13 +32,13 @@ internal class SubtitleFormatSofni : SubtitleFormat {
     	extensions = new string[] { "sub" };
 		lineBreak = "\n";
 		
-		format = @".+\s+\d+:\d+:\d+.\d+\\\d+:\d+:\d+.\d+";
+		format = @".+\s+\d+:\d+:\d+[.,]\d+\\\d+:\d+:\d+[.,]\d+";
 		
 		subtitleIn = @"(?<Text>.+(\n.+)?)\n+(?<StartHours>\d+)\s*:\s*(?<StartMinutes>\d+)\s*:\s*(?<StartSeconds>\d+)\s*.\s*(?<StartCentiseconds>\d+)\\(?<EndHours>\d+)\s*:\s*(?<EndMinutes>\d+)\s*:\s*(?<EndSeconds>\d+)\s*.\s*(?<EndCentiseconds>\d+)";
 		
 		subtitleOut = "<<Text>>\n" +
 			"<<StartHours>>:<<StartMinutes>>:<<StartSeconds>>.<<StartCentiseconds>>" +
-			"\\ <<EndHours>>:<<EndMinutes>>:<<EndSeconds>>.<<EndCentiseconds>>\n";
+			"\\<<EndHours>>:<<EndMinutes>>:<<EndSeconds>>.<<EndCentiseconds>>";
 	}
 	
 }
diff --git a/src/SubLib/IO/SubtitleFormats/SubtitleFormatSubCreator1x.cs b/src/SubLib/IO/SubtitleFormats/SubtitleFormatSubCreator1x.cs
index 3344103..ddf7700 100644
--- a/src/SubLib/IO/SubtitleFormats/SubtitleFormatSubCreator1x.cs
+++ b/src/SubLib/IO/SubtitleFormats/SubtitleFormatSubCreator1x.cs
@@ -1,6 +1,6 @@
 /*
  * This file is part of SubLib.
- * Copyright (C) 2007-2008 Pedro Castro
+ * Copyright (C) 2007-2008,2011 Pedro Castro
  *
  * SubLib is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -32,12 +32,12 @@ internal class SubtitleFormatSubCreator1x : SubtitleFormat {
     	extensions = new string[] { "txt" };
 		lineBreak = "|";
 			
-		format = @"\d+:\d+:\d+.\d:\s*.+\s+\d+:\d+:\d+.\d:";
+		format = @"\d+:\d+:\d+[.,]\d:\s*.+\s+\d+:\d+:\d+[.,]\d:";
 		
-		subtitleIn = @"(?<StartHours>\d+):(?<StartMinutes>\d+):(?<StartSeconds>\d+).(?<StartDeciseconds>\d+):\s*(?<Text>.+)\s+(?<EndHours>\d+):(?<EndMinutes>\d+):(?<EndSeconds>\d+).(?<EndDeciseconds>\d+)";
+		subtitleIn = @"(?<StartHours>\d+):(?<StartMinutes>\d+):(?<StartSeconds>\d+)[.,](?<StartDeciseconds>\d+):\s*(?<Text>.+)\s+(?<EndHours>\d+):(?<EndMinutes>\d+):(?<EndSeconds>\d+)[.,](?<EndDeciseconds>\d+):";
 		
 		subtitleOut = "<<StartHours>>:<<StartMinutes>>:<<StartSeconds>>.<<StartDeciseconds>>:" +
-			"<<Text>>\n<<EndHours>>:<<EndMinutes>>:<<EndSeconds>>.<<EndDeciseconds>>:\n";
+			"<<Text>>\n<<EndHours>>:<<EndMinutes>>:<<EndSeconds>>.<<EndDeciseconds>>:";
 	}
 	
 }
diff --git a/src/SubLib/IO/SubtitleFormats/SubtitleFormatViPlaySubtitleFile.cs b/src/SubLib/IO/SubtitleFormats/SubtitleFormatViPlaySubtitleFile.cs
index 158a82b..4d33beb 100644
--- a/src/SubLib/IO/SubtitleFormats/SubtitleFormatViPlaySubtitleFile.cs
+++ b/src/SubLib/IO/SubtitleFormats/SubtitleFormatViPlaySubtitleFile.cs
@@ -1,6 +1,6 @@
 /*
  * This file is part of SubLib.
- * Copyright (C) 2007-2008 Pedro Castro
+ * Copyright (C) 2007-2008,2011 Pedro Castro
  *
  * SubLib is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -33,14 +33,14 @@ internal class SubtitleFormatViPlaySubtitleFile : SubtitleFormat {
 		extensions = new string[] { "vsf" };
 		lineBreak = "|";
 		
-		format = @"\{\* VIPLAY SUBTITLE FILE \*\}\s*\d+:\d+:\d+,\d+\s*-\s*\d+:\d+:\d+,\d+=.+";
+		format = @"\{\* VIPLAY SUBTITLE FILE \*\}\s*\d+:\d+:\d+[,.]\d+\s*-\s*\d+:\d+:\d+[,.]\d+=.+";
 		
-		subtitleIn = @"(?<StartHours>\d+)\s*:\s*(?<StartMinutes>\d+)\s*:\s*(?<StartSeconds>\d+)\s*,\s*(?<StartMilliseconds>\d+)\s*-\s*(?<EndHours>\d+)\s*:\s*(?<EndMinutes>\d+)\s*:\s*(?<EndSeconds>\d+)\s*,\s*(?<EndMilliseconds>\d+)\s*=\s*(?<Text>.*)";
+		subtitleIn = @"(?<StartHours>\d+)\s*:\s*(?<StartMinutes>\d+)\s*:\s*(?<StartSeconds>\d+)\s*[,.]\s*(?<StartMilliseconds>\d+)\s*-\s*(?<EndHours>\d+)\s*:\s*(?<EndMinutes>\d+)\s*:\s*(?<EndSeconds>\d+)\s*[,.]\s*(?<EndMilliseconds>\d+)\s*=\s*(?<Text>.*)";
 		
 		subtitleOut = "<<StartHours>>:<<StartMinutes>>:<<StartSeconds>>,<<StartMilliseconds>>-" +
-			"<<EndHours>>:<<EndMinutes>>:<<EndSeconds>>,<<EndMilliseconds>>=<<Text>>\n";
+			"<<EndHours>>:<<EndMinutes>>:<<EndSeconds>>,<<EndMilliseconds>>=<<Text>>";
 		
-		bodyBeginOut = "{* VIPLAY SUBTITLE FILE *}";	
+		bodyBeginOut = "{* VIPLAY SUBTITLE FILE *}\n";	
 			
 	}
 		



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]