public SetParameter ( string name, DateTime value ) : |
||
name | string | Local name of the DateTime value during the execution of the script |
value | DateTime | Available DateTime value |
return |
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); }
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); })); } }
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); }
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); }
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; }