1
+ import { INVALID_PARAM } from "../common/messages.js" ;
2
+
1
3
export const parseInput = ( line ) => {
2
4
const trimmedInput = line . trim ( ) ;
3
5
const [ command ] = trimmedInput . split ( ' ' ) ;
@@ -13,36 +15,20 @@ export const parseInput = (line) => {
13
15
14
16
const separateParams = ( paramsLine ) => {
15
17
let params = [ ] ;
16
-
17
- const lineTrimmed = paramsLine . trim ( ) ;
18
-
19
- if ( ! lineTrimmed . length ) return params ;
20
-
21
- const firstSymbol = lineTrimmed . slice ( 0 , 1 ) ;
22
-
23
- if ( firstSymbol === "'" || firstSymbol === '"' ) {
24
- const paramEnd = lineTrimmed . indexOf ( firstSymbol , 1 ) ;
25
-
26
- if ( paramEnd === - 1 ) {
27
- throw new Error ( 'Invalid param' ) ;
28
- }
29
-
30
- const param = lineTrimmed . slice ( 1 , paramEnd ) ;
31
-
32
- if ( param . includes ( '"' ) || param . includes ( "'" ) ) {
33
- throw new Error ( 'Invalid param' ) ;
34
- }
35
-
36
- const rest = lineTrimmed . slice ( paramEnd + 1 ) ;
18
+ const trimmedLine = paramsLine . trim ( ) ;
19
+ if ( ! trimmedLine . length ) return params ;
20
+ const first = trimmedLine . slice ( 0 , 1 ) ;
21
+ if ( first === "'" || first === '"' ) {
22
+ const end = trimmedLine . indexOf ( first , 1 ) ;
23
+ if ( end === - 1 ) throw new Error ( INVALID_PARAM ) ;
24
+ const param = trimmedLine . slice ( 1 , end ) ;
25
+ if ( param . includes ( '"' ) || param . includes ( "'" ) ) throw new Error ( INVALID_PARAM )
26
+ const rest = trimmedLine . slice ( end + 1 ) ;
37
27
params . push ( param , ...separateParams ( rest ) ) ;
38
28
} else {
39
- const [ param ] = lineTrimmed . split ( ' ' ) ;
40
-
41
- if ( param . includes ( '"' ) || param . includes ( "'" ) ) {
42
- throw new Error ( 'Invalid param' ) ;
43
- }
44
-
45
- params . push ( param , ...separateParams ( lineTrimmed . slice ( param . length ) ) ) ;
29
+ const [ param ] = trimmedLine . split ( ' ' ) ;
30
+ if ( param . includes ( '"' ) || param . includes ( "'" ) ) throw new Error ( INVALID_PARAM ) ;
31
+ params . push ( param , ...separateParams ( trimmedLine . slice ( param . length ) ) ) ;
46
32
}
47
33
48
34
return params ;
0 commit comments