SetParameter() public method

Defines an external DateTime value to be available inside the script
public SetParameter ( string name, DateTime value ) : JintEngine
name string Local name of the DateTime value during the execution of the script
value DateTime Available DateTime value
return JintEngine
Beispiel #1
0
        public static void Main(String[] args)
        {
            Logger logger = new ConsoleLogger();
            Logging.SetLogger(logger);

            string script = System.IO.File.ReadAllText(args[0]);
            JintEngine engine = new JintEngine();
            engine.SetParameter("language", "cs");
            engine.SetParameter("util", new Util(engine));
            engine.Run(script);
        }
Beispiel #2
0
        public static void Main(String[] args)
        {
            Logger logger = new ConsoleLogger();
            Logging.SetLogger(logger);

            string script = System.IO.File.ReadAllText(args[0]);
            JintEngine engine = new JintEngine();
            engine.SetParameter("language", "cs");
            #if TEST_WINPHONE
            engine.SetParameter("platform", "winphone");
            #else
            engine.SetParameter("platform", "windows");
            #endif
            engine.SetParameter("util", new Util(engine));
            engine.Run(script);
        }
		protected override void CustomizeEngine(JintEngine jintEngine)
		{
			jintEngine.SetParameter("documentId", docId);
			jintEngine.SetFunction("replicateTo", new Action<string,JsObject>(ReplicateToFunction));
			foreach (var sqlReplicationTable in config.SqlReplicationTables)
			{
				var current = sqlReplicationTable;
				jintEngine.SetFunction("replicateTo" + sqlReplicationTable.TableName, (Action<JsObject>)(cols =>
				{
					var tableName = current.TableName;
					ReplicateToFunction(tableName, cols);
				}));
			}
		}
Beispiel #4
0
        public override void Load(string code = "")
        {

            try {
            Engine = new JintEngine(Options.Ecmascript5)
                .AllowClr(true);

            Engine.SetParameter("Commands", chatCommands)
                .SetParameter("DataStore", DataStore.GetInstance())
                .SetParameter("Find", Find.GetInstance())
                .SetParameter("GlobalData", GlobalData)
                .SetParameter("Plugin", this)
                .SetParameter("Server", Server.GetInstance())
                .SetParameter("ServerConsoleCommands", consoleCommands)
                .SetParameter("Util", Util.GetInstance())
                .SetParameter("Web", Web)
                .SetParameter("World", World.GetInstance())
                .SetFunction("importClass", new importit(importClass));
                Program = JintEngine.Compile(code, false);

                Globals = (from statement in Program.Statements
                                       where statement.GetType() == typeof(FunctionDeclarationStatement)
                                       select ((FunctionDeclarationStatement)statement).Name).ToList<string>();

                Engine.Run(Program);

                object author = GetGlobalObject("Author");
                object about = GetGlobalObject("About");
                object version = GetGlobalObject("Version");
                Author = author == null ? "" : author.ToString();
                About = about == null ? "" : about.ToString();
                Version = version == null ? "" : version.ToString();

                State = PluginState.Loaded;
            } catch (Exception ex) {
                Logger.LogException(ex);
                State = PluginState.FailedToLoad;
                PluginLoader.GetInstance().CurrentlyLoadingPlugins.Remove(Name);
            }

            PluginLoader.GetInstance().OnPluginLoaded(this);
        }
Beispiel #5
0
		private void OutputLog(JintEngine engine)
		{
			var arr = engine.GetParameter("debug_outputs") as JsArray;
			if (arr == null)
				return;
			for (int i = 0; i < arr.Length; i++)
			{
				var o = arr.get(i);
				if (o == null)
					continue;
				Debug.Add(o.ToString());
			}
			engine.SetParameter("debug_outputs", engine.Global.ArrayClass.New());
		}
        private object ProcessValue(string val)
        {
            var engine = new JintEngine();
            engine.SetParameter("$root", _data.Last());
            engine.SetParameter("$data", _data.Peek());
            engine.SetParameter("ko", Ko.Instance);
            if (_data.Count > 1)
                engine.SetParameter("$parent", _data.ElementAt(1));

            // TODO: Support jQuery and Knockout libraries.
            //engine.Run(Properties.Resources.jquery);
            //engine.Run(Properties.Resources.knockout);

            // Simplify $root vars by ignoring $parent(s) leading up to it.
            val = RootPat.Replace(val, m => "$root.");

            #region Handle $parent chains and $parents[i] pseudovariables.
            // Simplify $parent(s) chains into a single $parents[generations] variable.
            val = ParentPat.Replace(val, m => string.Format("$parents{0}.",
                                                                m.Groups["Index"].Captures.Cast<Capture>()
                                                                    .Sum(c => int.Parse(c.Value) - 1) +
                                                                m.Groups[1].Captures.Count));
            // Assign the appropriate data value from the stack.
            foreach (var m in from Match m in ParentsPat.Matches(val) select m.Groups[1].Value)
                engine.SetParameter("$parents" + m, _data.ElementAt(_data.Count - int.Parse(m)));
            #endregion

            // 1. Find non-js keyword members and prefix them with "$data."
            // 2. Capitalize the first letter after a dot or space to conform to C# naming conventions.
            val = Word.Replace(val, m => (ReservedKeywords.IsMatch(m.Groups["Word"].Value) || m.Groups[1].Value == "$")
                                         	? m.Value
                                         	: string.Concat(m.Groups[1].Value,
                                         	                DotOrDollar.IsMatch(m.Groups[1].Value) ? string.Empty : "$data.",
                                         	                m.Groups["c1"].Value.ToUpper(),
                                         	                m.Groups[2].Value));
            return engine.Run(val);
        }
