Added XPath filter & search to DynamicXml class
Added empty method stubs to DynamicNodeList for grouping functionality
This commit is contained in:
@@ -55,6 +55,34 @@ namespace umbraco.MacroEngines
|
||||
result = new DynamicNodeList(this.OrderBy<DynamicNode>(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<DynamicNode>(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<DynamicNode>(groupCount).ToList());
|
||||
return true;
|
||||
}
|
||||
result = new DynamicNull();
|
||||
return true;
|
||||
}
|
||||
if (name == "GroupBy")
|
||||
{
|
||||
result = new DynamicNodeList(this.GroupBy<DynamicNode>(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<T>)Items.AsQueryable()).OrderBy(key);
|
||||
}
|
||||
public IQueryable<T> GroupBy<T>(string key)
|
||||
{
|
||||
//return ((IQueryable<T>)Items.AsQueryable()).OrderBy(key);
|
||||
return null;
|
||||
}
|
||||
public IQueryable<T> GroupedInto<T>(int groupCount)
|
||||
{
|
||||
//return ((IQueryable<T>)Items.AsQueryable()).OrderBy(key);
|
||||
return null;
|
||||
}
|
||||
public IQueryable<T> InGroupsOf<T>(int groupSize)
|
||||
{
|
||||
//return ((IQueryable<T>)Items.AsQueryable()).OrderBy(key);
|
||||
return null;
|
||||
}
|
||||
|
||||
public IQueryable Select(string predicate, params object[] values)
|
||||
{
|
||||
return DynamicQueryable.Select(Items.AsQueryable(), predicate, values);
|
||||
|
||||
@@ -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("<results/>");
|
||||
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()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user