summaryrefslogtreecommitdiffstats
path: root/TOOLS/lib/Parse/Matroska/Utils.pm
diff options
context:
space:
mode:
Diffstat (limited to 'TOOLS/lib/Parse/Matroska/Utils.pm')
-rw-r--r--TOOLS/lib/Parse/Matroska/Utils.pm37
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
+}