logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

JE::Code - ECMAScript parser and code executor for JE

Exports

       "add_line_number" can optionally be exported.

Functions

       JE::Code::add_line_number($message, $code_object, $position)
           WARNING: The parameter list is still subject to change.

           This routine append a string such as 'at file, line 76.' to the error message passed to it, unless it
           ends with a line break already.

           $code_object is a code object as returned by JE's or JE::Parser's "parse" method. If it  is  omitted,
           the  current  value  of  $JE::Code::code  will  be  used  (this  is set while JS code is running). If
           $JE::Code::code turns out to be undefined, then $message will be returned unchanged (thisissubjecttochange; later I might make it use Carp to add a Perl file and line number).

           $position is the position within the source code, which will be used to determine the line number. If
           this is omitted, $JE::Code::pos will be used.

Methods

       $code->execute($this, $scope, $code_type);
           The "execute" method of a parse tree executes it. All the arguments are optional.

           The  first argument will be the 'this' value of the execution context. The global object will be used
           if it is omitted or undef.

           The second argument is the scope chain.  A scope chain containing just the global object will be used
           if it is omitted or undef.

           The third arg indicates the type of code. 0 or undef indicates global code.  1 means eval code  (code
           called  by  JavaScript's "eval" function, which has nothing to do with JE's "eval" method, which runs
           global code).  Variables created with "var"  and  function  declarations  inside  eval  code  can  be
           deleted,  whereas such variables in global or function code cannot. A value of 2 means function code,
           which requires an explicit "return" statement for a value to be returned.

           If an error occurs, "undef" will be returned and $@ will contain  the  error  message.  If  no  error
           occurs, $@ will be a null string.

       $code->set_global( $thing )
           You  can  transfer  a  JE::Code object to another JavaScript environment by setting the global object
           this way. You can also set it to "undef", if, for instance, you want to serialise the  compiled  code
           without  serialising  the entire JS environment. If you do that, you'll need to set the global object
           again before you can use the code object.

Name

       JE::Code - ECMAScript parser and code executor for JE

See Also

       JE

perl v5.36.0                                       2023-08-25                                      JE::Code(3pm)

Synopsis

         use JE;

         $j = new JE;

         $code = $j->compile('1+1'); # returns a JE::Code object

         $code->execute;

See Also