Beispiel #7
0
			protected override void CustomizeEngine(JintEngine jintEngine)
			{
				jintEngine.SetParameter("documentId", docId);
				jintEngine.SetFunction("sqlReplicate", (Action<string, string, JsObject>)((table, pkName, cols) =>
				{
					var itemToReplicates = dictionary.GetOrAdd(table);
					itemToReplicates.Add(new ItemToReplicate
					{
						PkName = pkName,
						DocumentId = docId,
						Columns = ToRavenJObject(cols)
					});
				}));
			}
        /// <summary>
        /// 获取待运行活动
        /// </summary>
        /// <param name="processDefID"></param>
        /// <param name="srcActInst"></param>
        /// <returns></returns>
        public IList<Activity> GetActivateActivities(string processDefID, ActivityInst srcActInst)
        {
            IList<Definition.Transition> transitions = Persistence.GetOutTransitions(processDefID, srcActInst.ActivityDefID);
            Activity srcActDef = Persistence.GetActivity(processDefID, srcActInst.ActivityDefID);

            IList<Activity> activateActivities = new List<Activity>();
            Activity defaultActivity = null;
            foreach (var transition in transitions)
            {
                //IDictionary<string, object> parameters = new Dictionary<string, object>();
                //parameters.SafeAdd("money", 1000);
                //parameters.SafeAdd("number", 4);
                //Context.Parameters = parameters;
                ////engine.SetParameter(":money", 1000);
                //transition.Expression = "return @money-100>0&&@number<10;";
                //new Regex(@"[^@@](?<p>@\w+)");对@@value,不表示变量;Regex(@"@\w*")以@开头的表示变量。
                string expression = transition.Expression;
                try
                {
                    bool expressionResult = string.IsNullOrWhiteSpace(expression);
                    if (!expressionResult)
                    {
                        var prefix = WFUtil.ExpressionVariablePrefix;
                        Regex regex = new Regex(string.Format(@"{0}\w*", prefix));
                        MatchCollection matches = regex.Matches(expression.Replace(string.Format("{0}{0}", prefix), "###"));
                        JintEngine engine = new JintEngine();

                        if (matches != null && Context.Parameters != null)
                        {
                            foreach (Match match in matches)
                            {
                                string variable = match.Value.TrimStart(prefix);
                                if (Context.Parameters.ContainsKey(variable))
                                    engine.SetParameter(variable, Context.Parameters[variable]);
                            }
                        }
                        expression = expression.Replace(string.Format("{0}{0}", prefix), "###").Replace(prefix.ToString(), "").Replace("###", prefix.ToString());
                        expressionResult = (bool)engine.Run(expression);
                    }

                    Activity destActivity = Persistence.GetActivity(processDefID, transition.DestActivity);
                    //记住默认活动
                    if (transition.IsDefault) defaultActivity = destActivity;

                    if (expressionResult && CanActivateActiviy(srcActInst.ProcessInstID, destActivity))
                    {
                        activateActivities.SafeAdd(destActivity);
                    }
                }
                catch (Exception ex)
                {
                    WFUtil.HandleException(new WFException(typeof(ProcessRuntime).FullName, string.Format("计算表达式{0}出错", expression), ex));
                    throw;
                }

            }

            if (activateActivities.Count == 0 && defaultActivity != null && CanActivateActiviy(srcActInst.ProcessInstID, defaultActivity))
            {
                activateActivities.Add(defaultActivity);
            }

            return activateActivities;
        }