17 from functools
import total_ordering
20 from ..lib.robot.libdocpkg.htmlwriter
import DocToHtml
41 if details
is not None:
43 self.
_priority_priority = PRIORITIES.get(self.__class__, PRIORITIES[ItemInfo])
49 return '%s.%s' % (self.
sourcesource, self.
namename)
52 return utils.normalize(self.
namename).startswith(prefix)
65 return (a > b) - (a < b)
68 if self.
_priority_priority == other._priority:
69 name_cmp = self.
m_cmpm_cmp(self.
namename.upper(),other.name.upper())
70 return name_cmp
if name_cmp
else self.
m_cmpm_cmp(self.
sourcesource, other.source)
74 return not self.
__cmp____cmp__(other)
if isinstance(other, ItemInfo)
else False
77 return hash((self.
namename, self.
sourcesource))
84 ItemInfo.__init__(self, name, self.
_source_name_source_name(source),
None)
89 return os.path.basename(source)
if source
else ''
92 normalized = utils.normalize(self.
_undecorate_undecorate(pattern))
93 return utils.normalize(self.
namename[2:-1]).startswith(normalized)
96 def get_prefix_length():
97 if pattern[0]
not in [
'$',
'@',
'&']:
99 elif len(pattern) > 1
and pattern[1] ==
'{':
105 without_prefix = pattern[get_prefix_length():]
106 if pattern[-1] ==
'}':
107 return without_prefix[:-1]
109 return without_prefix
116 if self.
namename.startswith(
'@'):
120 '<tr><td><i>Name:</i></td><td>%s</td></tr>'
121 '<tr><td><i>Source:</i></td><td>%s</td></tr>'
122 '<tr><td valign=top><i>Value:</i></td><td>%s</td></tr>'
126 return self.
namename.
lower() == other.name.lower()
129 return hash(repr(self))
132 return self.
namename.
lower() < other.name.lower()
141 VariableInfo.__init__(self, name, value, self.
SOURCESOURCE)
147 return hash(repr(self))
155 SOURCE =
'Local variable'
158 VariableInfo.__init__(self, name,
'', self.
SOURCESOURCE)
165 self.
docdoc = self._doc(item).strip()
167 ItemInfo.__init__(self, self.
_name_name(item), self._source(item),
176 return self._parse_args(self.
itemitem)
184 '<tr><td><i>Name:</i></td><td>%s</td></tr>'
185 '<tr><td><i>Source:</i></td><td>%s <%s></td></tr>'
186 '<tr><td><i>Arguments:</i></td><td>%s</td></tr>'
189 '<tr><td>%s</td></tr>'
191 (self.
_name_name(self.
itemitem), self._source(self.
itemitem), self._type,
193 formatter(self.
docdoc))
196 return '[ %s ]' %
' | '.join(args)
199 return 'KeywordInfo[name: %s, source: %s, doc: %s]' %(self.
namename,
207 return self.
namename.
lower() == other.name.lower()
210 return hash(repr(self))
213 return self.
namename.
lower() < other.name.lower()
218 def __init__(self, item, source, source_type, doc_format):
221 _KeywordInfo.__init__(self, item)
223 if doc_format
in (
"TEXT",
"ROBOT",
"REST",
"HTML"):
234 return node.get(
'name')
237 return node.find(
'doc').text
or ''
240 args_node = node.find(
'arguments')
241 return [arg_node.text
for arg_node
in args_node.findall(
'arg')]
252 _type =
'test library'
256 _library_alias =
None
259 def __init__(self, name, doc, doc_format, library_name, args):
264 ItemInfo.__init__(self, self.
_item_name_item_name, library_name,
None)
267 if doc_format
in (
"TEXT",
"ROBOT",
"REST",
"HTML"):
286 return self.
_args_args
292 if isinstance(other, str):
293 return self.
namename.
lower() == other.name.lower()
296 return hash(repr(self))
299 return self.
namename.
lower() < other.name.lower()
313 _type =
'test library'
317 _library_alias =
None
320 def __init__(self, name, doc, doc_format='ROBOT', library_name='BuiltIn',
327 ItemInfo.__init__(self, self.
_item_name_item_name, library_name,
None)
344 return self.
_args_args
350 if isinstance(other, str):
354 return hash(repr(self))
357 return self.
namenamename < other.name
366 return os.path.basename(item.source)
if item.source
else ''
369 return utils.unescape(item.doc.value)
373 for arg
in uk.args.value:
383 return arg.startswith(
'$')
386 parts = arg.split(
'=', 1)
390 return name +
'=' + parts[1]
396 return arg.startswith(
'@')
399 return arg.startswith(
'&')
413 _type =
'test case file'
422 if isinstance(other, str):
423 return self.
namename.
lower() == other.name.lower()
429 return self.
namename.
lower() < other.name.lower()
437 _type =
'resource file'
443 return self.
itemitem.parent.parent.rawname +
'.' + self.
namename
446 if isinstance(other, self.__class__):
447 return self.
namename.
lower() == other.name.lower()
455 return self.
namename.
lower() < other.name.lower()
458 PRIORITIES = {ItemInfo: 50,
459 LibraryKeywordInfo: 40,
460 BlockKeywordInfo: 35,
461 ResourceUserKeywordInfo: 30,
462 TestCaseUserKeywordInfo: 20,
465 LocalVariableInfo: 5}
def __init__(self, name, value)
Special Info for FOR and END, documentation and since 5.0, IF, ELSE, ELSEIF, WHILE,...
def __init__(self, name, doc, doc_format='ROBOT', library_name='BuiltIn', *args)
def is_library_keyword(self)
def with_alias(self, alias)
Represents an object that can be displayed by content assistant.
def is_user_keyword(self)
def longname_begins_with(self, prefix)
def __init__(self, name, source, details)
Creates an item info.
def is_library_keyword(self)
def name_begins_with(self, prefix)
def __init__(self, name, doc, doc_format, library_name, args)
def with_alias(self, alias)
def is_library_keyword(self)
def _source_name(self, source)
def name_matches(self, pattern)
def __init__(self, name, value, source)
Creates an item info.
def _undecorate(self, pattern)
def _format_args(self, args)
def _parse_name_and_default(self, arg)
def _is_scalar(self, arg)
def _parse_vararg(self, arg)
def _parse_kwarg(self, arg)
def _strip_var_syntax_chars(self, string)
def _parse_args(self, uk)
def with_alias(self, alias)
def is_library_keyword(self)
def __init__(self, item, source, source_type, doc_format)
def _parse_args(self, node)