@@ -51,14 +51,13 @@ def _next_entry(self):
51
51
err = C .git_config_next (centry , self ._iter )
52
52
check_error (err )
53
53
54
- return ConfigEntry ._from_c (centry [0 ], True )
54
+ return ConfigEntry ._from_c (centry [0 ], self )
55
55
56
56
def next (self ):
57
57
return self .__next__ ()
58
58
59
59
def __next__ (self ):
60
- entry = self ._next_entry ()
61
- return entry
60
+ return self ._next_entry ()
62
61
63
62
64
63
class ConfigMultivarIterator (ConfigIterator ):
@@ -193,7 +192,7 @@ def get_bool(self, key):
193
192
194
193
entry = self ._get_entry (key )
195
194
res = ffi .new ('int *' )
196
- err = C .git_config_parse_bool (res , entry .raw_value )
195
+ err = C .git_config_parse_bool (res , entry .c_value )
197
196
check_error (err )
198
197
199
198
return res [0 ] != 0
@@ -208,7 +207,7 @@ def get_int(self, key):
208
207
209
208
entry = self ._get_entry (key )
210
209
res = ffi .new ('int64_t *' )
211
- err = C .git_config_parse_int64 (res , entry .raw_value )
210
+ err = C .git_config_parse_int64 (res , entry .c_value )
212
211
check_error (err )
213
212
214
213
return res [0 ]
@@ -289,46 +288,45 @@ class ConfigEntry(object):
289
288
"""
290
289
291
290
@classmethod
292
- def _from_c (cls , ptr , from_iterator = False ):
293
- """Builds the entry from a ``git_config_entry`` pointer. ``from_iterator``
294
- should be ``True`` when the entry was created during ``git_config_iterator``
295
- actions
291
+ def _from_c (cls , ptr , iterator = None ):
292
+ """Builds the entry from a ``git_config_entry`` pointer.
293
+
294
+ ``iterator`` must be a ``ConfigIterator`` instance if the entry was
295
+ created during ``git_config_iterator`` actions.
296
296
"""
297
297
entry = cls .__new__ (cls )
298
298
entry ._entry = ptr
299
- entry .from_iterator = from_iterator
299
+ entry .iterator = iterator
300
300
return entry
301
301
302
302
def __del__ (self ):
303
- if not self .from_iterator :
303
+ if self .iterator is None :
304
304
C .git_config_entry_free (self ._entry )
305
305
306
+ @property
307
+ def c_value (self ):
308
+ """The raw ``cData`` entry value."""
309
+ return self ._entry .value
310
+
311
+ @property
312
+ def raw_value (self ):
313
+ return ffi .string (self .c_value )
314
+
306
315
@property
307
316
def value (self ):
308
- """The entry's value as a string
309
- """
310
- return self .decode_as_string (self ._entry .value )
317
+ """The entry's value as a string."""
318
+ return self .raw_value .decode ('utf-8' )
311
319
312
320
@property
313
- def level (self ):
314
- """The entry's ``git_config_level_t`` value
315
- """
316
- return self ._entry .level
321
+ def raw_name (self ):
322
+ return ffi .string (self ._entry .name )
317
323
318
324
@property
319
325
def name (self ):
320
- """The entry's name
321
- """
322
- return self .decode_as_string (self ._entry .name )
326
+ """The entry's name."""
327
+ return self .raw_name .decode ('utf-8' )
323
328
324
329
@property
325
- def raw_value (self ):
326
- """The raw ``cData`` entry value
327
- """
328
- return self ._entry .value
329
-
330
- @staticmethod
331
- def decode_as_string (value ):
332
- """Returns ``value`` as a decoded ``utf-8`` string.
333
- """
334
- return ffi .string (value ).decode ('utf-8' )
330
+ def level (self ):
331
+ """The entry's ``git_config_level_t`` value."""
332
+ return self ._entry .level
0 commit comments