summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dist.ini2
-rw-r--r--lib/App/Nopaste/Service/Mathbin.pm144
2 files changed, 146 insertions, 0 deletions
diff --git a/dist.ini b/dist.ini
index 49bc8fa..8af37e7 100644
--- a/dist.ini
+++ b/dist.ini
@@ -5,5 +5,7 @@ copyright_holder = Jesse Luehrs
[@DOY]
dist = App-Nopaste-Service-Mathbin
+Git::NextVersion_first_version = 0.27
[Prereqs]
+App::Nopaste = 0.05
diff --git a/lib/App/Nopaste/Service/Mathbin.pm b/lib/App/Nopaste/Service/Mathbin.pm
index e69de29..755d7ee 100644
--- a/lib/App/Nopaste/Service/Mathbin.pm
+++ b/lib/App/Nopaste/Service/Mathbin.pm
@@ -0,0 +1,144 @@
+package App::Nopaste::Service::Mathbin;
+use strict;
+use warnings;
+use base 'App::Nopaste::Service';
+# ABSTRACT: http://www.mathbin.net/
+
+=head1 SYNOPSIS
+
+ nopaste -s Mathbin
+
+=head1 DESCRIPTION
+
+This provides L<App::Nopaste> functionality for the
+L<Mathbin|http://mathbin.net> pastebin. It also provides a small amount of
+manipulation of the text, such that TeX files should be able to be provided
+unmodified.
+
+=cut
+
+sub uri { 'http://www.mathbin.net/' }
+sub forbid_in_default { 1 }
+
+sub fill_form {
+ my $self = shift;
+ my $mech = shift;
+ my %args = @_;
+
+ $mech->submit_form(
+ form_number => 1,
+ fields => {
+ body => $self->fix_eqns($args{text}),
+ do { $args{desc} ? (title => $args{desc}) : () },
+ do { $args{nick} ? (name => $args{nick}) : () },
+ },
+ );
+}
+
+sub return {
+ my $self = shift;
+ my $mech = shift;
+
+ my $result = $mech->base;
+
+ return (1, $result) if $result =~ /\/\d+$/;
+ return (0, "Paste unsuccessful");
+}
+
+sub fix_eqns {
+ my $self = shift;
+ my $text = shift;
+
+ $text =~ s"\\\["[EQ]"g;
+ $text =~ s"\\\]"[/EQ]"g;
+
+ my @text = split /\$\$/, $text, -1;
+ $text = '';
+ my $inside = 0;
+ for (@text) {
+ $text .= $_;
+ if ($inside) {
+ $text .= '[/EQ]';
+ $inside = 0;
+ }
+ else {
+ $text .= '[EQ]';
+ $inside = 1;
+ }
+ }
+ $text =~ s/\[EQ\]$//;
+
+ @text = split /\$/, $text, -1;
+ $text = '';
+ $inside = 0;
+ for (@text) {
+ $text .= $_;
+ if ($inside) {
+ $text .= '[/IEQ]';
+ $inside = 0;
+ }
+ else {
+ $text .= '[IEQ]';
+ $inside = 1;
+ }
+ }
+ $text =~ s/\[IEQ\]$//;
+
+ return $text;
+}
+
+=head1 BUGS
+
+No known bugs.
+
+Please report any bugs through RT: email
+C<bug-app-nopaste-service-mathbin at rt.cpan.org>, or browse to
+L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=App-Nopaste-Service-Mathbin>.
+
+=head1 SEE ALSO
+
+L<App::Nopaste>
+
+L<http://mathbin.net/>
+
+=head1 SUPPORT
+
+You can find this documentation for this module with the perldoc command.
+
+ perldoc App::Nopaste::Service::Mathbin
+
+You can also look for information at:
+
+=over 4
+
+=item * AnnoCPAN: Annotated CPAN documentation
+
+L<http://annocpan.org/dist/App-Nopaste-Service-Mathbin>
+
+=item * CPAN Ratings
+
+L<http://cpanratings.perl.org/d/App-Nopaste-Service-Mathbin>
+
+=item * RT: CPAN's request tracker
+
+L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=App-Nopaste-Service-Mathbin>
+
+=item * Search CPAN
+
+L<http://search.cpan.org/dist/App-Nopaste-Service-Mathbin>
+
+=back
+
+=begin Pod::Coverage
+
+uri
+forbid_in_default
+fill_form
+return
+fix_eqns
+
+=end Pod::Coverage
+
+=cut
+
+1;