fix: command parsing quotes
This commit is contained in:
@@ -111,4 +111,64 @@ describe('parseCommand', () => {
|
||||
params: []
|
||||
});
|
||||
});
|
||||
|
||||
it('should parse quoted string with double quotes', () => {
|
||||
const result = parseCommand('place tile "large castle" --x 5');
|
||||
expect(result).toEqual({
|
||||
name: 'place',
|
||||
flags: {},
|
||||
options: { x: '5' },
|
||||
params: ['tile', 'large castle']
|
||||
});
|
||||
});
|
||||
|
||||
it('should parse quoted string with single quotes', () => {
|
||||
const result = parseCommand("place tile 'large castle' --x 5");
|
||||
expect(result).toEqual({
|
||||
name: 'place',
|
||||
flags: {},
|
||||
options: { x: '5' },
|
||||
params: ['tile', 'large castle']
|
||||
});
|
||||
});
|
||||
|
||||
it('should handle escaped quotes', () => {
|
||||
const result = parseCommand('say "hello \\"world\\""');
|
||||
expect(result).toEqual({
|
||||
name: 'say',
|
||||
flags: {},
|
||||
options: {},
|
||||
params: ['hello "world"']
|
||||
});
|
||||
});
|
||||
|
||||
it('should handle escaped backslash', () => {
|
||||
const result = parseCommand('set path "C:\\\\Users"');
|
||||
expect(result).toEqual({
|
||||
name: 'set',
|
||||
flags: {},
|
||||
options: {},
|
||||
params: ['path', 'C:\\Users']
|
||||
});
|
||||
});
|
||||
|
||||
it('should handle mixed quotes', () => {
|
||||
const result = parseCommand('cmd "hello world" \'foo bar\' --flag');
|
||||
expect(result).toEqual({
|
||||
name: 'cmd',
|
||||
flags: { flag: true },
|
||||
options: {},
|
||||
params: ['hello world', 'foo bar']
|
||||
});
|
||||
});
|
||||
|
||||
it('should handle quote in middle of argument', () => {
|
||||
const result = parseCommand('cmd "hello\'s world"');
|
||||
expect(result).toEqual({
|
||||
name: 'cmd',
|
||||
flags: {},
|
||||
options: {},
|
||||
params: ["hello's world"]
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user