Код Middle Файлы и процессы обновлено
Парсер .env-файла
Условие
Напиши parseEnv(text): разбирает содержимое .env в объект.
- Строка
KEY=value; пробелы вокруг ключа и неквотированного значения обрезаются. Допустим префиксexport. - Пустые строки и строки, начинающиеся с
#(после пробелов), пропускаются. - Неквотированное значение: всё до
#(пробел + решётка начинает комментарий). - В одинарных кавычках значение берётся буквально. В двойных
\nпревращается в перевод строки,\"в кавычку. Решётка внутри кавычек это часть значения. - Строки без
=и с невалидным ключом (допустимо[A-Za-z_][A-Za-z0-9_]*) пропускаются. - Повторный ключ перезаписывает предыдущий.
Примеры
parseEnv("PORT=3000\nHOST = localhost ") // {"PORT":"3000","HOST":"localhost"}
parseEnv("# comment\n\n # indented\nA=1") // {"A":"1"}
parseEnv("export DB_URL=postgres://u:p@db:5432/app") // {"DB_URL":"postgres://u:p@db:5432/app"}
Как подойти
Подсказки: 2
- Разбирай построчно, ключ до первого
=. - Кавычки обрабатывай до поиска комментария.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Разбор аргументов командной строки
Следующий вопрос
Защита от path traversal при раздаче файлов