Example #1
0
        public object LoadFrom(StringTextReader input)
        {
            var tokenizer = new Redwood.Framework.RwHtml.Parsing.RwHtmlTokenizer();
            var tokenParser = new Redwood.Framework.RwHtml.Parsing.RwHtmlTokenToMarkupParser();
            var namespaceVisitor = new Redwood.Framework.RwHtml.Markup.MarkupStreamNamespaceVisitor(defaultNamespaces);
            var htmlElementVisitor = new Redwood.Framework.RwHtml.Markup.MarkupStreamHtmlElementVisitor();
            var mapperVisitor = new Redwood.Framework.RwHtml.Markup.MarkupStreamMapperVisitor();
            var activatorVisitor = new Redwood.Framework.RwHtml.Markup.MarkupStreamActivatorVisitor();

            // tokenize input
            var tokenizerOutput = tokenizer.Parse(input);

            // read markup from tokens
            var tokenParserOutput = tokenParser.Read(tokenizerOutput);

            // resolve namespaces
            var namespaceVisitorOutput = namespaceVisitor.Process(tokenParserOutput);

            // resolve "raw" HTML elements
            var htmlElementVisitorOutput = htmlElementVisitor.Process(namespaceVisitorOutput);

            // map to CLR types and properties
            var mapperVisitorOutput = mapperVisitor.Process(htmlElementVisitorOutput);

            // activate object
            var activatorVisitorOutput = activatorVisitor.Process(mapperVisitorOutput);

            foreach (var item in activatorVisitorOutput)
            {
                //Debug.WriteLine(item.ToDebugString());
            }

            return activatorVisitor.Result;
        }
Example #2
0
 public object LoadFromString(string rwhtml)
 {
     var input = new StringTextReader(rwhtml);
     return LoadFrom(input);
 }