From b8decdd1709e088ce0307b87c6239223fbebbc30 Mon Sep 17 00:00:00 2001 From: Arkadiy Illarionov Date: Sun, 23 Oct 2016 12:04:53 +0300 Subject: [PATCH 1/5] Fixed rate command --- pysrt/srttime.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/pysrt/srttime.py b/pysrt/srttime.py index 0481b68..7de800a 100644 --- a/pysrt/srttime.py +++ b/pysrt/srttime.py @@ -93,6 +93,20 @@ def __imul__(self, ratio): self.ordinal = int(round(self.ordinal * ratio)) return self + def __div__(self, ratio): + return self.from_ordinal(int(round(self.ordinal / ratio))) + + def __idiv__(self, ratio): + self.ordinal = int(round(self.ordinal / ratio)) + return self + + def __truediv__(self, ratio): + return self.from_ordinal(int(round(self.ordinal / ratio))) + + def __itruediv__(self, ratio): + self.ordinal = int(round(self.ordinal / ratio)) + return self + @classmethod def coerce(cls, other): """ @@ -130,7 +144,7 @@ def shift(self, *args, **kwargs): All arguments are optional and have a default value of 0. """ if 'ratio' in kwargs: - self *= kwargs.pop('ratio') + self /= kwargs.pop('ratio') self += self.__class__(*args, **kwargs) @classmethod From cb62de38c71ce5ed14ad7dc1ab528a063d81a7a7 Mon Sep 17 00:00:00 2001 From: qarkai Date: Sun, 23 Oct 2016 13:00:41 +0300 Subject: [PATCH 2/5] Fix tests --- tests/test_srtfile.py | 2 +- tests/test_srtitem.py | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/test_srtfile.py b/tests/test_srtfile.py index aceb18e..aede21b 100644 --- a/tests/test_srtfile.py +++ b/tests/test_srtfile.py @@ -128,7 +128,7 @@ def test_shift(self): srt_file.shift(1, 1, 1, 1) self.assertEqual(srt_file[0].end, (1, 1, 1, 1)) srt_file.shift(ratio=2) - self.assertEqual(srt_file[0].end, (2, 2, 2, 2)) + self.assertEqual(srt_file[0].end, (0, 30, 30, 500)) class TestText(unittest.TestCase): diff --git a/tests/test_srtitem.py b/tests/test_srtitem.py index f4a6f2f..d09bec8 100644 --- a/tests/test_srtitem.py +++ b/tests/test_srtitem.py @@ -81,7 +81,7 @@ def setUp(self): def test_italics_tag(self): self.item.text = "Hello world !" self.assertEqual(self.item.text_without_tags,'Hello world !') - + def test_bold_tag(self): self.item.text = "Hello world !" self.assertEqual(self.item.text_without_tags,'Hello world !') @@ -126,10 +126,10 @@ def test_shift_down(self): def test_shift_by_ratio(self): self.item.shift(ratio=2) - self.assertEqual(self.item.start, {'minutes': 2}) - self.assertEqual(self.item.end, {'minutes': 2, 'seconds': 40}) - self.assertEqual(self.item.duration, (0, 0, 40, 0)) - self.assertEqual(self.item.characters_per_second, 0.325) + self.assertEqual(self.item.start, {'seconds': 30}) + self.assertEqual(self.item.end, {'seconds': 40}) + self.assertEqual(self.item.duration, (0, 0, 10, 0)) + self.assertEqual(self.item.characters_per_second, 1.3) class TestOperators(unittest.TestCase): From 69b9111a55e24e63488655cb1b30a75978d7c5a2 Mon Sep 17 00:00:00 2001 From: qarkai Date: Sun, 23 Oct 2016 13:31:14 +0300 Subject: [PATCH 3/5] Replace copypaste --- pysrt/srttime.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pysrt/srttime.py b/pysrt/srttime.py index 7de800a..a94087b 100644 --- a/pysrt/srttime.py +++ b/pysrt/srttime.py @@ -101,11 +101,10 @@ def __idiv__(self, ratio): return self def __truediv__(self, ratio): - return self.from_ordinal(int(round(self.ordinal / ratio))) + return self.__div__(ratio) def __itruediv__(self, ratio): - self.ordinal = int(round(self.ordinal / ratio)) - return self + return self.__idiv__(ratio) @classmethod def coerce(cls, other): From 32361e2de2e97bd5e4bd032467dc79cf1d5f6693 Mon Sep 17 00:00:00 2001 From: qarkai Date: Sun, 23 Oct 2016 13:31:52 +0300 Subject: [PATCH 4/5] Add tests for division --- tests/test_srttime.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/test_srttime.py b/tests/test_srttime.py index 1eb6804..d7977b9 100644 --- a/tests/test_srttime.py +++ b/tests/test_srttime.py @@ -146,5 +146,16 @@ def test_imul(self): self.time *= 0.5 self.assertEqual(self.time, (1, 2, 3, 4)) + def test_div(self): + self.assertEqual(self.time / 0.5, SubRipTime(2, 4, 6, 8)) + self.assertEqual(self.time / 2, (0, 31, 1, 502)) + + + def test_idiv(self): + self.time /= 0.5 + self.assertEqual(self.time, (2, 4, 6, 8)) + self.time /= 2 + self.assertEqual(self.time, (1, 2, 3, 4)) + if __name__ == '__main__': unittest.main() From 9598d8279255d57e77b6d56abc5a144131c5087f Mon Sep 17 00:00:00 2001 From: Arkadiy Illarionov Date: Sun, 23 Oct 2016 14:15:31 +0300 Subject: [PATCH 5/5] Remove extra newline --- tests/test_srttime.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_srttime.py b/tests/test_srttime.py index d7977b9..dfd4c6a 100644 --- a/tests/test_srttime.py +++ b/tests/test_srttime.py @@ -150,7 +150,6 @@ def test_div(self): self.assertEqual(self.time / 0.5, SubRipTime(2, 4, 6, 8)) self.assertEqual(self.time / 2, (0, 31, 1, 502)) - def test_idiv(self): self.time /= 0.5 self.assertEqual(self.time, (2, 4, 6, 8))