Пример #1
0
        public static string Parse(string template, List<Type> extensions)
        {
            if (string.IsNullOrWhiteSpace(template)) return null;

            var output = string.Empty;
            var stream = new Stream(template);
            var shadowClass = new ShadowClass();
            var contexts = new Contexts(shadowClass);

            shadowClass.Clear();

            while (stream.Advance())
            {
                if (ParseCodeBlock(stream, shadowClass)) continue;
                if (ParseLambda(stream, shadowClass, contexts, ref output)) continue;
                output += stream.Current;
            }

            shadowClass.Parse();

            extensions.Clear();
            extensions.Add(Compiler.Compile(shadowClass));
            extensions.AddRange(FindExtensionClasses(shadowClass));

            return output;
        }