diff options
Diffstat (limited to 'support/autolatex/pm/AutoLaTeX/Interpreter')
-rw-r--r-- | support/autolatex/pm/AutoLaTeX/Interpreter/AbstractInterpreter.pm | 130 | ||||
-rw-r--r-- | support/autolatex/pm/AutoLaTeX/Interpreter/batch.pm | 145 | ||||
-rw-r--r-- | support/autolatex/pm/AutoLaTeX/Interpreter/js.pm | 145 | ||||
-rw-r--r-- | support/autolatex/pm/AutoLaTeX/Interpreter/python.pm | 153 | ||||
-rw-r--r-- | support/autolatex/pm/AutoLaTeX/Interpreter/ruby.pm | 153 | ||||
-rw-r--r-- | support/autolatex/pm/AutoLaTeX/Interpreter/sh.pm | 145 | ||||
-rw-r--r-- | support/autolatex/pm/AutoLaTeX/Interpreter/wincmd.pm | 145 |
7 files changed, 1016 insertions, 0 deletions
diff --git a/support/autolatex/pm/AutoLaTeX/Interpreter/AbstractInterpreter.pm b/support/autolatex/pm/AutoLaTeX/Interpreter/AbstractInterpreter.pm new file mode 100644 index 0000000000..fa1cabbb56 --- /dev/null +++ b/support/autolatex/pm/AutoLaTeX/Interpreter/AbstractInterpreter.pm @@ -0,0 +1,130 @@ +# Copyright (C) 2013 Stephane Galland <galland@arakhne.org> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +=pod + +=head1 NAME + +AutoLaTeX::Interpreter::AbstractInterpreter - An abstract script interpreter + +=head1 DESCRIPTION + +AutoLaTeX::Interpreter::AbstractInterpreter is a Perl module, which permits to +create script interpreters + +=head1 METHOD DESCRIPTIONS + +This section contains only the methods in AbstractInterpreter.pm itself. + +=over + +=cut + +package AutoLaTeX::Interpreter::AbstractInterpreter; + +@ISA = qw( Exporter ); +@EXPORT = qw(); +@EXPORT_OK = qw(); + +require 5.014; +use strict; +use utf8; +use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); +use Exporter; +use Carp; + +#------------------------------------------------------ +# +# Global vars +# +#------------------------------------------------------ + +# Version number +my $VERSION = "1.0" ; + + +=pod + +=item * new() + +Constructor + +=cut +sub new() : method { + my $proto = shift; + my $class = ref($proto) || $proto; + my $parent = ref($proto) && $proto ; + + my $self ; + if ( $parent ) { + %{$self} = %{$parent} ; + } + else { + $self = { 'global' => {} }; + } + bless( $self, $class ); + return $self; +} + +=pod + +=item * define_global_variable($$) + +Define the value of a global variable. + +=cut +sub define_global_variable($$) : method { + my $self = shift; + my $name = shift || confess("no variable name"); + my $value = shift; + $self->{'global'}{"$name"} = $value; +} + +=pod + +=item * run($) + +Run the given code. + +=cut +sub run($) : method { + confess("You must implement the method run()."); +} + + +1; +__END__ + +=back + +=head1 COPYRIGHT + +(c) Copyright 2013 Stephane Galland E<lt>galland@arakhne.orgE<gt>, under GPL. + +=head1 AUTHORS + +=over + +=item * + +Conceived and initially developed by Stéphane Galland E<lt>galland@arakhne.orgE<gt>. + +=back + +=head1 SEE ALSO + +L<autolatex> diff --git a/support/autolatex/pm/AutoLaTeX/Interpreter/batch.pm b/support/autolatex/pm/AutoLaTeX/Interpreter/batch.pm new file mode 100644 index 0000000000..d88448f32d --- /dev/null +++ b/support/autolatex/pm/AutoLaTeX/Interpreter/batch.pm @@ -0,0 +1,145 @@ +# Copyright (C) 2013 Stephane Galland <galland@arakhne.org> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +=pod + +=head1 NAME + +AutoLaTeX::Interpreter::batch - A DOS-Batch interpreter + +=head1 DESCRIPTION + +AutoLaTeX::Interpreter::batch is a Perl module, which permits to +run DOS-Batch scripts. + +=head1 METHOD DESCRIPTIONS + +This section contains only the methods in batch.pm itself. + +=over + +=cut + +package AutoLaTeX::Interpreter::batch; + +@ISA = qw( AutoLaTeX::Interpreter::AbstractInterpreter ); +@EXPORT = qw(); +@EXPORT_OK = qw(); + +require 5.014; +use strict; +use utf8; +use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); +use Exporter; +use Carp; +use Scalar::Util qw(looks_like_number); + +use AutoLaTeX::Interpreter::AbstractInterpreter; +use AutoLaTeX::Core::Util; + +#------------------------------------------------------ +# +# Global vars +# +#------------------------------------------------------ + +# Version number +my $VERSION = "1.0" ; + + +=pod + +=item * new() + +Constructor + +=cut +sub new() : method { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = bless( $class->SUPER::new(), $class); + return $self; +} + + +sub _to_batch($$) { + my $name = shift; + my $value = shift; + if (defined($value)) { + if (isArray($value)) { + my $array = ''; + my $i=0; + foreach my $v (@{$value}) { + $array .= "set $name"."[$i]=\"".str2language("$v").'"'; + $i++; + } + return $array; + } + elsif (isHash($value)) { + die("Associative arrays are not yet supported by the Shell wrapper\n"); + } + elsif (looks_like_number($value)) { + return "set $name=$value"; + } + else { + return "set $name=\"".str2language("$value").'"'; + } + } + return "unset $name"; +} + +=pod + +=item * run($) + +Run the given code. + +=cut +sub run($) : method { + my $self = shift; + my $code = shift || confess("no code"); + my $fullcode = ""; + while (my ($name,$value) = each(%{$self->{'global'}})) { + $fullcode .= _to_batch($name,$value)."\n"; + } + $fullcode .= "\n\n\n$code"; + runCommandOrFailFromInput($fullcode, 'bash'); +} + + +1; +__END__ + +=back + +=head1 COPYRIGHT + +(c) Copyright 2013 Stephane Galland E<lt>galland@arakhne.orgE<gt>, under GPL. + +=head1 AUTHORS + +=over + +=item * + +Conceived and initially developed by Stéphane Galland E<lt>galland@arakhne.orgE<gt>. + +=back + +=head1 SEE ALSO + +L<autolatex> diff --git a/support/autolatex/pm/AutoLaTeX/Interpreter/js.pm b/support/autolatex/pm/AutoLaTeX/Interpreter/js.pm new file mode 100644 index 0000000000..8bb30eb657 --- /dev/null +++ b/support/autolatex/pm/AutoLaTeX/Interpreter/js.pm @@ -0,0 +1,145 @@ +# Copyright (C) 2013 Stephane Galland <galland@arakhne.org> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +=pod + +=head1 NAME + +AutoLaTeX::Interpreter::js - A Javascript interpreter + +=head1 DESCRIPTION + +AutoLaTeX::Interpreter::js is a Perl module, which permits to +run Javascript scripts. + +=head1 METHOD DESCRIPTIONS + +This section contains only the methods in js.pm itself. + +=over + +=cut + +package AutoLaTeX::Interpreter::js; + +@ISA = qw( AutoLaTeX::Interpreter::AbstractInterpreter ); +@EXPORT = qw(); +@EXPORT_OK = qw(); + +require 5.014; +use strict; +use utf8; +use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); +use Exporter; +use Carp; +use Scalar::Util qw(looks_like_number); + +use AutoLaTeX::Interpreter::AbstractInterpreter; +use AutoLaTeX::Core::Util; + +#------------------------------------------------------ +# +# Global vars +# +#------------------------------------------------------ + +# Version number +my $VERSION = "1.0" ; + + +=pod + +=item * new() + +Constructor + +=cut +sub new() : method { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = bless( $class->SUPER::new(), $class); + return $self; +} + + +sub _to_javascript($) { + my $value = shift; + if (defined($value)) { + if (isArray($value)) { + my $array = ''; + foreach my $v (@{$value}) { + if ($array) { + $array .= ', '; + } + $array .= &_to_javascript($v); + } + return "[ $array ]"; + } + elsif (isHash($value)) { + die("Associative arrays are not yet supported by the Javascript wrapper\n"); + } + elsif (looks_like_number($value)) { + return "$value"; + } + else { + return '"'.str2language("$value").'"'; + } + } + return 'null'; +} + +=pod + +=item * run($) + +Run the given code. + +=cut +sub run($) : method { + my $self = shift; + my $code = shift || confess("no code"); + my $fullcode = ""; + while (my ($name,$value) = each(%{$self->{'global'}})) { + $fullcode .= "var $name = "._to_javascript($value)."\n"; + } + $fullcode .= "\n\n\n$code"; + runCommandOrFailFromInput($fullcode, 'js'); +} + + +1; +__END__ + +=back + +=head1 COPYRIGHT + +(c) Copyright 2013 Stephane Galland E<lt>galland@arakhne.orgE<gt>, under GPL. + +=head1 AUTHORS + +=over + +=item * + +Conceived and initially developed by Stéphane Galland E<lt>galland@arakhne.orgE<gt>. + +=back + +=head1 SEE ALSO + +L<autolatex> diff --git a/support/autolatex/pm/AutoLaTeX/Interpreter/python.pm b/support/autolatex/pm/AutoLaTeX/Interpreter/python.pm new file mode 100644 index 0000000000..ebfec1fc34 --- /dev/null +++ b/support/autolatex/pm/AutoLaTeX/Interpreter/python.pm @@ -0,0 +1,153 @@ +# Copyright (C) 2013 Stephane Galland <galland@arakhne.org> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +=pod + +=head1 NAME + +AutoLaTeX::Interpreter::python - A Python interpreter + +=head1 DESCRIPTION + +AutoLaTeX::Interpreter::python is a Perl module, which permits to +run Python scripts. + +=head1 METHOD DESCRIPTIONS + +This section contains only the methods in python.pm itself. + +=over + +=cut + +package AutoLaTeX::Interpreter::python; + +@ISA = qw( AutoLaTeX::Interpreter::AbstractInterpreter ); +@EXPORT = qw(); +@EXPORT_OK = qw(); + +require 5.014; +use strict; +use utf8; +use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); +use Exporter; +use Carp; +use Scalar::Util qw(looks_like_number); + +use AutoLaTeX::Interpreter::AbstractInterpreter; +use AutoLaTeX::Core::Util; + +#------------------------------------------------------ +# +# Global vars +# +#------------------------------------------------------ + +# Version number +my $VERSION = "1.0" ; + + +=pod + +=item * new() + +Constructor + +=cut +sub new() : method { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = bless( $class->SUPER::new(), $class); + return $self; +} + + +sub _to_python($) { + my $value = shift; + if (defined($value)) { + if (isArray($value)) { + my $array = ''; + foreach my $v (@{$value}) { + if ($array) { + $array .= ', '; + } + $array .= &_to_python($v); + } + return "[ $array ]"; + } + elsif (isHash($value)) { + my $array = ''; + while (my ($k,$v) = each(%{$value})) { + if ($array) { + $array .= ', '; + } + $array .= '"'.str2language("$k").'": '; + $array .= &_to_python($v); + } + return "{ $array }"; + } + elsif (looks_like_number($value)) { + return "$value"; + } + else { + return '"'.str2language("$value").'"'; + } + } + return 'None'; +} + +=pod + +=item * run($) + +Run the given code. + +=cut +sub run($) : method { + my $self = shift; + my $code = shift || confess("no code"); + my $fullcode = "# coding=utf8\n"; + while (my ($name,$value) = each(%{$self->{'global'}})) { + $fullcode .= "$name = "._to_python($value)."\n"; + } + $fullcode .= "\n\n\n$code"; + runCommandOrFailFromInput($fullcode, 'python'); +} + + +1; +__END__ + +=back + +=head1 COPYRIGHT + +(c) Copyright 2013 Stephane Galland E<lt>galland@arakhne.orgE<gt>, under GPL. + +=head1 AUTHORS + +=over + +=item * + +Conceived and initially developed by Stéphane Galland E<lt>galland@arakhne.orgE<gt>. + +=back + +=head1 SEE ALSO + +L<autolatex> diff --git a/support/autolatex/pm/AutoLaTeX/Interpreter/ruby.pm b/support/autolatex/pm/AutoLaTeX/Interpreter/ruby.pm new file mode 100644 index 0000000000..e19c4e12f5 --- /dev/null +++ b/support/autolatex/pm/AutoLaTeX/Interpreter/ruby.pm @@ -0,0 +1,153 @@ +# Copyright (C) 2013 Stephane Galland <galland@arakhne.org> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +=pod + +=head1 NAME + +AutoLaTeX::Interpreter::ruby - A Ruby interpreter + +=head1 DESCRIPTION + +AutoLaTeX::Interpreter::ruby is a Perl module, which permits to +run Ruby scripts. + +=head1 METHOD DESCRIPTIONS + +This section contains only the methods in ruby.pm itself. + +=over + +=cut + +package AutoLaTeX::Interpreter::ruby; + +@ISA = qw( AutoLaTeX::Interpreter::AbstractInterpreter ); +@EXPORT = qw(); +@EXPORT_OK = qw(); + +require 5.014; +use strict; +use utf8; +use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); +use Exporter; +use Carp; +use Scalar::Util qw(looks_like_number); + +use AutoLaTeX::Interpreter::AbstractInterpreter; +use AutoLaTeX::Core::Util; + +#------------------------------------------------------ +# +# Global vars +# +#------------------------------------------------------ + +# Version number +my $VERSION = "1.0" ; + + +=pod + +=item * new() + +Constructor + +=cut +sub new() : method { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = bless( $class->SUPER::new(), $class); + return $self; +} + + +sub _to_ruby($) { + my $value = shift; + if (defined($value)) { + if (isArray($value)) { + my $array = ''; + foreach my $v (@{$value}) { + if ($array) { + $array .= ', '; + } + $array .= &_to_ruby($v); + } + return "[ $array ]"; + } + elsif (isHash($value)) { + my $array = ''; + while (my ($k,$v) = each(%{$value})) { + if ($array) { + $array .= ', '; + } + $array .= '"'.str2language("$k").'"=>'; + $array .= &_to_ruby($v); + } + return "{ $array }"; + } + elsif (looks_like_number($value)) { + return "$value"; + } + else { + return '"'.str2language("$value").'"'; + } + } + return 'nil'; +} + +=pod + +=item * run($) + +Run the given code. + +=cut +sub run($) : method { + my $self = shift; + my $code = shift || confess("no code"); + my $fullcode = ""; + while (my ($name,$value) = each(%{$self->{'global'}})) { + $fullcode .= "$name = "._to_ruby($value)."\n"; + } + $fullcode .= "\n\n\n$code"; + runCommandOrFailFromInput($fullcode, 'ruby'); +} + + +1; +__END__ + +=back + +=head1 COPYRIGHT + +(c) Copyright 2013 Stephane Galland E<lt>galland@arakhne.orgE<gt>, under GPL. + +=head1 AUTHORS + +=over + +=item * + +Conceived and initially developed by Stéphane Galland E<lt>galland@arakhne.orgE<gt>. + +=back + +=head1 SEE ALSO + +L<autolatex> diff --git a/support/autolatex/pm/AutoLaTeX/Interpreter/sh.pm b/support/autolatex/pm/AutoLaTeX/Interpreter/sh.pm new file mode 100644 index 0000000000..4ab8bb3c38 --- /dev/null +++ b/support/autolatex/pm/AutoLaTeX/Interpreter/sh.pm @@ -0,0 +1,145 @@ +# Copyright (C) 2013 Stephane Galland <galland@arakhne.org> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +=pod + +=head1 NAME + +AutoLaTeX::Interpreter::sh - A Shell interpreter + +=head1 DESCRIPTION + +AutoLaTeX::Interpreter::sh is a Perl module, which permits to +run Shell scripts. + +=head1 METHOD DESCRIPTIONS + +This section contains only the methods in sh.pm itself. + +=over + +=cut + +package AutoLaTeX::Interpreter::sh; + +@ISA = qw( AutoLaTeX::Interpreter::AbstractInterpreter ); +@EXPORT = qw(); +@EXPORT_OK = qw(); + +require 5.014; +use strict; +use utf8; +use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); +use Exporter; +use Carp; +use Scalar::Util qw(looks_like_number); + +use AutoLaTeX::Interpreter::AbstractInterpreter; +use AutoLaTeX::Core::Util; + +#------------------------------------------------------ +# +# Global vars +# +#------------------------------------------------------ + +# Version number +my $VERSION = "1.0" ; + + +=pod + +=item * new() + +Constructor + +=cut +sub new() : method { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = bless( $class->SUPER::new(), $class); + return $self; +} + + +sub _to_shell($$) { + my $name = shift; + my $value = shift; + if (defined($value)) { + if (isArray($value)) { + my $array = ''; + my $i=0; + foreach my $v (@{$value}) { + $array .= "$name"."[$i]=\"".str2language("$v").'"'; + $i++; + } + return $array; + } + elsif (isHash($value)) { + die("Associative arrays are not yet supported by the Shell wrapper\n"); + } + elsif (looks_like_number($value)) { + return "$name=$value"; + } + else { + return "$name=\"".str2language("$value").'"'; + } + } + return "unset $name"; +} + +=pod + +=item * run($) + +Run the given code. + +=cut +sub run($) : method { + my $self = shift; + my $code = shift || confess("no code"); + my $fullcode = ""; + while (my ($name,$value) = each(%{$self->{'global'}})) { + $fullcode .= _to_shell($name,$value)."\n"; + } + $fullcode .= "\n\n\n$code"; + runCommandOrFailFromInput($fullcode, 'bash'); +} + + +1; +__END__ + +=back + +=head1 COPYRIGHT + +(c) Copyright 2013 Stephane Galland E<lt>galland@arakhne.orgE<gt>, under GPL. + +=head1 AUTHORS + +=over + +=item * + +Conceived and initially developed by Stéphane Galland E<lt>galland@arakhne.orgE<gt>. + +=back + +=head1 SEE ALSO + +L<autolatex> diff --git a/support/autolatex/pm/AutoLaTeX/Interpreter/wincmd.pm b/support/autolatex/pm/AutoLaTeX/Interpreter/wincmd.pm new file mode 100644 index 0000000000..b3d01607cd --- /dev/null +++ b/support/autolatex/pm/AutoLaTeX/Interpreter/wincmd.pm @@ -0,0 +1,145 @@ +# Copyright (C) 2013 Stephane Galland <galland@arakhne.org> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +=pod + +=head1 NAME + +AutoLaTeX::Interpreter::batch - A DOS-Batch interpreter + +=head1 DESCRIPTION + +AutoLaTeX::Interpreter::batch is a Perl module, which permits to +run DOS-Batch scripts. + +=head1 METHOD DESCRIPTIONS + +This section contains only the methods in batch.pm itself. + +=over + +=cut + +package AutoLaTeX::Interpreter::batch; + +@ISA = qw( AutoLaTeX::Interpreter::AbstractInterpreter ); +@EXPORT = qw(); +@EXPORT_OK = qw(); + +require 5.014; +use strict; +use utf8; +use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); +use Exporter; +use Carp; +use Scalar::Util qw(looks_like_number); + +use AutoLaTeX::Interpreter::AbstractInterpreter; +use AutoLaTeX::Core::Util; + +#------------------------------------------------------ +# +# Global vars +# +#------------------------------------------------------ + +# Version number +my $VERSION = "1.0" ; + + +=pod + +=item * new() + +Constructor + +=cut +sub new() : method { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = bless( $class->SUPER::new(), $class); + return $self; +} + + +sub _to_batch($$) { + my $name = shift; + my $value = shift; + if (defined($value)) { + if (isArray($value)) { + my $array = ''; + my $i=0; + foreach my $v (@{$value}) { + $array .= "set $name"."[$i]=\"".str2language("$v").'"'; + $i++; + } + return $array; + } + elsif (isHash($value)) { + die("Associative arrays are not yet supported by the Shell wrapper\n"); + } + elsif (looks_like_number($value)) { + return "set $name=$value"; + } + else { + return "set $name=\"".str2language("$value").'"'; + } + } + return "unset $name"; +} + +=pod + +=item * run($) + +Run the given code. + +=cut +sub run($) : method { + my $self = shift; + my $code = shift || confess("no code"); + my $fullcode = ""; + while (my ($name,$value) = each(%{$self->{'global'}})) { + $fullcode .= _to_batch($name,$value)."\n"; + } + $fullcode .= "\n\n\n$code"; + runCommandOrFailFromInput($fullcode, 'cmd'); +} + + +1; +__END__ + +=back + +=head1 COPYRIGHT + +(c) Copyright 2013 Stephane Galland E<lt>galland@arakhne.orgE<gt>, under GPL. + +=head1 AUTHORS + +=over + +=item * + +Conceived and initially developed by Stéphane Galland E<lt>galland@arakhne.orgE<gt>. + +=back + +=head1 SEE ALSO + +L<autolatex> |