Add documentation
[text-homestuck.git] / lib / Text / Homestuck.pm
1 package Text::Homestuck;
2
3 use 5.014000;
4 use strict;
5 use warnings;
6 use parent qw/Exporter/;
7 our @EXPORT = qw/aradia tavros sollux karkat nepeta kanaya terezi vriska equius gamzee eridan feferi/;
8 our $VERSION = '0.000_001';
9
10 sub filter {
11 my ($name, $code) = @_;
12 no strict 'refs';
13 *{$name} = sub (;$){
14 local *__ANON__ = $name;
15 if ($_[0]) {
16 local $_ = $_[0];
17 $code->();
18 $_
19 } else {
20 $code->();
21 $_
22 }
23 }
24 }
25
26 filter aradia => sub {
27 y/A-Z/a-z/;
28 y/,.?//d;
29 s/o/0/g;
30 };
31
32 filter tavros => sub {
33 y/a-zA-Z.!?/A-Za-z,,,/;
34 s/:\)/}:)/g;
35 };
36
37 filter sollux => sub {
38 y/A-Z/a-z/;
39 y/s/2/;
40 s/i/ii/g;
41 s/to/two/g;
42 s/\b(fuck|joke|kk|aa)\b/\U$1/g;
43 };
44
45 filter karkat => sub {
46 y/a-z/A-Z/;
47 s/\bD:/D:B/;
48 };
49
50 filter nepeta => sub {
51 y/A-Z/a-z/;
52 s/ee/33/;
53 $_ = ":33 < $_";
54 };
55
56 filter kanaya => sub {
57 y/,.!?'//d;
58 s/\b(\w)/\u$1/g;
59 };
60
61 filter terezi => sub {
62 y/a-z/A-Z/;
63 y/AIE/413/;
64 s/(!|\?)/$1$1/g;
65 s/:\]|:\)/>:]/g;
66 };
67
68 filter vriska => sub {
69 y/Bb/88/;
70 s/:\)/::::\)/g;
71 s/D:/D::::/g;
72 };
73
74 filter equius => sub {
75 s/strong/STRONG/g;
76 s/strength/STRONGNESS/g;
77 s/x/%/ig;
78 s/loo/100/ig;
79 s/ool/001/ig;
80 s/[?.!]$//;
81 $_ = "D --> $_";
82 };
83
84 filter gamzee => sub {
85 y/[A-Z]/[a-z]/;
86 s/([a-z])(.)/$1\u$2/g;
87 s/:\)/:o\)/g;
88 };
89
90 filter eridan => sub {
91 y/',.?!//d;
92 s/w/ww/g;
93 s/v/vv/g;
94 s/ing/in/g;
95 s/want to/wanna/g;
96 s/going to/gonna/g;
97 };
98
99 filter feferi => sub {
100 s/H/)(/g;
101 s/E/-E/g;
102 s/:\)/38)/g;
103 };
104
105 1;
106 __END__
107
108 =head1 NAME
109
110 Text::Homestuck - Emulate the typing quirks of Homestuck trolls
111
112 =head1 SYNOPSIS
113
114 use Text::Homestuck;
115 say feferi 'HELLO WORLD!'; # )(-ELLO WORLD!
116 my @array = ('Move along.', 'Nothing to see here');
117 aradia for @array;
118 say "@array"; # m0ve al0ng n0thing t0 see here
119
120 =head1 DESCRIPTION
121
122 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.
123
124 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<$_>.
125
126 =head1 SEE ALSO
127
128 Homestuck: L<http://mspaintadventures.com/?s=6&p=001901>
129
130 A table of typing quirks: L<http://mspaintadventures.wikia.com/wiki/Typing_Quirk>
131
132 =head1 AUTHOR
133
134 Marius Gavrilescu C<< <marius@ieval.ro> >>
135
136 =head1 COPYRIGHT AND LICENSE
137
138 Copyright (C) 2014 by Marius Gavrilescu
139
140 This library is free software; you can redistribute it and/or modify
141 it under the same terms as Perl itself, either Perl version 5.18.2 or,
142 at your option, any later version of Perl 5 you may have available.
143
144
145 =cut
This page took 0.025963 seconds and 4 git commands to generate.