feat(url_resolver): Allow a developer to customize their package prefix

Allow a developer to specify a package prefix where the 'package:' dart urls
will be resolved. By default this will be '/packages' keeping the current
behavior, but allows for flexibility of different environments where a
developer may not control their directory structure.

Closes #3794
This commit is contained in:
Ted Sander 2015-08-22 15:27:43 -07:00
parent 894af28529
commit 9cc1cd29ed
1 changed files with 11 additions and 1 deletions

View File

@ -4,6 +4,16 @@ import 'package:angular2/di.dart' show Injectable;
@Injectable() @Injectable()
class UrlResolver { class UrlResolver {
/// This will be the location where 'package:' Urls will resolve. Default is
/// '/packages'
final String packagePrefix;
const UrlResolver() : packagePrefix = '/packages';
/// Creates a UrlResolver that will resolve 'package:' Urls to a different
/// prefixed location.
const UrlResolver.withUrlPrefix(this.packagePrefix);
/** /**
* Resolves the `url` given the `baseUrl`: * Resolves the `url` given the `baseUrl`:
* - when the `url` is null, the `baseUrl` is returned, * - when the `url` is null, the `baseUrl` is returned,
@ -20,7 +30,7 @@ class UrlResolver {
Uri uri = Uri.parse(url); Uri uri = Uri.parse(url);
if (uri.scheme == 'package') { if (uri.scheme == 'package') {
return '/packages/${uri.path}'; return '$packagePrefix/${uri.path}';
} }
if (uri.isAbsolute) return uri.toString(); if (uri.isAbsolute) return uri.toString();