Beispiel #1
0
        public void ExecutePattern(string pattern)
        {
            if (!Generator.HasPattern(pattern))
            {
                return;
            }

            ToffeeWriterStackFrame stackFrame =
                new ToffeeWriterStackFrame(pattern, Generator.GetPatternCode(pattern));

            stackFrame.Stream = Stream;
            stackFrame.Writer = Writer;
            Stack.Push(stackFrame);
            stackFrame.Execute(this);
            Stack.Pop();
        }
Beispiel #2
0
        public void Generate(string outputDirectory)
        {
            OutputDirectory = outputDirectory;
            Indent          = true;
            IndentLevel     = 0;
            AppendNewline   = true;
            Defines         = new List <string>();
            Data            = new Dictionary <string, string>();
            Stack           = new Stack <ToffeeWriterStackFrame>();

            ToffeeWriterStackFrame stackFrame =
                new ToffeeWriterStackFrame("MAIN", Generator.GetGeneratorCode());

            Stack.Push(stackFrame);
            stackFrame.Execute(this);
            Stack.Pop();
            Log("Done!");
        }
Beispiel #3
0
        public string GetLineToWrite(string original)
        {
            string value = "";

            if (Indent)
            {
                for (int i = 0; i < IndentLevel; i++)
                {
                    value += "\t";
                }
            }
            value += original;

            // Replace '$DATA' with the values we have
            foreach (KeyValuePair <string, string> keyval in Data)
            {
                value = value.Replace("$" + keyval.Key, keyval.Value);
            }

            // Replace '$PATTERN' with the data that a pattern would return
            foreach (string pattern in Generator.GetPatterns())
            {
                if (value.Contains("$" + pattern))
                {
                    ToffeeWriterStackFrame stackFrame =
                        new ToffeeWriterStackFrame(pattern, Generator.GetPatternCode(pattern));
                    stackFrame.Stream = new MemoryStream();
                    Stack.Push(stackFrame);
                    stackFrame.Execute(this);
                    Writer.Flush();
                    Stack.Pop();

                    stackFrame.Stream.Seek(0, SeekOrigin.Begin);
                    StreamReader reader    = new StreamReader(stackFrame.Stream);
                    string       returnVal = reader.ReadToEnd();
                    reader.Dispose();
                    value = value.Replace("$" + pattern, returnVal);
                }
            }
            return(value);
        }