projects
/
cumulus.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
fae5b15
)
Improve parsing performance.
author
Michael Vrable
<vrable@cs.hmc.edu>
Wed, 26 Feb 2014 01:18:30 +0000
(17:18 -0800)
committer
Michael Vrable
<vrable@cs.hmc.edu>
Fri, 22 Aug 2014 03:43:01 +0000
(20:43 -0700)
python/cumulus/__init__.py
patch
|
blob
|
history
diff --git
a/python/cumulus/__init__.py
b/python/cumulus/__init__.py
index
ed641ff
..
b351658
100644
(file)
--- a/
python/cumulus/__init__.py
+++ b/
python/cumulus/__init__.py
@@
-473,30
+473,33
@@
def parse(lines, terminate=None):
stop reading input lines.
"""
stop reading input lines.
"""
-
dic
t = {}
+
resul
t = {}
last_key = None
last_key = None
+ def make_result(result):
+ return dict((k, "".join(v)) for (k, v) in result.items())
+
for l in lines:
# Strip off a trailing newline, if present
if len(l) > 0 and l[-1] == "\n":
l = l[:-1]
if terminate is not None and terminate(l):
for l in lines:
# Strip off a trailing newline, if present
if len(l) > 0 and l[-1] == "\n":
l = l[:-1]
if terminate is not None and terminate(l):
- if len(
dict) > 0: yield dict
-
dic
t = {}
+ if len(
result) > 0: yield make_result(result)
+
resul
t = {}
last_key = None
continue
m = re.match(r"^([-\w]+):\s*(.*)$", l)
if m:
last_key = None
continue
m = re.match(r"^([-\w]+):\s*(.*)$", l)
if m:
- dict[m.group(1)] = m.group(2)
+ result[m.group(1)] = [m.group(2)]
last_key = m.group(1)
elif len(l) > 0 and l[0].isspace() and last_key is not None:
last_key = m.group(1)
elif len(l) > 0 and l[0].isspace() and last_key is not None:
- dict[last_key] += l
+ result[last_key].append(l)
else:
last_key = None
else:
last_key = None
- if len(
dict) > 0: yield dict
+ if len(
result) > 0: yield make_result(result)
def parse_full(lines):
try:
def parse_full(lines):
try: