20
20
from ...common .lsp_types import Position
21
21
from ..diagnostics .entities import VariableDefinition , VariableNotFoundDefinition
22
22
from ..diagnostics .library_doc import KeywordDoc
23
- from ..diagnostics .namespace import LibraryEntry , Namespace
23
+ from ..diagnostics .namespace import DEFAULT_BDD_PREFIXES , LibraryEntry , Namespace
24
24
from ..utils .ast_utils import (
25
25
Token ,
26
26
is_not_variable_token ,
@@ -498,32 +498,32 @@ def split_bdd_prefix(cls, namespace: Namespace, token: Token) -> Tuple[Optional[
498
498
499
499
bdd_token = None
500
500
501
- parts = token .value .split (maxsplit = 1 )
502
- if len (parts ) < 1 :
501
+ parts = token .value .split ()
502
+ if len (parts ) < 2 :
503
503
return None , token
504
504
505
- prefix = parts [0 ]
506
- if prefix .title () in (
507
- namespace .languages .bdd_prefixes
508
- if namespace .languages is not None
509
- else {"Given " , "When " , "Then " , "And " , "But " }
510
- ):
511
- bdd_len = len (prefix )
512
- bdd_token = RobotToken (
513
- token .type ,
514
- token .value [:bdd_len ],
515
- token .lineno ,
516
- token .col_offset ,
517
- token .error ,
518
- )
505
+ for index in range (1 , len (parts )):
506
+ prefix = " " .join (parts [:index ]).title ()
507
+ if prefix in (
508
+ namespace .languages .bdd_prefixes if namespace .languages is not None else DEFAULT_BDD_PREFIXES
509
+ ):
510
+ bdd_len = len (prefix )
511
+ bdd_token = RobotToken (
512
+ token .type ,
513
+ token .value [:bdd_len ],
514
+ token .lineno ,
515
+ token .col_offset ,
516
+ token .error ,
517
+ )
519
518
520
- token = RobotToken (
521
- token .type ,
522
- token .value [bdd_len + 1 :],
523
- token .lineno ,
524
- token .col_offset + bdd_len + 1 ,
525
- token .error ,
526
- )
519
+ token = RobotToken (
520
+ token .type ,
521
+ token .value [bdd_len + 1 :],
522
+ token .lineno ,
523
+ token .col_offset + bdd_len + 1 ,
524
+ token .error ,
525
+ )
526
+ break
527
527
528
528
return bdd_token , token
529
529
@@ -545,24 +545,24 @@ def strip_bdd_prefix(cls, namespace: Namespace, token: Token) -> Token:
545
545
)
546
546
return token
547
547
else :
548
- parts = token .value .split (maxsplit = 1 )
548
+ parts = token .value .split ()
549
549
if len (parts ) < 2 :
550
550
return token
551
551
552
- prefix = parts [ 0 ]
553
- if prefix . title () in (
554
- namespace . languages . bdd_prefixes
555
- if namespace .languages is not None
556
- else { "Given " , "When " , "Then " , "And " , "But " }
557
- ):
558
- bdd_len = len ( prefix )
559
- token = RobotToken (
560
- token .type ,
561
- token . value [ bdd_len + 1 :] ,
562
- token .lineno ,
563
- token . col_offset + bdd_len + 1 ,
564
- token . error ,
565
- )
552
+ for index in range ( 1 , len ( parts )):
553
+ prefix = " " . join ( parts [: index ]). title ()
554
+ if prefix in (
555
+ namespace . languages . bdd_prefixes if namespace .languages is not None else DEFAULT_BDD_PREFIXES
556
+ ):
557
+ bdd_len = len ( prefix )
558
+ token = RobotToken (
559
+ token . type ,
560
+ token .value [ bdd_len + 1 :] ,
561
+ token . lineno ,
562
+ token .col_offset + bdd_len + 1 ,
563
+ token . error ,
564
+ )
565
+ break
566
566
567
567
return token
568
568
@@ -572,18 +572,17 @@ def is_bdd_token(cls, namespace: Namespace, token: Token) -> bool:
572
572
bdd_match = cls .BDD_TOKEN .match (token .value )
573
573
return bool (bdd_match )
574
574
else :
575
- parts = token .value .split (maxsplit = 1 )
576
- if len (parts ) < 1 :
575
+ parts = token .value .split ()
576
+ if len (parts ) < 2 :
577
577
return False
578
578
579
- prefix = parts [0 ]
579
+ for index in range (1 , len (parts )):
580
+ prefix = " " .join (parts [:index ]).title ()
580
581
581
- if prefix .title () in (
582
- namespace .languages .bdd_prefixes
583
- if namespace .languages is not None
584
- else {"Given " , "When " , "Then " , "And " , "But " }
585
- ):
586
- return True
582
+ if prefix .title () in (
583
+ namespace .languages .bdd_prefixes if namespace .languages is not None else DEFAULT_BDD_PREFIXES
584
+ ):
585
+ return True
587
586
588
587
return False
589
588
0 commit comments