diff options
Diffstat (limited to 'TOOLS/lib/Parse/Matroska/Utils.pm')
-rw-r--r-- | TOOLS/lib/Parse/Matroska/Utils.pm | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/TOOLS/lib/Parse/Matroska/Utils.pm b/TOOLS/lib/Parse/Matroska/Utils.pm new file mode 100644 index 0000000000..127d626cb1 --- /dev/null +++ b/TOOLS/lib/Parse/Matroska/Utils.pm @@ -0,0 +1,37 @@ +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 +} |