Skip to content

Commit

Permalink
fix: don't format r-strings [#123]
Browse files Browse the repository at this point in the history
  • Loading branch information
mbhall88 committed Nov 8, 2022
1 parent 3dbd524 commit bcc5371
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 3 deletions.
11 changes: 8 additions & 3 deletions snakefmt/formatter.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,10 +200,15 @@ def align_strings(self, string: str, target_indent: int) -> str:
all_lines = match_slice.splitlines(keepends=True)
first = textwrap.indent(textwrap.dedent(all_lines[0]), used_indent)
indented += first

is_r_string = re.match(r"r['\"]", first.lstrip())
if len(all_lines) > 2:
middle = textwrap.indent(
textwrap.dedent("".join(all_lines[1:-1])), used_indent
)
if is_r_string:
middle = "".join(all_lines[1:-1])
else:
middle = textwrap.indent(
textwrap.dedent("".join(all_lines[1:-1])), used_indent
)
indented += middle
if len(all_lines) > 1:
last = textwrap.indent(textwrap.dedent(all_lines[-1]), used_indent)
Expand Down
18 changes: 18 additions & 0 deletions tests/test_formatter.py
Original file line number Diff line number Diff line change
Expand Up @@ -653,6 +653,24 @@ def test_tpq_alignment_and_keep_relative_indenting(self):
'''
assert formatter.get_formatted() == expected

def test_tpq_alignment_and_keep_relative_indenting_for_r_string(self):
snakecode = '''rule one:
output:
out_file="out.txt",
shell:
r"""
cat <<'EOF'> tmp.txt
touch {output}
EOF
bash tmp.txt
"""
'''
formatter = setup_formatter(snakecode)

assert formatter.get_formatted() == snakecode

def test_single_quoted_multiline_string_proper_tabbing(self):
snakecode = f"""
rule a:
Expand Down

0 comments on commit bcc5371

Please sign in to comment.