11from typing import (
2- Tuple ,
32 Union ,
43 Optional ,
5- Text
4+ Text ,
5+ List ,
6+ Tuple
67)
78
8- import sifter .grammar
9+ from sifter .grammar .validator import Validator
10+ from sifter .grammar .rule import RuleSyntaxError
11+ from sifter .grammar import tag
12+ from sifter .validators .stringlist import StringList
913import sifter .handler
1014import sifter .validators
1115
1216__all__ = ('Tag' , 'MatchType' , 'Comparator' ,)
1317
1418
15- class Tag (sifter . grammar . Validator ):
19+ class Tag (Validator ):
1620
17- def __init__ (self , allowed_tags : Optional [Union [Text , bytes , Tuple [Union [Text , bytes ], ...]]] = None , tag_arg_validators = None ) -> None :
21+ def __init__ (self , allowed_tags : Optional [Union [Text , bytes , Tuple [Union [Text , bytes ], ...]]] = None , tag_arg_validators : Optional [Tuple [Validator , ...]] = None ) -> None :
22+ self .tag_arg_validators : Tuple [Validator , ...]
1823 super (Tag , self ).__init__ ()
1924 self .allowed_tags : Optional [Union [Text , bytes , Tuple [Union [Text , bytes ], ...]]] = None
2025 if isinstance (allowed_tags , (str , bytes )):
@@ -26,10 +31,10 @@ def __init__(self, allowed_tags: Optional[Union[Text, bytes, Tuple[Union[Text, b
2631 else :
2732 self .tag_arg_validators = tag_arg_validators
2833
29- def validate (self , arg_list : sifter . grammar . Tag , starting_index ) -> int :
34+ def validate (self , arg_list : List [ tag . Tag ] , starting_index : int ) -> Optional [ int ] :
3035 if starting_index >= len (arg_list ):
3136 return 0
32- if not isinstance (arg_list [starting_index ], sifter . grammar .Tag ):
37+ if not isinstance (arg_list [starting_index ], tag .Tag ):
3338 return 0
3439
3540 if self .allowed_tags is not None :
@@ -61,20 +66,21 @@ class Comparator(Tag):
6166 def __init__ (self ) -> None :
6267 super (Comparator , self ).__init__ (
6368 ('COMPARATOR' ,),
64- (sifter . validators . StringList (1 ),),
69+ (StringList (1 ),),
6570 )
6671
67- def validate (self , arg_list , starting_index ) :
72+ def validate (self , arg_list : List [ tag . Tag ] , starting_index : int ) -> Optional [ int ] :
6873 validated_args = super (Comparator , self ).validate (
6974 arg_list ,
7075 starting_index
7176 )
72- if validated_args > 0 :
77+ if validated_args and validated_args > 0 :
7378 if not sifter .handler .get (
7479 'comparator' ,
7580 arg_list [starting_index + 1 ][0 ],
7681 ):
77- raise sifter . grammar . RuleSyntaxError (
82+ raise RuleSyntaxError (
7883 "'%s' comparator is unknown/unsupported"
7984 % arg_list [starting_index + 1 ][0 ]
8085 )
86+ return None
0 commit comments