diff --git a/umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicNodeList.cs b/umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicNodeList.cs index d62f762307..715b3e77f4 100644 --- a/umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicNodeList.cs +++ b/umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicNodeList.cs @@ -55,6 +55,34 @@ namespace umbraco.MacroEngines result = new DynamicNodeList(this.OrderBy(args.First().ToString()).ToList()); return true; } + if (name == "InGroupsOf") + { + int groupSize = 0; + if (int.TryParse(args.First().ToString(), out groupSize)) + { + result = new DynamicNodeList(this.InGroupsOf(groupSize).ToList()); + return true; + } + result = new DynamicNull(); + return true; + } + if (name == "GroupedInto") + { + int groupCount = 0; + if (int.TryParse(args.First().ToString(), out groupCount)) + { + result = new DynamicNodeList(this.GroupedInto(groupCount).ToList()); + return true; + } + result = new DynamicNull(); + return true; + } + if (name == "GroupBy") + { + result = new DynamicNodeList(this.GroupBy(args.First().ToString()).ToList()); + return true; + } + if (name == "Pluck" || name == "Select") { string predicate = args.First().ToString(); @@ -224,6 +252,22 @@ namespace umbraco.MacroEngines { return ((IQueryable)Items.AsQueryable()).OrderBy(key); } + public IQueryable GroupBy(string key) + { + //return ((IQueryable)Items.AsQueryable()).OrderBy(key); + return null; + } + public IQueryable GroupedInto(int groupCount) + { + //return ((IQueryable)Items.AsQueryable()).OrderBy(key); + return null; + } + public IQueryable InGroupsOf(int groupSize) + { + //return ((IQueryable)Items.AsQueryable()).OrderBy(key); + return null; + } + public IQueryable Select(string predicate, params object[] values) { return DynamicQueryable.Select(Items.AsQueryable(), predicate, values); diff --git a/umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicXml.cs b/umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicXml.cs index 71f6238f09..be485333c3 100644 --- a/umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicXml.cs +++ b/umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicXml.cs @@ -136,6 +136,27 @@ namespace umbraco.MacroEngines result = null; return false; } + public DynamicXml XPath(string expression) + { + var matched = this.BaseElement.XPathSelectElements(expression); + DynamicXml root = new DynamicXml(""); + foreach (var element in matched) + { + root.BaseElement.Add(element); + } + return root; + } + + public DynamicXml Find(string expression) + { + return new DynamicXml(this.BaseElement.XPathSelectElements(expression).FirstOrDefault()); + } + + public DynamicXml Find(string attributeName, object value) + { + string expression = string.Format("//*[{0}='{1}']", attributeName, value); + return new DynamicXml(this.BaseElement.XPathSelectElements(expression).FirstOrDefault()); + } public IEnumerator GetEnumerator() {