@@ -465,28 +465,28 @@ def __init__(self, content: str, deps: list = None):
465465SPACE_RULE = '| " " | "\\ n"{1,2} [ \\ t]{0,20}'
466466
467467PRIMITIVE_RULES = {
468- 'boolean' : BuiltinRule ('("true" | "false") space ' , []),
468+ 'boolean' : BuiltinRule ('("true" | "false")' , []),
469469 'decimal-part' : BuiltinRule ('[0-9]{1,16}' , []),
470470 'integral-part' : BuiltinRule ('[0] | [1-9] [0-9]{0,15}' , []),
471- 'number' : BuiltinRule ('("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space ' , ['integral-part' , 'decimal-part' ]),
472- 'integer' : BuiltinRule ('("-"? integral-part) space ' , ['integral-part' ]),
471+ 'number' : BuiltinRule ('("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?' , ['integral-part' , 'decimal-part' ]),
472+ 'integer' : BuiltinRule ('("-"? integral-part)' , ['integral-part' ]),
473473 'value' : BuiltinRule ('object | array | string | number | boolean | null' , ['object' , 'array' , 'string' , 'number' , 'boolean' , 'null' ]),
474- 'object' : BuiltinRule ('"{" space ( string ":" space value ("," space string ":" space value)* )? "}" space ' , ['string' , 'value' ]),
475- 'array' : BuiltinRule ('"[" space ( value ("," space value)* )? "]" space ' , ['value' ]),
476- 'uuid' : BuiltinRule (r'"\"" [0-9a-fA-F]{8} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{12} "\"" space ' , []),
474+ 'object' : BuiltinRule ('"{" space ( string ":" space value ("," space string ":" space value)* )? space "}"' , ['string' , 'value' ]),
475+ 'array' : BuiltinRule ('"[" space ( value ("," space value)* )? space "]"' , ['value' ]),
476+ 'uuid' : BuiltinRule (r'"\"" [0-9a-fA-F]{8} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{12} "\""' , []),
477477 'char' : BuiltinRule (r'[^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})' , []),
478- 'string' : BuiltinRule (r'"\"" char* "\"" space ' , ['char' ]),
479- 'null' : BuiltinRule ('"null" space ' , []),
478+ 'string' : BuiltinRule (r'"\"" char* "\""' , ['char' ]),
479+ 'null' : BuiltinRule ('"null"' , []),
480480}
481481
482482# TODO: support "uri", "email" string formats
483483STRING_FORMAT_RULES = {
484484 'date' : BuiltinRule ('[0-9]{4} "-" ( "0" [1-9] | "1" [0-2] ) "-" ( \" 0\" [1-9] | [1-2] [0-9] | "3" [0-1] )' , []),
485485 'time' : BuiltinRule ('([01] [0-9] | "2" [0-3]) ":" [0-5] [0-9] ":" [0-5] [0-9] ( "." [0-9]{3} )? ( "Z" | ( "+" | "-" ) ( [01] [0-9] | "2" [0-3] ) ":" [0-5] [0-9] )' , []),
486486 'date-time' : BuiltinRule ('date "T" time' , ['date' , 'time' ]),
487- 'date-string' : BuiltinRule ('"\\ "" date "\\ "" space ' , ['date' ]),
488- 'time-string' : BuiltinRule ('"\\ "" time "\\ "" space ' , ['time' ]),
489- 'date-time-string' : BuiltinRule ('"\\ "" date-time "\\ "" space ' , ['date-time' ]),
487+ 'date-string' : BuiltinRule ('"\\ "" date "\\ ""' , ['date' ]),
488+ 'time-string' : BuiltinRule ('"\\ "" time "\\ ""' , ['time' ]),
489+ 'date-time-string' : BuiltinRule ('"\\ "" date-time "\\ ""' , ['date-time' ]),
490490}
491491
492492DOTALL = '[\\ U00000000-\\ U0010FFFF]'
@@ -585,7 +585,7 @@ def visit(node):
585585 out .append (f'[^"{ "" .join (rejects )} ] { char_rule } *' )
586586 visit (trie )
587587
588- out .append (f' ){ "" if trie .is_end_of_string else "?" } ["] space ' )
588+ out .append (f' ){ "" if trie .is_end_of_string else "?" } ["]' )
589589 return '' .join (out )
590590
591591 def _add_rule (self , name , rule ):
@@ -815,7 +815,7 @@ def join_seq():
815815 return self ._add_rule (
816816 name ,
817817 to_rule (transform ()) if self ._raw_pattern \
818- else "\" \\ \" \" (" + to_rule (transform ()) + ") \" \\ \" \" space " )
818+ else "\" \\ \" \" (" + to_rule (transform ()) + ") \" \\ \" \" " )
819819
820820
821821 def _resolve_ref (self , ref ):
@@ -846,10 +846,10 @@ def visit(self, schema, name):
846846 return self ._add_rule (rule_name , self ._generate_union_rule (name , [{** schema , 'type' : t } for t in schema_type ]))
847847
848848 elif 'const' in schema :
849- return self ._add_rule (rule_name , self ._generate_constant_rule (schema ['const' ]) + ' space' )
849+ return self ._add_rule (rule_name , self ._generate_constant_rule (schema ['const' ]))
850850
851851 elif 'enum' in schema :
852- rule = '(' + ' | ' .join ((self ._generate_constant_rule (v ) for v in schema ['enum' ])) + ') space '
852+ rule = '(' + ' | ' .join ((self ._generate_constant_rule (v ) for v in schema ['enum' ])) + ')'
853853 return self ._add_rule (rule_name , rule )
854854
855855 elif schema_type in (None , 'object' ) and \
@@ -890,7 +890,7 @@ def add_component(comp_schema, is_required):
890890 enum_intersection &= s
891891
892892 if enum_intersection :
893- rule = '(' + ' | ' .join ((self ._generate_constant_rule (v ) for v in sorted (enum_intersection ))) + ') space '
893+ rule = '(' + ' | ' .join ((self ._generate_constant_rule (v ) for v in sorted (enum_intersection ))) + ')'
894894 return self ._add_rule (rule_name , rule )
895895
896896 return self ._add_rule (rule_name , self ._build_object_rule (properties , required , hybrid_name , additional_properties = None ))
@@ -904,12 +904,12 @@ def add_component(comp_schema, is_required):
904904 ' "," space ' .join (
905905 self .visit (item , f'{ name } { "-" if name else "" } tuple-{ i } ' )
906906 for i , item in enumerate (items )) +
907- ' "]" space ' )
907+ ' space "]"' )
908908 else :
909909 item_rule_name = self .visit (items , f'{ name } { "-" if name else "" } item' )
910910 min_items = schema .get ("minItems" , 0 )
911911 max_items = schema .get ("maxItems" )
912- return self ._add_rule (rule_name , '"[" space ' + _build_repetition (item_rule_name , min_items , max_items , separator_rule = '"," space' ) + ' "]" space ' )
912+ return self ._add_rule (rule_name , '"[" space ' + _build_repetition (item_rule_name , min_items , max_items , separator_rule = '"," space' ) + ' space "]"' )
913913
914914 elif schema_type in (None , 'string' ) and 'pattern' in schema :
915915 return self ._visit_pattern (schema ['pattern' ], rule_name )
@@ -929,7 +929,7 @@ def add_component(comp_schema, is_required):
929929 min_len = schema .get ('minLength' , 0 )
930930 max_len = schema .get ('maxLength' )
931931
932- return self ._add_rule (rule_name , r'"\"" ' + _build_repetition (char_rule , min_len , max_len ) + r' "\"" space ' )
932+ return self ._add_rule (rule_name , r'"\"" ' + _build_repetition (char_rule , min_len , max_len ) + r' "\""' )
933933
934934 elif schema_type in (None , 'integer' ) and \
935935 ('minimum' in schema or 'exclusiveMinimum' in schema or 'maximum' in schema or 'exclusiveMaximum' in schema ):
@@ -946,7 +946,7 @@ def add_component(comp_schema, is_required):
946946
947947 out = ["(" ]
948948 _generate_min_max_int (min_value , max_value , out )
949- out .append (") space " )
949+ out .append (")" )
950950 return self ._add_rule (rule_name , '' .join (out ))
951951
952952 elif (schema_type == 'object' ) or (len (schema ) == 0 ):
@@ -1031,7 +1031,7 @@ def get_recursive_refs(ks, first_is_optional):
10311031 rule += ' )'
10321032 rule += ' )?'
10331033
1034- rule += ' "}" space '
1034+ rule += ' space "}"'
10351035
10361036 return rule
10371037
0 commit comments