Alex 'AdUser' Z
9 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