public function register(Container $pimple) { // File extensions used to determine whether a URI points to an asset // or an HTML file. $pimple['html_extensions'] = static::$html_extensions; $pimple['asset_extensions'] = static::$asset_extensions; // Matches any URI we think points to an HTML page. $pimple['matcher.html'] = function () use($pimple) { return Matcher::all()->pathExtensionIs($pimple['html_extensions']); }; // Matches any URI we think points to an asset file. $pimple['matcher.asset'] = function () use($pimple) { return Matcher::all()->pathExtensionIs($pimple['asset_extensions']); }; // Matches any URI that is considered "in scope." $pimple['matcher.internal'] = function () use($pimple) { $uri = new Uri($pimple['base_url']); return Matcher::all()->schemeIs($uri->getScheme())->hostIs($uri->getHost())->pathMatches('~^' . preg_quote($uri->getPath(), '~') . '~'); }; // Matches any URI that is both internal and HTML. $pimple['matcher.internal_html'] = function () use($pimple) { return Matcher::all()->add($pimple['matcher.internal'])->add($pimple['matcher.html']); }; // Matches any URI that is both internal and an asset. $pimple['matcher.internal_asset'] = function () use($pimple) { return Matcher::all()->add($pimple['matcher.internal'])->add($pimple['matcher.asset']); }; }
public function register(Container $pimple) { $pimple['normalizer.link'] = function () use($pimple) { return $pimple['normalizer']; }; $pimple['normalizer.image'] = function () use($pimple) { return $pimple['normalizer']; }; $pimple['normalizer.redirect'] = function () use($pimple) { return $pimple['normalizer']; }; $pimple['normalizer.script'] = function () use($pimple) { return $pimple['normalizer']; }; $pimple['normalizer.stylesheet'] = function () use($pimple) { return $pimple['normalizer']; }; $pimple['discoverer.link'] = function () use($pimple) { return new LinkDiscoverer($pimple['normalizer.link']); }; $pimple['discoverer.image'] = function () use($pimple) { return new ImageDiscoverer($pimple['normalizer.image']); }; $pimple['discoverer.script'] = function () use($pimple) { return new ScriptDiscoverer($pimple['normalizer.script']); }; $pimple['discoverer.stylesheet'] = function () use($pimple) { return new StylesheetDiscoverer($pimple['normalizer.stylesheet']); }; $pimple['discoverer.redirect'] = function () use($pimple) { return new RedirectDiscoverer($pimple['normalizer.redirect']); }; $pimple['request_factory.internal_html'] = $pimple->protect(function (UriInterface $uri) use($pimple) { return new Request('GET', $uri); }); $pimple['request_factory.internal_asset'] = $pimple->protect(function (UriInterface $uri) use($pimple) { return new Request('HEAD', $uri); }); $pimple['matcher.internal_html'] = function () use($pimple) { return Matcher::all()->add($pimple['matcher.internal'])->add($pimple['matcher.html']); }; $pimple['matcher.internal_asset'] = function () use($pimple) { return Matcher::all()->add($pimple['matcher.internal'])->add($pimple['matcher.asset']); }; $pimple['recursor.internal_html'] = function () use($pimple) { return new UriRecursor($pimple['matcher.internal_html'], $pimple['request_factory.internal_html']); }; $pimple['recursor.internal_asset'] = function () use($pimple) { return new UriRecursor($pimple['matcher.internal_asset'], $pimple['request_factory.internal_asset']); }; }