+def remove_newlines(x: str) -> str:
+ return x.replace('\n', '')
+
+
+def strip_whitespace(x: str) -> str:
+ return x.strip()
+
+
+def remove_hash_comments(x: str) -> str:
+ return re.sub(r'#.*$', '', x)
+
+
+def slurp_file(
+ filename: str,
+ *,
+ skip_blank_lines=False,
+ line_transformers: Optional[List[Callable[[str], str]]] = None,
+):
+ ret = []
+ if not file_is_readable(filename):
+ raise Exception(f'{filename} can\'t be read.')
+ with open(filename) as rf:
+ for line in rf:
+ if line_transformers is not None:
+ for transformation in line_transformers:
+ line = transformation(line)
+ if skip_blank_lines and line == '':
+ continue
+ ret.append(line)
+ return ret
+
+