Skip to content

Commit 78ff904

Browse files
committed
Added default '/' value for Path.
1 parent d321c77 commit 78ff904

File tree

5 files changed

+14
-10
lines changed

5 files changed

+14
-10
lines changed

c++/inc/url_parser/url_parser.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class Url {
3535
std::string url;
3636
ParsedUrl parsed_url;
3737
const std::regex url_parts = std::regex(
38-
R"(^((?:\w+:\/\/)?[^\/]+\.[^\/]+)((?:\/[^\/?#]*)*)(\?\S*?)?(#\S*)?$)",
38+
R"(^((?:\w+:\/\/)?[^\/]+\.[^\/?#]+)((?:\/?[^\/?#]+)*)(\?\S*?)?(#\S*)?$)",
3939
std::regex_constants::ECMAScript | std::regex_constants::icase);
4040
void remove_all_chars(std::string& target, char remove);
4141
const void parse_url();

c++/src/url_parser/url_parser.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ const void Url::parse_url() {
1919
std::smatch parts;
2020
if (std::regex_match(url, parts, url_parts)) {
2121
parsed_url.domain = parts[1].str();
22-
parsed_url.path = parts[2].str();
22+
if (parts[2].str().size() > 0)
23+
parsed_url.path = parts[2].str();
24+
else
25+
parsed_url.path = "/";
2326
parsed_url.parameter.base_string = parts[3].str();
2427
parsed_url.fragment.base_string = parts[4].str();
2528
}

index.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,8 @@ <h2>Analysis Result:</h2>
220220
<script>
221221
const parseUrl = (url) => {
222222
const RegExp = {
223-
UrlParts: /^((?:https?:\/\/)?[^\/]+\.[^\/]+)((?:\/[^\/?#]*)*)(\?\S*?)?(#\S*)?$/}
223+
UrlParts: /^((?:https?:\/\/)?[^\/]+\.[^\/?#]+)((?:\/?[^\/?#]*)*)(\?\S*?)?(#\S*)?$/
224+
}
224225
url = url.replaceAll('\\', '');
225226
if (RegExp.UrlParts.test(url)) {
226227
const groups = RegExp.UrlParts.exec(url);
@@ -252,7 +253,8 @@ <h2>Analysis Result:</h2>
252253
parameters: {
253254
str: groups[3] || '',
254255
list: parameters_list,
255-
obj: parameters_obj},
256+
obj: parameters_obj
257+
},
256258
fragment: {
257259
str: groups[4] || '',
258260
list: fragment_list,

js/main.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,9 @@ const main = () => {
5151
color.log(content, `${e[0].padStart(maxLength)}`);
5252
console.log();});
5353
console.log();}
54-
if (input == r.fullUrl()) {
55-
color.log(title, "Full URL");
56-
process.stdout.write(":\n- ");
57-
color.log(content, `${r.fullUrl()}\n`);}}
54+
color.log(title, "Full URL");
55+
process.stdout.write(":\n- ");
56+
color.log(content, `${r.fullUrl()}\n`);}
5857

5958
const loadConfigFile = (file) => {
6059
const __dirname = path.dirname(fileURLToPath(import.meta.url));

js/url-parser.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export const parseUrl = (url) => {
22
const RegExp = {
3-
UrlParts: /^((?:https?:\/\/)?[^\/]+\.[^\/]+)((?:\/[^\/?#]*)*)(\?\S*?)?(#\S*)?$/}
3+
UrlParts: /^((?:\w+:\/\/)?[^\/]+\.[^\/?#]+)((?:\/?[^\/?#]*)*)(\?\S*?)?(#\S*)?$/}
44
url = url.replaceAll('\\', '');
55
if (RegExp.UrlParts.test(url)) {
66
const groups = RegExp.UrlParts.exec(url);
@@ -23,7 +23,7 @@ export const parseUrl = (url) => {
2323
return {
2424
parts: {
2525
domain: groups[1],
26-
path: groups[2] || '',
26+
path: groups[2] || '/',
2727
parameters: {
2828
str: groups[3] || '',
2929
list: parameters_list,

0 commit comments

Comments
 (0)