75
75
UpdatesEnabled = true;
78
public IList<IObject> Search (string query, Type[] searchFilter)
78
public IList<IObject> Search (string query, IEnumerable<Type> filter)
80
if (searchFilter.Length == 1 && searchFilter[0] == typeof (IAction))
82
return Search (query, searchFilter, actions, null);
85
return Search (query, searchFilter, universe.Values, null);
88
public IList<IObject> Search (string query, Type[] searchFilter, IObject otherObj)
90
if (searchFilter.Length == 1 && searchFilter[0] == typeof (IAction))
92
return Search (query, searchFilter, actions, otherObj);
95
return Search (query, searchFilter, universe.Values, otherObj);
98
public IList<IObject> Search (string query, Type[] searchFilter, IEnumerable<IObject> baseArray)
100
return Search (query, searchFilter, baseArray, null);
103
public IList<IObject> Search (string query, Type[] searchFilter, IEnumerable<IObject> baseArray, IObject compareObj)
105
List<IObject> results = new List<IObject> ();
106
query = query.ToLower ();
108
foreach (DoObject obj in baseArray) {
109
obj.UpdateRelevance (query, compareObj as DoObject);
110
if (Math.Abs (obj.Relevance) > epsilon) {
111
if (searchFilter.Length == 0) {
114
foreach (Type t in searchFilter) {
115
if (t.IsInstanceOfType (obj.Inner)) {
124
return results.ToArray ();
80
return Search (query, filter, (IObject) null);
83
public IList<IObject> Search (string query, IEnumerable<Type> filter, IObject other)
85
if (filter.Count () == 1 && filter.First () == typeof (IAction))
87
return Search (query, filter, actions, other);
90
return Search (query, filter, universe.Values, other);
93
public IList<IObject> Search (string query, IEnumerable<Type> filter, IEnumerable<IObject> objects)
95
return Search (query, filter, objects, null);
98
public IList<IObject> Search (string query, IEnumerable<Type> filter, IEnumerable<IObject> objects, IObject other)
102
DoObject o = iobj as DoObject;
103
o.UpdateRelevance (query, other as DoObject);
104
return epsilon < Math.Abs (o.Relevance) &&
105
(!filter.Any () || o.Inner.IsAssignableToAny (filter));
107
.OrderByDescending (o => (o as DoObject).Relevance)
168
152
internal static bool SourceSupportsItem (IItemSource source, IItem item)
170
// While is used to get to the innermost wrapped IItem.
171
while (item is DoItem)
172
item = (item as DoItem).Inner as IItem;
174
return source.SupportedItemTypes
175
.Where (t => t.IsInstanceOfType (item))
154
item = DoItem.EnsureIItem (item);;
155
return source.SupportedItemTypes.Any (t => t.IsInstanceOfType (item));