| // Copyright 2014 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| /// Extracts the pathname part of a full [url]. | |
| /// | |
| /// Example: for the url `http://example.com/foo`, the extracted pathname will | |
| /// be `/foo`. | |
| String extractPathname(String url) { | |
| return ensureLeadingSlash(Uri.parse(url).path); | |
| } | |
| /// Checks that [baseHref] is set. | |
| /// | |
| /// Throws an exception otherwise. | |
| String checkBaseHref(String? baseHref) { | |
| if (baseHref == null) { | |
| throw Exception('Please add a <base> element to your index.html'); | |
| } | |
| if (!baseHref.endsWith('/')) { | |
| throw Exception('The base href has to end with a "/" to work correctly'); | |
| } | |
| return baseHref; | |
| } | |
| /// Prepends a forward slash to [path] if it doesn't start with one already. | |
| /// | |
| /// Returns [path] unchanged if it already starts with a forward slash. | |
| String ensureLeadingSlash(String path) { | |
| if (!path.startsWith('/')) { | |
| return '/$path'; | |
| } | |
| return path; | |
| } | |
| /// Removes the trailing forward slash from [path] if any. | |
| String stripTrailingSlash(String path) { | |
| if (path.endsWith('/')) { | |
| return path.substring(0, path.length - 1); | |
| } | |
| return path; | |
| } |