Skip to content

Commit 0e75591

Browse files
committed
parsing: Public API to get tokens/values from statements
1 parent ed8211e commit 0e75591

File tree

1 file changed

+28
-24
lines changed

1 file changed

+28
-24
lines changed

src/robot/parsing/model/statements.py

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -62,16 +62,20 @@ def from_tokens(cls, tokens):
6262
def data_tokens(self):
6363
return [t for t in self.tokens if t.type not in Token.NON_DATA_TOKENS]
6464

65-
def _value(self, type):
65+
def get_value(self, type, default=None):
66+
token = self.get_token(type)
67+
return token.value if token else default
68+
69+
def get_token(self, type):
6670
for t in self.tokens:
6771
if t.type == type:
68-
return t.value
72+
return t
6973
return None
7074

71-
def _values(self, *types):
75+
def get_values(self, *types):
7276
return [t.value for t in self.tokens if t.type in types]
7377

74-
def _tokens(self, *types):
78+
def get_tokens(self, *types):
7579
return [t for t in self.tokens if t.type in types]
7680

7781
@property
@@ -126,7 +130,7 @@ class SingleValue(Statement):
126130

127131
@property
128132
def value(self):
129-
values = self._values(Token.ARGUMENT)
133+
values = self.get_values(Token.ARGUMENT)
130134
if values and values[0].upper() != 'NONE':
131135
return values[0]
132136
return None
@@ -136,18 +140,18 @@ class MultiValue(Statement):
136140

137141
@property
138142
def values(self):
139-
return tuple(self._values(Token.ARGUMENT))
143+
return tuple(self.get_values(Token.ARGUMENT))
140144

141145

142146
class Fixture(Statement):
143147

144148
@property
145149
def name(self):
146-
return self._value(Token.ARGUMENT)
150+
return self.get_value(Token.ARGUMENT)
147151

148152
@property
149153
def args(self):
150-
return tuple(self._values(Token.ARGUMENT)[1:])
154+
return tuple(self.get_values(Token.ARGUMENT)[1:])
151155

152156

153157
@Statement.register
@@ -181,7 +185,7 @@ class LibraryImport(Statement):
181185

182186
@property
183187
def name(self):
184-
return self._value(Token.ARGUMENT)
188+
return self.get_value(Token.ARGUMENT)
185189

186190
@property
187191
def args(self):
@@ -192,7 +196,7 @@ def alias(self):
192196
return self._get_args_and_alias()[1]
193197

194198
def _get_args_and_alias(self):
195-
args = tuple(self._values(Token.ARGUMENT)[1:])
199+
args = tuple(self.get_values(Token.ARGUMENT)[1:])
196200
if len(args) > 1 and normalize_whitespace(args[-2]) == 'WITH NAME':
197201
return args[:-2], args[-1]
198202
return args, None
@@ -204,7 +208,7 @@ class ResourceImport(Statement):
204208

205209
@property
206210
def name(self):
207-
return self._value(Token.ARGUMENT)
211+
return self.get_value(Token.ARGUMENT)
208212

209213

210214
@Statement.register
@@ -213,11 +217,11 @@ class VariablesImport(Statement):
213217

214218
@property
215219
def name(self):
216-
return self._value(Token.ARGUMENT)
220+
return self.get_value(Token.ARGUMENT)
217221

218222
@property
219223
def args(self):
220-
return self._values(Token.ARGUMENT)[1:]
224+
return self.get_values(Token.ARGUMENT)[1:]
221225

222226

223227
@Statement.register
@@ -226,7 +230,7 @@ class Documentation(DocumentationOrMetadata):
226230

227231
@property
228232
def value(self):
229-
tokens = self._tokens(Token.ARGUMENT)
233+
tokens = self.get_tokens(Token.ARGUMENT)
230234
return self._join_value(tokens)
231235

232236

@@ -236,11 +240,11 @@ class Metadata(DocumentationOrMetadata):
236240

237241
@property
238242
def name(self):
239-
return self._value(Token.ARGUMENT)
243+
return self.get_value(Token.ARGUMENT)
240244

241245
@property
242246
def value(self):
243-
tokens = self._tokens(Token.ARGUMENT)[1:]
247+
tokens = self.get_tokens(Token.ARGUMENT)[1:]
244248
return self._join_value(tokens)
245249

246250

@@ -290,14 +294,14 @@ class Variable(Statement):
290294

291295
@property
292296
def name(self):
293-
name = self._value(Token.VARIABLE)
297+
name = self.get_value(Token.VARIABLE)
294298
if name.endswith('='):
295299
return name[:-1].rstrip()
296300
return name
297301

298302
@property
299303
def value(self):
300-
return self._values(Token.ARGUMENT)
304+
return self.get_values(Token.ARGUMENT)
301305

302306

303307
@Statement.register
@@ -306,7 +310,7 @@ class Name(Statement):
306310

307311
@property
308312
def name(self):
309-
return self._value(Token.NAME)
313+
return self.get_value(Token.NAME)
310314

311315

312316
@Statement.register
@@ -350,15 +354,15 @@ class KeywordCall(Statement):
350354

351355
@property
352356
def keyword(self):
353-
return self._value(Token.KEYWORD)
357+
return self.get_value(Token.KEYWORD)
354358

355359
@property
356360
def args(self):
357-
return tuple(self._values(Token.ARGUMENT))
361+
return tuple(self.get_values(Token.ARGUMENT))
358362

359363
@property
360364
def assign(self):
361-
return tuple(self._values(Token.ASSIGN))
365+
return tuple(self.get_values(Token.ASSIGN))
362366

363367

364368
@Statement.register
@@ -367,7 +371,7 @@ class TemplateArguments(Statement):
367371

368372
@property
369373
def args(self):
370-
return self._values(self.type)
374+
return self.get_values(self.type)
371375

372376

373377
@Statement.register
@@ -388,7 +392,7 @@ def values(self):
388392

389393
@property
390394
def flavor(self):
391-
value = self._value(Token.FOR_SEPARATOR)
395+
value = self.get_value(Token.FOR_SEPARATOR)
392396
return normalize_whitespace(value) if value is not None else None
393397

394398
@property

0 commit comments

Comments
 (0)