Skip to content

Commit

Permalink
Merge pull request #2421 from midichef/safety_delimiter
Browse files Browse the repository at this point in the history
[save-] handle empty delimiter when safety_first
  • Loading branch information
anjakefala committed Jul 2, 2024
2 parents de378e6 + 8fea025 commit 2549f14
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions visidata/save.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,15 @@ def safe_trdict(vs):
'returns string.translate dictionary for replacing tabs and newlines'
if vs.options.safety_first:
delim = vs.options.delimiter
return {
trdict = {
0: '', # strip NUL completely
ord(delim): vs.options.tsv_safe_tab, # \t
10: vs.options.tsv_safe_newline, # \n
13: vs.options.tsv_safe_newline, # \r
}
if not delim or ord(delim) in trdict:
vd.fail(f'cannot use delimiter {repr(delim)} with safety_first')
trdict[ord(delim)] = vs.options.tsv_safe_tab # \t
return trdict
return {}


Expand All @@ -29,12 +32,12 @@ def iterdispvals(sheet, *cols, format=False):
cols = sheet.visibleCols

transformers = collections.OrderedDict() # list of transformers for each column in order
trdict = sheet.safe_trdict()
for col in cols:
transformers[col] = [ col.type ]
if format:
formatMaker = getattr(col, 'formatter_'+(col.formatter or sheet.options.disp_formatter))
transformers[col].append(formatMaker(col._formatdict))
trdict = sheet.safe_trdict()
if trdict:
transformers[col].append(lambda v,trdict=trdict: v.translate(trdict))

Expand Down

0 comments on commit 2549f14

Please sign in to comment.