97 def itermaps(self): |
97 def itermaps(self): |
98 yield self.tomap() |
98 yield self.tomap() |
99 |
99 |
100 def hybriddict(data, key='key', value='value', fmt=None, gen=None): |
100 def hybriddict(data, key='key', value='value', fmt=None, gen=None): |
101 """Wrap data to support both dict-like and string-like operations""" |
101 """Wrap data to support both dict-like and string-like operations""" |
|
102 prefmt = pycompat.identity |
102 if fmt is None: |
103 if fmt is None: |
103 fmt = '%s=%s' |
104 fmt = '%s=%s' |
|
105 prefmt = pycompat.bytestr |
104 return _hybrid(gen, data, lambda k: {key: k, value: data[k]}, |
106 return _hybrid(gen, data, lambda k: {key: k, value: data[k]}, |
105 lambda k: fmt % (k, data[k])) |
107 lambda k: fmt % (prefmt(k), prefmt(data[k]))) |
106 |
108 |
107 def hybridlist(data, name, fmt=None, gen=None): |
109 def hybridlist(data, name, fmt=None, gen=None): |
108 """Wrap data to support both list-like and string-like operations""" |
110 """Wrap data to support both list-like and string-like operations""" |
|
111 prefmt = pycompat.identity |
109 if fmt is None: |
112 if fmt is None: |
110 fmt = '%s' |
113 fmt = '%s' |
111 return _hybrid(gen, data, lambda x: {name: x}, lambda x: fmt % x) |
114 prefmt = pycompat.bytestr |
|
115 return _hybrid(gen, data, lambda x: {name: x}, lambda x: fmt % prefmt(x)) |
112 |
116 |
113 def unwraphybrid(thing): |
117 def unwraphybrid(thing): |
114 """Return an object which can be stringified possibly by using a legacy |
118 """Return an object which can be stringified possibly by using a legacy |
115 template""" |
119 template""" |
116 gen = getattr(thing, 'gen', None) |
120 gen = getattr(thing, 'gen', None) |