mirror of
https://github.com/mpv-player/mpv
synced 2024-12-18 21:06:00 +00:00
fae7307931
file2string.pl and vdpau_functions.pl are direct ports. matroska.py was reimplemented as the Parse::Matroska module in CPAN, and matroska.pl was made a client of Parse::Matroska. A copy of Parse::Matroska is included in TOOLS/lib, and matroska.pl looks there first when trying to load the module. osxbundle.py was not ported since I have no means to verify it. Python is always available on OSX though, so there is no harm in removing the check for it on configure.
38 lines
744 B
Perl
38 lines
744 B
Perl
use strict;
|
|
use warnings;
|
|
|
|
# ABSTRACT: internally-used helper functions
|
|
package Parse::Matroska::Utils;
|
|
|
|
use Exporter;
|
|
our @ISA = qw{Exporter};
|
|
our @EXPORT_OK = qw{uniq uncamelize};
|
|
|
|
=method uniq(@array)
|
|
|
|
The same as L<List::MoreUtils/"uniq LIST">.
|
|
Included to avoid depending on it since it's
|
|
not a core module.
|
|
|
|
=cut
|
|
sub uniq(@) {
|
|
my %seen;
|
|
return grep { !$seen{$_}++ } @_;
|
|
}
|
|
|
|
=method uncamelize($string)
|
|
|
|
Converts a "StringLikeTHIS" into a
|
|
"string_like_this".
|
|
|
|
=cut
|
|
sub uncamelize($) {
|
|
local $_ = shift;
|
|
# lc followed by UC: lc_UC
|
|
s/(?<=[a-z])([A-Z])/_\L$1/g;
|
|
# UC followed by two lc: _UClclc
|
|
s/([A-Z])(?=[a-z]{2})/_\L$1/g;
|
|
# strip leading _ that the second regexp might add; lowercase all
|
|
s/^_//; lc
|
|
}
|