Robot Framework Integrated Development Environment (RIDE)
suggesters.py
Go to the documentation of this file.
1 # Copyright 2008-2015 Nokia Networks
2 # Copyright 2016- Robot Framework Foundation
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 # http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 
16 from functools import total_ordering
17 
18 from robotide import robotapi
19 
20 
22 
23  def __init__(self, plugin, controller):
24  self._plugin_plugin = plugin
25  self._controller_controller = controller
26 
27  def get_suggestions(self, value, row=None):
28  if self._controller_controller:
29  try:
30  return self._controller_controller.get_local_namespace_for_row(row).get_suggestions(value)
31  except AttributeError:
32  return self._controller_controller.get_local_namespace.get_suggestions(value)
33  return self._plugin_plugin.content_assist_values(value) # TODO: Remove old functionality when no more needed
34 
35 
36 @total_ordering
37 class _Suggester():
38 
39  def _suggestion(self, name):
40  s = lambda:0
41  s.name = name
42  s.longname = name
43  s.details = None
44  return s
45 
46  def __eq__(self, other):
47  return self.name.lower() == other.name.lower()
48 
49  def __hash__(self):
50  return hash(repr(self))
51 
52  def __gt__(self, other):
53  return self.name.lower() > other.name.lower()
54 
55 
57 
58  def __init__(self):
59  self._suggestions_suggestions = list()
60 
61  def get_suggestions(self, name, *args):
62  return [s for s in self._suggestions_suggestions if name is None or name.lower() in s.name.lower()]
63 
64  def store(self, name):
65  self._suggestions_suggestions += [self._suggestion_suggestion(name)]
66  # DEBUG For now remove sorting self._suggestions.sort()
67 
68 
70 
71  def __init__(self, controller):
72  self._df_controller_df_controller = controller.datafile_controller
73 
74  def get_suggestions(self, name, *args):
75  already_imported = self._get_already_imported_get_already_imported()
76  all_resources = self._get_all_available()
77  suggestion_names = all_resources - already_imported
78  return [self._suggestion_suggestion(n) for n in sorted(suggestion_names) if name in n]
79 
81  return set(imp.name for imp in self._df_controller_df_controller.imports)
82 
83 
85 
86  def _get_all_available(self):
87  return set(self._df_controller_df_controller.relative_path_to(r) for r in self._df_controller_df_controller._project.resources)
88 
89 
91 
92  def _get_all_available(self):
93  return set(self._df_controller_df_controller.get_all_cached_library_names())
94 
95 
97 
98  def get_suggestions(self, name, *args):
99  return [self._suggestion_suggestion(n) for n in sorted(robotapi.STDLIB_NAMES)
100  if name.lower() in n.lower() and n not in ['BuiltIn', 'Reserved', 'Easter']]
101 
102 
104 
105  def __init__(self, controller, history_suggester):
106  self._history_suggester_history_suggester = history_suggester
107  self._cached_suggester_cached_suggester = CachedLibrarySuggester(controller)
109 
110  def get_suggestions(self, name, *args):
111  history = set(h.name for h in self._history_suggester_history_suggester.get_suggestions(name, *args))
112  cached = set(c.name for c in self._cached_suggester_cached_suggester.get_suggestions(name, *args))
113  builtin = set(b.name for b in self._builtin_suggester_builtin_suggester.get_suggestions(name, *args))
114  already_imported = self._cached_suggester_cached_suggester._get_already_imported()
115  return [self._suggestion_suggestion(s)
116  for s in sorted((history | cached | builtin)-already_imported,
117  key=lambda s: s.lower())]
def __init__(self, controller, history_suggester)
Definition: suggesters.py:105
def get_suggestions(self, value, row=None)
Definition: suggesters.py:27
def __init__(self, plugin, controller)
Definition: suggesters.py:23