Exemple #1
0
        public override void SetOutput(IScriptOutput output)
        {
            var console = new FirebugConsole(InternalEngine);

            console.Output = new ScriptOutputProxy(output);
            InternalEngine.SetGlobalValue("console", console);
        }
Exemple #2
0
        public static T Create <T>(IScriptOutput output)
            where T : Script, new()
        {
            T script = new T();

            script._output = output;
            return(script);
        }
Exemple #3
0
 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;
 }
Exemple #5
0
        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;
        }
Exemple #6
0
 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);
 }
Exemple #7
0
        /// <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);
        }
Exemple #10
0
        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
        }
Exemple #11
0
        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);
 }
Exemple #13
0
 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));
 }
 public ScriptOutputProxy(IScriptOutput output)
 {
     _output = output;
 }