MCPcopy Create free account
hub / github.com/BaseXdb/basex / normalize

Method normalize

basex-core/src/main/java/org/basex/io/IOUrl.java:258–287  ·  view source on GitHub ↗

Returns a normalized URL. @param string input URL @return path

(final String string)

Source from the content-addressed store, hash-verified

256 * @return path
257 */
258 private static String normalize(final String string) {
259 final String input = toAscii(string);
260 int i = input.indexOf("://") + 3;
261 if(i == 2) return input;
262
263 final String scheme = input.substring(0, i);
264 String path = input.substring(i), query = "", anchor = "";
265 i = path.indexOf('#');
266 if(i != -1) {
267 anchor = path.substring(i);
268 path = path.substring(0, i);
269 }
270 i = path.indexOf('?');
271 if(i != -1) {
272 query = path.substring(i);
273 path = path.substring(0, i);
274 }
275
276 final StringList segments = new StringList(Strings.split(path, '/'));
277 for(int s = 1; s < segments.size(); s++) {
278 final String segment = segments.get(s);
279 if(segment.equals(".")) {
280 segments.remove(s--);
281 } else if(segment.equals("..") && s > 1) {
282 segments.remove(s--);
283 segments.remove(s--);
284 }
285 }
286 return scheme + String.join("/", segments.finish()) + query + anchor;
287 }
288
289 /**
290 * Converts the host of a URL to ASCII (Punycode) if it contains non-ASCII

Callers 1

IOUrlMethod · 0.95

Calls 10

toAsciiMethod · 0.95
splitMethod · 0.95
sizeMethod · 0.65
getMethod · 0.65
removeMethod · 0.65
indexOfMethod · 0.45
substringMethod · 0.45
equalsMethod · 0.45
joinMethod · 0.45
finishMethod · 0.45

Tested by

no test coverage detected