Alex 'AdUser' Z
8 years ago
2 changed files with 51 additions and 42 deletions
@ -0,0 +1,50 @@
|
||||
package Subtitle::SSA::Record; |
||||
|
||||
use strict; |
||||
use warnings; |
||||
use utf8; |
||||
|
||||
use overload => ( |
||||
'""' => \&to_string, |
||||
); |
||||
|
||||
# options: |
||||
# * version - 'ssa' for v4 or 'ass' for v4+ |
||||
sub new { |
||||
my ($class, %opts) = @_; |
||||
my $self = { |
||||
_vers => 'ass', |
||||
}; |
||||
bless($self, $class); |
||||
|
||||
if ($opts{version} and $opts{version} =~ m{^(ass|ssa)$}oi) { |
||||
$self->{_vers} = lc($opts{version}); |
||||
} |
||||
|
||||
my @fields = $self->fields(); |
||||
foreach my $field (@fields) { |
||||
$self->{$field} = ($opts{defaults}) |
||||
? $FIELDS{$field}->{value} |
||||
: undef; |
||||
} |
||||
|
||||
return $self; |
||||
} |
||||
|
||||
sub fields { |
||||
my ($self) = @_; |
||||
return ($self->{_vers} eq 'ssa') |
||||
? @FIELDS_SSA |
||||
: @FIELDS_ASS; |
||||
} |
||||
|
||||
sub set { |
||||
my ($self, $opt, $value) = @_; |
||||
return unless $opt; |
||||
$opt = lc($opt); |
||||
return unless exists $self->{$opt}; |
||||
$self->{$opt} = $value; |
||||
return 1; |
||||
} |
||||
|
||||
1; |
Loading…
Reference in new issue