3 ms·
Parse, don’t validate. If you need a heuristic that accepts non-URL strings as if they were valid URLs, you should convert those non-URL strings to valid URLs
by anderskaseorg 5y ago
Parse, don’t validate. If you need a heuristic that accepts non-URL strings as if they were valid URLs, you should convert those non-URL strings to valid URLs so the rest of your code can just deal with valid URLs.
if (validateURL(url)) {
return url;
} else if (validateURL("http://" + url)) {
return "http://" + url;
} else {
return null;
}
- JadeNB 5y agoI know we're not golfing, but it pains me to see that repetition in the middle. Mightn't we write if (!validateURL(url)) { url = "http://" + url; if (!validateURL(url)) { url = null; } } return url; to snip a small probability of a bug?
- wolfgang42 5y agoI find that branchiness (and mutation of the variable) harder to follow. Personally, I’d just take “parse, don’t validate” to its logical conclusion and go for: const parseUrl = url => validateUrl(url) ? url : null; return parseUrl(url) || parseUrl('http://'+url) || null;