]> iEval git - text-homestuck.git/blobdiff - lib/Text/Homestuck.pm
Add documentation
[text-homestuck.git] / lib / Text / Homestuck.pm
index 88354ed355876fc3960f7590efc9493df37c9d2f..ef508f7e4a94a793233f2dc4c58cfe52a0d2105f 100644 (file)
@@ -7,73 +7,71 @@ use parent qw/Exporter/;
 our @EXPORT = qw/aradia tavros sollux karkat nepeta kanaya terezi vriska equius gamzee eridan feferi/;
 our $VERSION = '0.000_001';
 
+sub filter {
+       my ($name, $code) = @_;
+       no strict 'refs';
+       *{$name} = sub (;$){
+               local *__ANON__ = $name;
+               if ($_[0]) {
+                       local $_ = $_[0];
+                       $code->();
+                       $_
+               } else {
+                       $code->();
+                       $_
+               }
+       }
+}
 
-sub aradia (_) {
-       local $_ = $_[0];
+filter aradia => sub {
        y/A-Z/a-z/;
        y/,.?//d;
        s/o/0/g;
-       $_
-}
+};
 
-sub tavros (_) {
-       local $_ = $_[0];
+filter tavros => sub {
        y/a-zA-Z.!?/A-Za-z,,,/;
        s/:\)/}:)/g;
-       $_
-}
+};
 
-sub sollux (_) {
-       local $_ = $_[0];
+filter sollux => sub {
        y/A-Z/a-z/;
        y/s/2/;
        s/i/ii/g;
        s/to/two/g;
        s/\b(fuck|joke|kk|aa)\b/\U$1/g;
-       $_
-}
+};
 
-sub karkat (_) {
-       local $_ = $_[0];
+filter karkat => sub {
        y/a-z/A-Z/;
        s/\bD:/D:B/;
-       $_
-}
+};
 
-sub nepeta (_){
-       local $_ = $_[0];
+filter nepeta => sub {
        y/A-Z/a-z/;
        s/ee/33/;
        $_ = ":33 < $_";
-       $_
-}
+};
 
-sub kanaya (_) {
-       local $_ = $_[0];
+filter kanaya => sub {
        y/,.!?'//d;
        s/\b(\w)/\u$1/g;
-       $_
-}
+};
 
-sub terezi (_) {
-       local $_ = $_[0];
+filter terezi => sub {
        y/a-z/A-Z/;
        y/AIE/413/;
        s/(!|\?)/$1$1/g;
        s/:\]|:\)/>:]/g;
-       $_
-}
+};
 
-sub vriska (_) {
-       local $_ = $_[0];
+filter vriska => sub {
        y/Bb/88/;
        s/:\)/::::\)/g;
        s/D:/D::::/g;
-       $_
-}
+};
 
-sub equius (_){
-       local $_ = $_[0];
+filter equius => sub {
        s/strong/STRONG/g;
        s/strength/STRONGNESS/g;
        s/x/%/ig;
@@ -81,71 +79,59 @@ sub equius (_){
        s/ool/001/ig;
        s/[?.!]$//;
        $_ = "D --> $_";
-       $_
-}
+};
 
-sub gamzee (_){
-       local $_ = $_[0];
+filter gamzee => sub {
        y/[A-Z]/[a-z]/;
        s/([a-z])(.)/$1\u$2/g;
        s/:\)/:o\)/g;
-       $_
-}
+};
 
-sub eridan (_){
-       local $_ = $_[0];
+filter eridan => sub {
        y/',.?!//d;
        s/w/ww/g;
        s/v/vv/g;
        s/ing/in/g;
        s/want to/wanna/g;
        s/going to/gonna/g;
-       $_
-}
+};
 
-sub feferi (_){
-       local $_ = $_[0];
+filter feferi => sub {
        s/H/)(/g;
        s/E/-E/g;
        s/:\)/38)/g;
-       $_
-}
+};
 
 1;
 __END__
-# Below is stub documentation for your module. You'd better edit it!
 
 =head1 NAME
 
-Text::Homestuck - Perl extension for blah blah blah
+Text::Homestuck - Emulate the typing quirks of Homestuck trolls
 
 =head1 SYNOPSIS
 
   use Text::Homestuck;
-  blah blah blah
+  say feferi 'HELLO WORLD!'; # )(-ELLO WORLD!
+  my @array = ('Move along.', 'Nothing to see here');
+  aradia for @array;
+  say "@array"; # m0ve al0ng n0thing t0 see here
 
 =head1 DESCRIPTION
 
-Stub documentation for Text::Homestuck, created by h2xs. It looks like the
-author of the extension was negligent enough to leave the stub
-unedited.
-
-Blah blah blah.
-
-=head2 EXPORT
-
-None by default.
-
+Text::Homestuck exports several subroutines, one for each typing quirk. There are 12 such functions right now, one for each pre-scratch troll: aradia, tavros, sollux, karkat, nepeta, kanaya, terezi, vriska, equius, gamzee, eridan, feferi.
 
+Each subroutine takes one or no arguments. If called with an argument, they apply the quirk to the argument and return the result. If called with no arguments, they apply the quirk to C<$_>, modifiying it in-place, and returning C<$_>.
 
 =head1 SEE ALSO
 
 Homestuck: L<http://mspaintadventures.com/?s=6&p=001901>
-The mspa wiki page listing the quirks: http://mspaintadventures.wikia.com/wiki/Typing_Quirk
+
+A table of typing quirks: L<http://mspaintadventures.wikia.com/wiki/Typing_Quirk>
 
 =head1 AUTHOR
 
-Marius Gavrilescu, E<lt>marius@E<gt>
+Marius Gavrilescu C<< <marius@ieval.ro> >>
 
 =head1 COPYRIGHT AND LICENSE
 
This page took 0.028738 seconds and 4 git commands to generate.