private static void RunPattern(IYateDataContext dataContext, object model, CQ domObjects, IPattern pattern)
        {
            //try/finally leaves the data context in the same state as when we started with it hopefully.
            try
            {
                dataContext.PushValue(model);

                foreach (var domObject in domObjects)
                {
                    var htmlFragment = CQ.CreateFragment(pattern.HtmlFragment);

                    foreach (var atRule in pattern.AtRules)
                    {
                        atRule.Render(htmlFragment, dataContext);
                    }

                    foreach (var ruleSet in pattern.RuleSets)
                    {
                        ruleSet.Render(htmlFragment, dataContext);
                    }

                    //append those mama jammas
                    foreach(var frag in htmlFragment)
                    {
                        domObject.AppendChild(frag);
                    }
                }
            }
            finally
            {
                dataContext.PopValue();
            }
        }
Example #2
0
 public string Render(IYateDataContext dataContext)
 {
     using (var stringWriter = new StringWriter())
     {
         WriteToTextWriter(stringWriter, dataContext);
         return stringWriter.ToString();
     }
 }
Example #3
0
        public object GetValue(IYateDataContext dataContext)
        {
            if ((bool)_conditioinValue.GetValue(dataContext))
            {
                return _trueConditionValue.GetValue(dataContext);
            }

            return _falseConditionValue.GetValue(dataContext);
        }
Example #4
0
 public virtual void Render(CQ html, IYateDataContext dataContext)
 {
     foreach (var declaration in Properties)
     {
         foreach (var selector in Selectors)
         {
             declaration.Render(html, selector, dataContext);
         }
     }
 }
Example #5
0
        public void Render(CQ html, IYateDataContext dataContext)
        {
            foreach (var atRule in AtRules)
            {
                atRule.Render(html, dataContext);
            }

            foreach (var ruleSet in RuleSets)
            {
                ruleSet.Render(html, dataContext);
            }
        }
Example #6
0
        public void Render(CQ html, IYateDataContext dataContext)
        {
            var selector = _selector.GetValue(dataContext).ToString();
            var patterns = html.Select(selector);

            var patternHtml = CQ.CreateFragment(patterns.First());

            dataContext.PatternContainer.Add(
                _name.GetValue(dataContext).ToString(),
                new YatePattern(patternHtml, AtRules, RuleSets));

            html.Select(selector).Remove();
        }
Example #7
0
        public void Render(CQ html, IYateDataContext dataContext)
        {
            if ((bool)_conditionValue.GetValue(dataContext))
            {
                foreach (var atRule in AtRules)
                {
                    atRule.Render(html, dataContext);
                }

                foreach (var ruleSet in RuleSets)
                {
                    ruleSet.Render(html, dataContext);
                }
            }
        }
Example #8
0
        public void Render(CQ dom, string selector, IYateDataContext dataContext)
        {
            string format;

            if (_format != null)
            {
                format = _format.GetValue(dataContext).ToString();
            }
            else
            {
                format = dom.Select(selector).Text();
            }

            dom.Select(selector).Text(
                string.Format(format, _text.GetValue(dataContext)));
        }
Example #9
0
        public void WriteToTextWriter(TextWriter textWriter, IYateDataContext dataContext)
        {
            //this is done so i can run the parsed view with multiple contexts back to back
            //without the first one corrupting the second one.
            var html = CQ.Create(Html);

            foreach (var atRule in AtRules)
            {
                atRule.Render(html, dataContext);
            }

            foreach (var ruleSet in RuleSets)
            {
                ruleSet.Render(html, dataContext);
            }

            html.Render(OutputFormatters.Default, textWriter);
        }
        public void Render(CQ html, string selector, IYateDataContext dataContext)
        {
            var domObjects = html.Select(selector);
            var pattern = dataContext.PatternContainer[_patternName.GetValue(dataContext).ToString()];
            var model = _model.GetValue(dataContext);

            if (model is ICollection)
            {
                var enumModels = model as ICollection;

                foreach (var enumModel in enumModels)
                {
                    RunPattern(dataContext, enumModel, domObjects, pattern);
                }
            }
            else
            {
                RunPattern(dataContext, model, domObjects, pattern);
            }
        }
Example #11
0
 public object GetValue(IYateDataContext dataContext)
 {
     return _value;
 }
Example #12
0
 public object GetValue(IYateDataContext dataContext)
 {
     return dataContext.GetValue(_pathValue.GetValue(dataContext).ToString());
 }
Example #13
0
 public abstract void Render(CQ html, string selector, IYateDataContext dataContext);
Example #14
0
 public override void Render(CQ dom, string selector, IYateDataContext dataContext)
 {
     //todo:figure out append, prepend, etc
     dom.Select(selector).Text(Values[0].GetValue(dataContext).ToString());
 }
Example #15
0
 public void Render(CQ dom, string selector, IYateDataContext dataContext)
 {
     //todo:figure out append, prepend, etc
     dom.Select(selector).Attr(_attributeName.GetValue(dataContext).ToString(), _attributeValue.GetValue(dataContext).ToString());
 }
Example #16
0
 public void Render(CQ dom, string selector, IYateDataContext dataContext)
 {
     //todo:figure out append, prepend, etc
     dom.Select(selector).Html(_htmlValue.GetValue(dataContext).ToString());
 }