Alex 'AdUser' Z
10 years ago
2 changed files with 70 additions and 9 deletions
@ -1,9 +0,0 @@
|
||||
package Subtitle::ASS; |
||||
|
||||
use strict; |
||||
use warnings; |
||||
use utf8; |
||||
|
||||
use Carp; |
||||
|
||||
1; |
@ -0,0 +1,70 @@
|
||||
package Subtitle::SSA; |
||||
|
||||
use strict; |
||||
use warnings; |
||||
use feature qw(switch); |
||||
use utf8; |
||||
|
||||
use base 'Subtitle::BASE'; |
||||
|
||||
sub new { |
||||
my ($class, %args) = @_; |
||||
my $self = { |
||||
debug => 0, |
||||
eol => "\n", |
||||
%args, |
||||
events => [], |
||||
log => [], |
||||
}; |
||||
|
||||
return bless($self, $class); |
||||
} |
||||
|
||||
sub parse_timing { |
||||
my ($self, $str) = @_; |
||||
... |
||||
my $time = 0.0; |
||||
return unless $str =~ m/(\d+):(\d+):(\d+)([.,])(\d+)/oi; |
||||
my ($hrs, $min, $sec, $delim, $msec) = ($1, $2, $3, $4, $5); |
||||
if ($msec < 0 or $msec > 999) { |
||||
$self->log(warn => "wrong mseconds part of timing: $msec"); |
||||
return; |
||||
} |
||||
if ($sec < 0 or $sec > 59) { |
||||
$self->log(warn => "wrong seconds part of timing: $sec"); |
||||
return; |
||||
} |
||||
if ($min < 0 or $min > 59) { |
||||
$self->log(warn => "wrong minutes part of timing: $sec"); |
||||
return; |
||||
} |
||||
if ($hrs < 0) { |
||||
$self->log(warn => "wrong minutes part of timing: $sec"); |
||||
return; |
||||
} |
||||
given (length("$msec")) { |
||||
when ("3") { $time += $msec * 0.001; } |
||||
when ("2") { $time += $msec * 0.01; } |
||||
when ("1") { $time += $msec * 0.1; } |
||||
default { die("abnormal length of mseconds part"); } |
||||
} |
||||
$time += $sec; |
||||
$time += $min * 60; |
||||
$time += $hrs * 60 * 60; |
||||
return $time; |
||||
} |
||||
|
||||
sub new_event { return +{ id => undef, timing => undef, style => undef, text => undef }; } |
||||
|
||||
sub parse { |
||||
my ($self, $lines) = @_; |
||||
my $linenum = 0; |
||||
my $event; |
||||
|
||||
foreach my $line (@$lines) { |
||||
} |
||||
|
||||
return scalar @{ $self->{events} }; |
||||
} |
||||
|
||||
1; |
Loading…
Reference in new issue