public override void SetOutput(IScriptOutput output) { var console = new FirebugConsole(InternalEngine); console.Output = new ScriptOutputProxy(output); InternalEngine.SetGlobalValue("console", console); }
public static T Create <T>(IScriptOutput output) where T : Script, new() { T script = new T(); script._output = output; return(script); }
public static void Write(this IScriptOutput scriptOutput, string text) { if (text == null) { throw new ArgumentNullException(nameof(text)); } scriptOutput.Write(text, 0, text.Length); }
public TemplateRewriterContext(IScriptOutput output, TemplateRewriterOptions options = default(TemplateRewriterOptions)) { _isWhileLoop = new FastStack <bool>(4); Options = options; if (options.Mode != ScriptMode.Default) { throw new ArgumentException($"The rendering mode `{options.Mode}` is not supported. Only `ScriptMode.Default` is currently supported"); } _output = output; }
public TemplateRewriterContext(IScriptOutput output, TemplateRewriterOptions options = default(TemplateRewriterOptions)) { _isWhileLoop = new FastStack <bool>(4); Options = options; if (options.Mode != ScriptMode.Default) { throw new ArgumentException(string.Format(RS.UnsupportedRenderMode, options.Mode)); } _output = output; }
public static void Write(this IScriptOutput scriptOutput, ScriptStringSlice text) { if (text.FullText == null) { throw new ArgumentNullException(nameof(text)); } if (text.Length == 0) { return; } scriptOutput.Write(text.FullText, text.Index, text.Length); }
/// <summary> /// Pops a previous output. /// </summary> public IScriptOutput PopOutput() { if (_outputs.Count == 1) { throw new InvalidOperationException(RS.PopOutputError); } var previous = _outputs.Pop(); _output = _outputs.Peek(); return(previous); }
/// <summary> /// Initializes a new instance of the <see cref="TemplateContext" /> class. /// </summary> /// <param name="builtin">The builtin object used to expose builtin functions, default is <see cref="GetDefaultBuiltinObject"/>.</param> public TemplateContext(ScriptObject builtin) { BuiltinObject = builtin ?? GetDefaultBuiltinObject(); EnableOutput = true; EnableBreakAndContinueAsReturnOutsideLoop = false; LoopLimit = 1000; RecursiveLimit = 100; MemberRenamer = StandardMemberRenamer.Default; RegexTimeOut = TimeSpan.FromSeconds(10); TemplateLoaderParserOptions = new ParserOptions(); TemplateLoaderLexerOptions = LexerOptions.Default; NewLine = Environment.NewLine; _outputs = new FastStack <IScriptOutput>(4); _output = new StringBuilderOutput(); _outputs.Push(_output); _globalStores = new FastStack <IScriptObject>(4); _localStores = new FastStack <ScriptObject>(4); _loopStores = new FastStack <ScriptObject>(4); _availableStores = new FastStack <ScriptObject>(4); _cultures = new FastStack <CultureInfo>(4); _caseValues = new FastStack <object>(4); _localTagsStack = new FastStack <Dictionary <object, object> >(1); _loopTagsStack = new FastStack <Dictionary <object, object> >(1); _availableTags = new FastStack <Dictionary <object, object> >(4); _sourceFiles = new FastStack <string>(4); _memberAccessors = new Dictionary <Type, IObjectAccessor>(); _listAccessors = new Dictionary <Type, IListAccessor>(); _loops = new FastStack <ScriptLoopStatementBase>(4); BlockDelegates = new FastStack <ScriptBlockStatement>(4); _availablePipeArguments = new FastStack <ScriptPipeArguments>(4); _pipeArguments = new FastStack <ScriptPipeArguments>(4); _isFunctionCallDisabled = false; CachedTemplates = new Dictionary <string, Template>(); Tags = new Dictionary <object, object>(); PushPipeArguments(); // Ensure that builtin is registered first PushGlobal(BuiltinObject); }
/// <summary> /// Pops a previous output. /// </summary> public IScriptOutput PopOutput() { if (_outputs.Count == 1) { throw new InvalidOperationException("Unexpected PopOutput for top level writer"); } var previous = _outputs.Pop(); _output = _outputs.Peek(); return(previous); }
public ScriptPrinter(IScriptOutput output, ScriptPrinterOptions options = default(ScriptPrinterOptions)) { _isWhileLoop = new FastStack <bool>(4); Options = options; if (options.Mode != ScriptMode.Default && options.Mode != ScriptMode.ScriptOnly) { throw new ArgumentException($"The rendering mode `{options.Mode}` is not supported. Only `ScriptMode.Default` or `ScriptMode.ScriptOnly` are currently supported"); } _isScriptOnly = options.Mode == ScriptMode.ScriptOnly; _isInCode = _isScriptOnly || (options.Mode == ScriptMode.FrontMatterOnly || options.Mode == ScriptMode.FrontMatterAndContent); _output = output; _hasEndOfStatement = true; // We start as if we were on a new line }
protected override bool Loop(TemplateContext context, int index, int localIndex, bool isLast) { IScriptOutput output = context.Output; int columnIndex = localIndex % _columnsCount; context.SetValue(ScriptVariable.TableRowCol, columnIndex + 1); if (columnIndex == 0 && localIndex > 0) { output.Write("</tr>").WriteLine(); output.Write("<tr class=\"row").Write((localIndex / _columnsCount) + 1).Write("\">"); } output.Write("<td class=\"col").Write(columnIndex + 1).Write("\">"); bool result = base.Loop(context, index, localIndex, isLast); output.Write("</td>"); return(result); }
/// <summary> /// Pushes a new output used for rendering the current template while keeping the previous output. /// </summary> public void PushOutput(IScriptOutput output) { _output = output ?? throw new ArgumentNullException(nameof(output)); _outputs.Push(_output); }
public abstract void SetOutput(IScriptOutput output);
/// <summary> /// Initializes a new instance of the <see cref="TemplateContext" /> class. /// </summary> /// <param name="builtin">The builtin object used to expose builtin functions, default is <see cref="GetDefaultBuiltinObject"/>.</param> public TemplateContext(ScriptObject builtin) { BuiltinObject = builtin ?? GetDefaultBuiltinObject(); EnableOutput = true; EnableBreakAndContinueAsReturnOutsideLoop = false; EnableRelaxedTargetAccess = false; EnableRelaxedMemberAccess = true; EnableRelaxedFunctionAccess = false; EnableRelaxedIndexerAccess = true; LoopLimit = 1000; RecursiveLimit = 100; LimitToString = 0; MemberRenamer = StandardMemberRenamer.Default; RegexTimeOut = TimeSpan.FromSeconds(10); TemplateLoaderParserOptions = new ParserOptions(); TemplateLoaderLexerOptions = LexerOptions.Default; NewLine = Environment.NewLine; Language = ScriptLang.Default; _outputs = new FastStack <IScriptOutput>(4); _output = new StringBuilderOutput(); _outputs.Push(_output); _globalStores = new FastStack <IScriptObject>(4); _availableLocalContexts = new FastStack <LocalContext>(4); _localContexts = new FastStack <LocalContext>(4); _availableStores = new FastStack <ScriptObject>(4); _cultures = new FastStack <CultureInfo>(4); _caseValues = new FastStack <object>(4); _availableTags = new FastStack <Dictionary <object, object> >(4); _sourceFiles = new FastStack <string>(4); _memberAccessors = new Dictionary <Type, IObjectAccessor>(); _listAccessors = new Dictionary <Type, IListAccessor>(); _loops = new FastStack <ScriptLoopStatementBase>(4); BlockDelegates = new FastStack <ScriptBlockStatement>(4); _availablePipeArguments = new FastStack <ScriptPipeArguments>(4); _pipeArguments = new FastStack <ScriptPipeArguments>(4); _availableScriptExpressionLists = new FastStack <List <ScriptExpression> >(4); _availableReflectionArguments = new object[ScriptFunctionCall.MaximumParameterCount + 1][]; for (int i = 0; i < _availableReflectionArguments.Length; i++) { _availableReflectionArguments[i] = new object[i]; } _isFunctionCallDisabled = false; CachedTemplates = new Dictionary <string, Template>(); Tags = new Dictionary <object, object>(); // Ensure that builtin is registered first PushGlobal(BuiltinObject); }
public void SetOutput(IScriptOutput output) { throw new NotImplementedException(); }
public ScriptOutputProxy(IScriptOutput output) { _output = output; }
public override void SetOutput(IScriptOutput output) { _engine.SetValue("console", new ScriptOutputProxy(output)); }