Name

calcn — evaluate the enclosed arithmetic expression or Perl block

ATTRIBUTES

Attribute Pos. Req. Default Description
interpolate     0 interpolate input?
reparse     1 interpolate output?

DESCRIPTION

The tag evaluates the enclosed arithmetic expression or a Perl block. The last expression evaluated (return value) is returned back to the client page.

The tag is only a convenience and otherwise identical to [calc], except that it does not interpolate tag body by default.

BEHAVIOR

This tag does not appear to be affected by, or affect, the rest of Interchange.

EXAMPLES

Example: Simple non-interpolating block

The example will, since [calcn] is used, directly return the quoted content unmodified, instead of evaluating to "TEST":

[cgi name=test set=TEST hide=1]

[calcn reparse=0] "[cgi test]" [/calcn]

NOTES

See [calc] for the complete documentation.

AVAILABILITY

calcn is available in Interchange versions:

4.6.0-5.7.0 (git-head)

SOURCE

Interchange 5.7.0:

Source: code/SystemTag/calcn.coretag
Lines: 12


# Copyright 2002-2007 Interchange Development Group and others
# 
# 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.  See the LICENSE file for details.
# 
# $Id: calcn.coretag,v 1.4 2007-03-30 23:40:49 pajamian Exp $

UserTag calcn               hasEndTag
UserTag calcn               Version      $Revision: 1.4 $
UserTag calcn               MapRoutine   Vend::Interpolate::tag_calc

Source: lib/Vend/Interpolate.pm
Lines: 2816

sub tag_calc {
my($body) = @_;
my $result;
if($Vend::NoInterpolate) {
  logGlobal({ level => 'alert' },
        "Attempt to interpolate perl/ITL from RPC, no permissions."
        );
}

$Items = $Vend::Items;

if($MVSAFE::Safe) {
  $result = eval($body);
}
else {
  init_calc() if ! $Vend::Calc_initialized;
  $result = $ready_safe->reval($body);
}

if ($@) {
  my $msg = $@;
  $Vend::Session->{try}{$Vend::Try} = $msg if $Vend::Try;
  logGlobal({ level => 'debug' }, "Safe: %s\n%s\n" , $msg, $body);
  logError("Safe: %s\n%s\n" , $msg, $body);
  return $MVSAFE::Safe ? '' : 0;
}
return $result;
}

AUTHORS

Interchange Development Group

SEE ALSO

perl(7ic), mvasp(7ic), calc(7ic)

DocBook! Interchange!