Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/epydeck/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from ast import literal_eval
from io import TextIOBase, StringIO
from collections import defaultdict
import re

# Specific deck keywords that use : instead of =
special_keywords = ["include_species", "identify"]
Expand Down Expand Up @@ -49,7 +50,7 @@ def _parse_block(line: str, fh: TextIOBase) -> dict:
break

# Handle special keywords
if any(line.lower().startswith(f"{keyword}:") for keyword in special_keywords):
if any(re.match(rf"^{re.escape(keyword)}\s*:", line.lower()) for keyword in special_keywords):
separator = ":"
else:
separator = "="
Expand Down
16 changes: 16 additions & 0 deletions test/test_read.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,3 +119,19 @@ def test_read_file():
assert "species" in data
assert "proton" in data["species"]
assert "electron" in data["species"]


def test_include_identify_with_spaces():
text = """
begin:dist_fn
a = 1
identify: Electron
identify : Proton
end:dist_fn
"""

data = epydeck.loads(text)

expected = {"dist_fn": {"a": 1, "identify": ["Electron", "Proton"]}}

assert expected == data