/// <summary> /// Registers a new completion scriptblock /// </summary> /// <param name="Name">The name of the completion scriptblock</param> /// <param name="ScriptBlock">The scriptblock that will provide completion data</param> /// <param name="Mode">What completion mode to use</param> /// <param name="CacheDuration">How long the gathered pieces of data remain valid.</param> /// <param name="Global">Whether to globalize scriptblocks prior to invocation.</param> public static void RegisterCompletion(string Name, ScriptBlock ScriptBlock, TeppScriptMode Mode, TimeSpanParameter CacheDuration, bool Global) { ScriptContainer script = new ScriptContainer(); script.Name = Name; script.LastDuration = new TimeSpan(-1); script.LastResultsValidity = CacheDuration; script.Global = Global; TeppScriptMode effectiveMode = Mode; if (effectiveMode == TeppScriptMode.Auto) { effectiveMode = TeppScriptMode.Full; if (((ScriptBlock.Ast as ScriptBlockAst) != null) && ((ScriptBlockAst)ScriptBlock.Ast).ParamBlock == null) { effectiveMode = TeppScriptMode.Simple; } } if (effectiveMode == TeppScriptMode.Full) { script.ScriptBlock = ScriptBlock; } else { script.ScriptBlock = ScriptBlock.Create(_SimpleCompletionScript.Replace("<name>", Name)); script.InnerScriptBlock = ScriptBlock; } Scripts[Name] = script; }
/// <summary> /// Registers a new completion scriptblock /// </summary> /// <param name="Name">The name of the completion scriptblock</param> /// <param name="ScriptBlock">The scriptblock that will provide completion data</param> /// <param name="Mode">What completion mode to use</param> /// <param name="CacheDuration">How long the gathered pieces of data remain valid.</param> /// <param name="Global">Whether to globalize scriptblocks prior to invocation.</param> /// <param name="PassThru">Parameter is ignored. Needed to have a second signature that returns the script container.</param> public static ScriptContainer RegisterCompletion(string Name, ScriptBlock ScriptBlock, TeppScriptMode Mode, TimeSpanParameter CacheDuration, bool Global, bool PassThru) { RegisterCompletion(Name, ScriptBlock, Mode, CacheDuration, Global); return(Scripts[Name]); }