Skip to content

Commit 9a9d639

Browse files
authored
Tweak cmap to better propagate filename down. (#69)
1 parent 5a15c58 commit 9a9d639

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

schema_salad/sourceline.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,27 +86,31 @@ def cmap(d, lc=None, fn=None): # type: (Union[int, float, str, unicode, Dict, L
8686
fn = "test"
8787

8888
if isinstance(d, CommentedMap):
89+
fn = d.lc.filename if hasattr(d.lc, "filename") else fn
8990
for k,v in d.iteritems():
9091
if k in d.lc.data:
91-
d[k] = cmap(v, lc=d.lc.data[k], fn=d.lc.filename)
92+
d[k] = cmap(v, lc=d.lc.data[k], fn=fn)
9293
else:
93-
d[k] = cmap(v, lc, fn=d.lc.filename)
94+
d[k] = cmap(v, lc, fn=fn)
9495
return d
9596
if isinstance(d, CommentedSeq):
97+
fn = d.lc.filename if hasattr(d.lc, "filename") else fn
9698
for k,v in enumerate(d):
9799
if k in d.lc.data:
98-
d[k] = cmap(v, lc=d.lc.data[k], fn=d.lc.filename)
100+
d[k] = cmap(v, lc=d.lc.data[k], fn=fn)
99101
else:
100-
d[k] = cmap(v, lc, fn=d.lc.filename)
102+
d[k] = cmap(v, lc, fn=fn)
101103
return d
102104
if isinstance(d, dict):
103105
cm = CommentedMap()
104106
for k,v in d.iteritems():
105107
if isinstance(v, CommentedBase):
106108
uselc = [v.lc.line, v.lc.col, v.lc.line, v.lc.col]
109+
vfn = v.lc.filename if hasattr(v.lc, "filename") else fn
107110
else:
108111
uselc = lc
109-
cm[k] = cmap(v)
112+
vfn = fn
113+
cm[k] = cmap(v, lc=uselc, fn=vfn)
110114
cm.lc.add_kv_line_col(k, uselc)
111115
cm.lc.filename = fn
112116
return cm
@@ -115,9 +119,11 @@ def cmap(d, lc=None, fn=None): # type: (Union[int, float, str, unicode, Dict, L
115119
for k,v in enumerate(d):
116120
if isinstance(v, CommentedBase):
117121
uselc = [v.lc.line, v.lc.col, v.lc.line, v.lc.col]
122+
vfn = v.lc.filename if hasattr(v.lc, "filename") else fn
118123
else:
119124
uselc = lc
120-
cs.append(cmap(v))
125+
vfn = fn
126+
cs.append(cmap(v, lc=uselc, fn=vfn))
121127
cs.lc.add_kv_line_col(k, uselc)
122128
cs.lc.filename = fn
123129
return cs

0 commit comments

Comments
 (0)