aboutsummaryrefslogtreecommitdiffstats
path: root/lib/WWW/FairViewer/RegularExpressions.pm
diff options
context:
space:
mode:
authorJesús <heckyel@hyperbola.info>2020-03-02 08:18:54 -0500
committerJesús <heckyel@hyperbola.info>2020-03-02 08:18:54 -0500
commitc67158fa409f1b1b4f98a8621a69bb2013b76451 (patch)
treebb4ca80f29cda70734a868d372e00c85e172e7d3 /lib/WWW/FairViewer/RegularExpressions.pm
parentad7ec1785fc28799e10d10e7a679dc5bb4891ee3 (diff)
downloadfair-viewer-c67158fa409f1b1b4f98a8621a69bb2013b76451.tar.lz
fair-viewer-c67158fa409f1b1b4f98a8621a69bb2013b76451.tar.xz
fair-viewer-c67158fa409f1b1b4f98a8621a69bb2013b76451.zip
rebrand app
Diffstat (limited to 'lib/WWW/FairViewer/RegularExpressions.pm')
-rw-r--r--lib/WWW/FairViewer/RegularExpressions.pm89
1 files changed, 89 insertions, 0 deletions
diff --git a/lib/WWW/FairViewer/RegularExpressions.pm b/lib/WWW/FairViewer/RegularExpressions.pm
new file mode 100644
index 0000000..20d2a99
--- /dev/null
+++ b/lib/WWW/FairViewer/RegularExpressions.pm
@@ -0,0 +1,89 @@
+package WWW::FairViewer::RegularExpressions;
+
+use utf8;
+use 5.014;
+use warnings;
+
+require Exporter;
+our @ISA = qw(Exporter);
+
+=head1 NAME
+
+WWW::FairViewer::RegularExpressions - Various utils.
+
+=head1 SYNOPSIS
+
+ use WWW::FairViewer::RegularExpressions;
+ use WWW::FairViewer::RegularExpressions ($get_video_id_re);
+
+=cut
+
+my $opt_begin_chars = q{:;=}; # stdin option valid begin chars
+
+# Options
+our $range_num_re = qr{^([0-9]{1,2}+)(?>-|\.\.)([0-9]{1,2}+)?\z};
+our $digit_or_equal_re = qr/(?(?=[1-9])|=)/;
+our $non_digit_or_opt_re = qr{^(?!$range_num_re)(?>[0-9]{1,2}[^0-9]|[0-9]{3}|[^0-9$opt_begin_chars])};
+
+# Generic name
+my $generic_name_re = qr/[a-zA-Z0-9_.\-]{11,34}/;
+our $valid_channel_id_re = qr{^(?:.*/channel/)?(?<channel_id>(?:\w+(?:[-.]++\w++)*|$generic_name_re))(?:/.*)?\z};
+
+our $get_channel_videos_id_re = qr{^.*/channel/(?<channel_id>(?:\w+(?:[-.]++\w++)*|$generic_name_re))};
+our $get_channel_playlists_id_re = qr{$get_channel_videos_id_re/playlists};
+
+our $get_username_videos_re = qr{^.*/user/(?<username>[-.\w]+)};
+our $get_username_playlists_re = qr{$get_username_videos_re/playlists};
+
+# Video ID
+my $video_id_re = qr/[0-9A-Za-z_\-]{11}/;
+our $valid_video_id_re = qr{^$video_id_re\z};
+our $get_video_id_re = qr{(?:%3F|\b)(?>v|embed|youtu[.]be)(?>[=/]|%3D)(?<video_id>$video_id_re)};
+
+# Playlist ID
+our $valid_playlist_id_re = qr{^$generic_name_re\z};
+our $get_playlist_id_re = qr{(?:(?:(?>playlist\?list|view_play_list\?p|list)=)|\w#p/c/)(?<playlist_id>$generic_name_re)\b};
+
+our $valid_opt_re = qr{^[$opt_begin_chars]([A-Za-z]++(?:-[A-Za-z]++)?(?>${digit_or_equal_re}.*)?)$};
+
+our @EXPORT = qw(
+ $range_num_re
+ $digit_or_equal_re
+ $non_digit_or_opt_re
+ $valid_channel_id_re
+ $valid_video_id_re
+ $get_video_id_re
+ $valid_playlist_id_re
+ $get_playlist_id_re
+ $valid_opt_re
+ $get_channel_videos_id_re
+ $get_channel_playlists_id_re
+ $get_username_videos_re
+ $get_username_playlists_re
+ );
+
+=head1 AUTHOR
+
+Trizen, C<< <echo dHJpemVuQHByb3Rvbm1haWwuY29tCg== | base64 -d> >>
+
+
+=head1 SUPPORT
+
+You can find documentation for this module with the perldoc command.
+
+ perldoc WWW::FairViewer::RegularExpressions
+
+
+=head1 LICENSE AND COPYRIGHT
+
+Copyright 2012-2013 Trizen.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of either: the GNU General Public License as published
+by the Free Software Foundation; or the Artistic License.
+
+See L<http://dev.perl.org/licenses/> for more information.
+
+=cut
+
+1; # End of WWW::FairViewer::RegularExpressions