Skip to content

Commit e59d9cd

Browse files
committed
fix: fix getURLParameters method.
1 parent dd06ab6 commit e59d9cd

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

core/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ getURLParameters('name=Adam&surname=Smith') // => { name: 'Adam', surname: "Smi
186186
getURLParameters('mdx:preview:demo12') // => { }
187187
getURLParameters('mdx:preview:demo12&name=Adam&surname=Smith') // => { name: 'Adam', surname: "Smith" }
188188
getURLParameters('mdx:preview:demo12&code=true&boreder=0') // => { code: 'true', boreder: "0" }
189+
getURLParameters('mdx:preview:demo12?code=true&boreder=0') // => { code: 'true', boreder: "0" }
189190
```
190191

191192
```markdown

core/src/utils/index.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,15 @@ import { Options, FUNNAME_PREFIX, CodeBlockItem, CodeBlockData } from '../';
1414
* @param url `name=Adam&surname=Smith`
1515
* @returns
1616
*/
17-
export const getURLParameters = (url: string): Record<string, string> =>
18-
(url.match(/([^?=&]+)(=([^&]*))/g) || []).reduce(
19-
(a: Record<string, string>, v: string) => ((a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1)), a),
20-
{},
21-
);
17+
export const getURLParameters = (url: string): Record<string, string> => {
18+
const regex = /([^?=&]+)=([^&]*)/g;
19+
const params: Record<string, string> = {};
20+
let match;
21+
while ((match = regex.exec(url))) {
22+
params[match[1]] = match[2];
23+
}
24+
return params;
25+
};
2226

2327
export interface MarkdownDataChild extends Node {
2428
lang: string;

test/index.test.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ import { getURLParameters, getMetaId, isMeta } from '../core/src/utils'
33
test('getURLParameters test case', () => {
44
expect(getURLParameters('name=Adam&surname=Smith')).toEqual({ name: 'Adam', surname: "Smith" })
55
expect(getURLParameters('mdx:preview:demo12')).toEqual({ })
6+
expect(getURLParameters('mdx:preview:demo12:')).toEqual({ })
7+
expect(getURLParameters('mdx:preview:demo12:ab=1')).toEqual({ "mdx:preview:demo12:ab": "1" }); // 🔴
8+
expect(getURLParameters('mdx:preview:demo12?name=Adam&surname=Smith')).toEqual({ name: 'Adam', surname: "Smith" })
69
expect(getURLParameters('mdx:preview:demo12&name=Adam&surname=Smith')).toEqual({ name: 'Adam', surname: "Smith" })
710
expect(getURLParameters('mdx:preview:demo12&code=true&boreder=0')).toEqual({ code: 'true', boreder: "0" })
811
});

0 commit comments

Comments
 (0)