@@ -41,7 +41,7 @@ def __init__(self, **kwargs):
41
41
:type indent: string
42
42
43
43
.. attribute:: g
44
-
44
+
45
45
instance of :ctype:`yajl_gen` returned by
46
46
:cfunc:`yajl.yajl_gen_alloc`.
47
47
This should not be used directly.
@@ -55,10 +55,12 @@ def __init__(self, **kwargs):
55
55
('gen_escape_solidus' , yajl_gen_escape_solidus ),
56
56
])
57
57
for k ,v in kwargs .items ():
58
- yajl . yajl_gen_config ( self .g , config_map [k ], v )
58
+ self ._yajl_gen ( 'yajl_gen_config' , config_map [k ], v )
59
59
60
60
def __del__ (self ):
61
- yajl .yajl_gen_free (self .g )
61
+ self ._yajl_gen ('yajl_gen_free' )
62
+ def yajl_gen_reset (self , sep = '' ):
63
+ self ._yajl_gen ('yajl_gen_reset' , sep )
62
64
def _assert_retval (self , retval ):
63
65
'''
64
66
:param retval: yajl_gen_status return code
@@ -79,39 +81,48 @@ def yajl_gen_get_buf(self):
79
81
l = c_uint ()
80
82
buf = POINTER (c_ubyte )()
81
83
self ._assert_retval (
82
- yajl . yajl_gen_get_buf ( self .g , byref (buf ), byref (l ))
84
+ self ._yajl_gen ( 'yajl_gen_get_buf' , byref (buf ), byref (l ))
83
85
)
84
86
try :
85
87
return string_at (buf , l .value )
86
88
finally :
87
- yajl .yajl_gen_clear (self .g )
89
+ self ._yajl_gen ('yajl_gen_clear' )
90
+ def _yajl_gen (self , name , * args ):
91
+ '''
92
+ Call the underlying yajl_gen c function/method
93
+ ``self.g`` must be already allocated
94
+ '''
95
+ return getattr (yajl , name )(self .g , * args )
88
96
def _dispatch (self , name , * args ):
89
97
'''
90
98
:param name: yajl func ``name`` to dispatch to
91
99
:type name: string
92
100
:param args: arguments to pass to the dispatchee
93
101
:type args: list or tuple
102
+
103
+ Asserts that the returned value is proper or raises the proper
104
+ ``YajlGenException``
94
105
'''
95
106
self ._assert_retval (
96
- getattr ( yajl , name )( self .g , * args )
107
+ self ._yajl_gen ( name , * args )
97
108
)
98
109
def yajl_gen_null (self ):
99
110
''' Generate json value ``null`` '''
100
111
self ._dispatch ('yajl_gen_null' )
101
112
def yajl_gen_bool (self , b ):
102
- '''
113
+ '''
103
114
:param b: flag to be jsonified
104
115
:type b: bool
105
116
'''
106
117
self ._dispatch ('yajl_gen_bool' , b )
107
118
def yajl_gen_integer (self , n ):
108
- '''
119
+ '''
109
120
:param n: number to be jsonified
110
121
:type n: int
111
122
'''
112
123
self ._dispatch ('yajl_gen_integer' , c_longlong (n ))
113
124
def yajl_gen_double (self , n ):
114
- '''
125
+ '''
115
126
:param n: number to be jsonified
116
127
:type n: float
117
128
'''
@@ -126,7 +137,7 @@ def yajl_gen_number(self, s):
126
137
'''
127
138
self ._dispatch ('yajl_gen_number' , c_char_p (s ), len (s ))
128
139
def yajl_gen_string (self , s ):
129
- '''
140
+ '''
130
141
:param s: string to be jsonified
131
142
:type s: string
132
143
'''
0 commit comments