コード例 #1
0
ファイル: XMLCtor.cs プロジェクト: lichuan80/EcmaScript.NET
 private void WriteSetting(IScriptable target)
 {
     for (int i = 1; i <= MAX_INSTANCE_ID; ++i)
     {
         int    id    = base.MaxInstanceId + i;
         string name  = GetInstanceIdName(id);
         object value = GetInstanceIdValue(id);
         ScriptableObject.PutProperty(target, name, value);
     }
 }
コード例 #2
0
        internal static void Init(IScriptable scope, bool zealed)
        {
            BuiltinError obj = new BuiltinError();

            ScriptableObject.PutProperty(obj, "name", "Error");
            ScriptableObject.PutProperty(obj, "message", "");
            ScriptableObject.PutProperty(obj, "fileName", "");
            ScriptableObject.PutProperty(obj, "lineNumber", 0);

            // TODO: Implement as non-ecma feature
            ScriptableObject.PutProperty(obj, "stack", "NOT IMPLEMENTED");

            obj.ExportAsJSClass(MAX_PROTOTYPE_ID, scope, zealed
                                , ScriptableObject.DONTENUM | ScriptableObject.READONLY | ScriptableObject.PERMANENT);
        }
コード例 #3
0
        protected internal string Render(object value, string templateScript)
        {
            try
            {
                string        json   = value.ToJson();
                StringBuilder script = CreateBaseScript();
                script.Append("dust.loadSource(compiledSource);");
                script.Append(@"dust.render(templateName, JSON.parse(jsonData), function(err, result){
    error = err;
    output = result;
})");

                EcmaScript.NET.Context ctx   = EcmaScript.NET.Context.Enter();
                ScriptableObject       scope = ctx.InitStandardObjects();
                SetParameters(scope);
                ScriptableObject.PutProperty(scope, "jsonData", json);
                ScriptableObject.PutProperty(scope, "compiledSource", Regex.Unescape(templateScript));
                ScriptableObject.PutProperty(scope, "error", null);
                ScriptableObject.PutProperty(scope, "output", "");

                ctx.EvaluateString(scope, script.ToString(), "render", 0, null);

                object error = ScriptableObject.GetProperty(scope, "error");
                if (error != null)
                {
                    throw new InvalidOperationException("An error occurred during dust.render: " + error.ToString());
                }

                string result = ((string)ScriptableObject.GetProperty(scope, "output"));
                return(Regex.Unescape(result));
            }
            catch (Exception ex)
            {
                string sig = "An error occurred rendering template ({0}) : {1}";
                string msg = ex.Message;
                this.Exception = Args.Exception <DustException>(sig, Name, msg);
                return(string.Format(sig, Name, msg));
            }
        }
コード例 #4
0
        private void SetCompiledScript()
        {
            try
            {
                StringBuilder script = CreateBaseScript();
                script.Append("compiledTemplate = dust.compile(templateSource, templateName);");

                EcmaScript.NET.Context ctx = EcmaScript.NET.Context.Enter();

                ScriptableObject scope = ctx.InitStandardObjects();
                SetParameters(scope);
                ScriptableObject.PutProperty(scope, "compiledTemplate", null);

                ctx.EvaluateString(scope, script.ToString(), "Compile", 0, null);
                CompiledScript = (string)ScriptableObject.GetProperty(scope, "compiledTemplate");

                SetCompiledTemplate();
            }
            catch (Exception ex)
            {
                CompiledScript = string.Format("alert('An error occurred compiling {0}: {1}');", Name, ex.Message);
                Exception      = Args.Exception <DustException>("An error occurred compiling script ({0}) :{1}", ex, Name, ex.Message);
            }
        }
コード例 #5
0
        internal static BuiltinError make(Context cx, IScriptable scope, IdFunctionObject ctorObj, object [] args)
        {
            IScriptable proto = (IScriptable)(ctorObj.Get("prototype", ctorObj));

            BuiltinError obj = new BuiltinError();

            obj.SetPrototype(proto);
            obj.ParentScope = scope;

            if (args.Length >= 1)
            {
                ScriptableObject.PutProperty(obj, "message", ScriptConvert.ToString(args [0]));
                if (args.Length >= 2)
                {
                    ScriptableObject.PutProperty(obj, "fileName", args [1]);
                    if (args.Length >= 3)
                    {
                        int line = ScriptConvert.ToInt32(args [2]);
                        ScriptableObject.PutProperty(obj, "lineNumber", (object)line);
                    }
                }
            }
            return(obj);
        }
コード例 #6
0
 private void SetParameters(IScriptable scope)
 {
     ScriptableObject.PutProperty(scope, "templateSource", Source);
     ScriptableObject.PutProperty(scope, "templateName", Name);
 }
コード例 #7
0
ファイル: JsContext.cs プロジェクト: dekkerb115/Bam.Net
 public void SetCliValue(string varName, object instance)
 {
     ScriptableObject.PutProperty(_scope, varName, instance);
 }