@@ -61,7 +61,7 @@ def __init__(self, *, prop_order, allow_fetch, dotall, raw_pattern):
61
61
62
62
def _format_literal (self , literal ):
63
63
escaped = GRAMMAR_LITERAL_ESCAPE_RE .sub (
64
- lambda m : GRAMMAR_LITERAL_ESCAPES .get (m .group (0 )), json . dumps ( literal )
64
+ lambda m : GRAMMAR_LITERAL_ESCAPES .get (m .group (0 )), literal
65
65
)
66
66
return f'"{ escaped } "'
67
67
@@ -308,8 +308,7 @@ def _resolve_ref(self, ref):
308
308
return ref_name
309
309
310
310
def _generate_constant_rule (self , value ):
311
- assert isinstance (value , str ), f'Only string constants are supported, got { value } '
312
- return self ._format_literal (value )
311
+ return self ._format_literal (json .dumps (value ))
313
312
314
313
def visit (self , schema , name ):
315
314
schema_type = schema .get ('type' )
@@ -428,7 +427,7 @@ def _build_object_rule(self, properties: List[Tuple[str, Any]], required: Set[st
428
427
prop_rule_name = self .visit (prop_schema , f'{ name } { "-" if name else "" } { prop_name } ' )
429
428
prop_kv_rule_names [prop_name ] = self ._add_rule (
430
429
f'{ name } { "-" if name else "" } { prop_name } -kv' ,
431
- fr'{ self ._format_literal (prop_name )} space ":" space { prop_rule_name } '
430
+ fr'{ self ._format_literal (json . dumps ( prop_name ) )} space ":" space { prop_rule_name } '
432
431
)
433
432
required_props = [k for k in sorted_props if k in required ]
434
433
optional_props = [k for k in sorted_props if k not in required ]
0 commit comments