diff interps/clc-intercal/CLC-INTERCAL-Base-1.-94.-2/INTERCAL/Interface.pm @ 996:859f9b4339e6

<Gregor> tar xf egobot.tar.xz
author HackBot
date Sun, 09 Dec 2012 19:30:08 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/interps/clc-intercal/CLC-INTERCAL-Base-1.-94.-2/INTERCAL/Interface.pm	Sun Dec 09 19:30:08 2012 +0000
@@ -0,0 +1,43 @@
+package Language::INTERCAL::Interface;
+
+# User interface for sick and intercalc
+
+# This file is part of CLC-INTERCAL
+
+# Copyright (c) 2006-2008 Claudio Calvelli, all rights reserved.
+
+# CLC-INTERCAL is copyrighted software. However, permission to use, modify,
+# and distribute it is granted provided that the conditions set out in the
+# licence agreement are met. See files README and COPYING in the distribution.
+
+use strict;
+use vars qw($VERSION $PERVERSION);
+($VERSION) = ($PERVERSION = "CLC-INTERCAL/Base INTERCAL/Interface.pm 1.-94.-2") =~ /\s(\S+)$/;
+
+use Carp;
+use Language::INTERCAL::Exporter '1.-94.-2';
+
+sub new {
+    @_ >= 3 or croak "Usage: Language::INTERCAL::Interface->new"
+		   . "(SERVER, PREFER, TRY_LIST)";
+    my $class = shift;
+    my $server = shift;
+    my $prefer = shift;
+    my $lasterr = "Could not load user interface";
+    for my $name ($prefer || @_) {
+	my $modname = "Language::INTERCAL::Interface::$name";
+	eval "require $modname";
+	if ($@) {
+	    $lasterr = $@;
+	    next;
+	}
+	my $obj = eval { $modname->new($server) };
+	return $obj if $obj && ref $obj;
+	$lasterr = $@ if $@;
+    };
+    $lasterr .= "\n" if $lasterr !~ /\n$/;
+    die $lasterr;
+}
+
+1;
+