Skip to content

Commit d3937cf

Browse files
committed
handle spaced comments and multiple equal signs
1 parent 971523f commit d3937cf

2 files changed

Lines changed: 25 additions & 3 deletions

File tree

src/core.test.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ describe('parse', () => {
6666
});
6767

6868
it('should ignore commented lines', () => {
69-
const lines = ['FOO=bar', '# comment line', '# QUX=quux', 'BAZ=qux'];
69+
const lines = ['FOO=bar', '# comment line', ' # QUX=quux ', 'BAZ=qux'];
7070
const result = parse(lines);
7171
expect(result).toEqual({ FOO: 'bar', BAZ: 'qux' });
7272
});
@@ -76,4 +76,20 @@ describe('parse', () => {
7676
const result = parse(lines);
7777
expect(result).toEqual({ FOO: 'bar' });
7878
});
79+
80+
it('should handle spaces around =', () => {
81+
const lines = [' FOO = bar ', 'BAZ = qux'];
82+
const result = parse(lines);
83+
expect(result).toEqual({ FOO: 'bar', BAZ: 'qux' });
84+
});
85+
86+
it('should handle multiple = signs', () => {
87+
const lines = [
88+
'CONNECTION_STRING=mysql://user:pass@host:3306/db?option=1',
89+
];
90+
const result = parse(lines);
91+
expect(result).toEqual({
92+
CONNECTION_STRING: 'mysql://user:pass@host:3306/db?option=1',
93+
});
94+
});
7995
});

src/core.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,17 @@ export function find(key: string, lines: string[]) {
2929
export function parse(lines: string[]) {
3030
return lines.reduce(
3131
(acc, line) => {
32-
if (!line || line.startsWith('#') || !line.includes('=')) {
32+
const trimmedLine = line.trim();
33+
if (
34+
!trimmedLine ||
35+
trimmedLine.startsWith('#') ||
36+
!trimmedLine.includes('=')
37+
) {
3338
return acc;
3439
}
3540

36-
const [key, value] = line.split('=', 2);
41+
const [key, ...valueParts] = trimmedLine.split('=');
42+
const value = valueParts.join('=');
3743

3844
if (key) {
3945
return { ...acc, [key.trim()]: value.trim() };

0 commit comments

Comments
 (0)