コード例 #1
0
ファイル: BGlobal.cs プロジェクト: bittercoder/Machete
        internal static IDynamic Eval(IEnvironment environment, IArgs args)
        {
            var x = args[0];

            if (x.TypeCode != LanguageTypeCode.String)
            {
                return(x);
            }
            var compiler = new CompilerService(environment);
            var context  = environment.Context;
            var e        = compiler.CompileEvalCode(x.ConvertToString().BaseValue, context.Strict);

            using (var c = environment.EnterContext())
            {
                c.ThisBinding        = context.ThisBinding;
                c.LexicalEnviroment  = context.LexicalEnviroment;
                c.VariableEnviroment = context.VariableEnviroment;
                if (e.Strict)
                {
                    var s = context.LexicalEnviroment.NewDeclarativeEnvironment();
                    c.LexicalEnviroment  = s;
                    c.VariableEnviroment = s;
                }
                return(e.Code(environment, environment.EmptyArgs));
            }
        }
コード例 #2
0
ファイル: BGlobal.cs プロジェクト: ChaosPandion/Machete
 internal static IDynamic Eval(IEnvironment environment, IArgs args)
 {
     var x = args[0];
     if (x.TypeCode != LanguageTypeCode.String)
     {
         return x;
     }
     var compiler = new CompilerService(environment);
     var context = environment.Context;
     var e = compiler.CompileEvalCode(x.ConvertToString().BaseValue, context.Strict);
     using (var c = environment.EnterContext())
     {
         c.ThisBinding = context.ThisBinding;
         c.LexicalEnviroment = context.LexicalEnviroment;
         c.VariableEnviroment = context.VariableEnviroment;
         if (e.Strict)
         {
             var s = context.LexicalEnviroment.NewDeclarativeEnvironment();
             c.LexicalEnviroment = s;
             c.VariableEnviroment = s;
         }
         return e.Code(environment, environment.EmptyArgs);
     }
 }