Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
75.00% covered (warning)
75.00%
3 / 4
CRAP
97.92% covered (success)
97.92%
47 / 48
BladeExtensionsServiceProvider
0.00% covered (danger)
0.00%
0 / 1
75.00% covered (warning)
75.00%
3 / 4
9
97.92% covered (success)
97.92%
47 / 48
 boot
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
18 / 18
 anonymous function
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
5 / 5
 register
0.00% covered (danger)
0.00%
0 / 1
4.00
94.12% covered (success)
94.12%
16 / 17
 provides
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
5 / 5
<?php
/**
 * A laravel service provider to register the class into the the IoC container
 */
namespace Radic\BladeExtensions;
use Caffeinated\Beverage\ServiceProvider;
use Exception;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\View\Engines\CompilerEngine;
use Radic\BladeExtensions\Compilers\MarkdownCompiler;
use Radic\BladeExtensions\Directives\AssignmentDirectives;
use Radic\BladeExtensions\Directives\DebugDirectives;
use Radic\BladeExtensions\Directives\EmbeddingDirectives;
use Radic\BladeExtensions\Directives\ForeachDirectives;
use Radic\BladeExtensions\Directives\MacroDirectives;
use Radic\BladeExtensions\Directives\MarkdownDirectives;
use Radic\BladeExtensions\Directives\MinifyDirectives;
use Radic\BladeExtensions\Engines\BladeMarkdownEngine;
use Radic\BladeExtensions\Engines\PhpMarkdownEngine;
use Radic\BladeExtensions\Renderers\BladeStringRenderer;
/**
 * A laravel service provider to register the class into the the IoC container
 *
 * @package        Radic\BladeExtensions
 * @version        2.1.0
 * @author         Robin Radic
 * @license        MIT License - http://radic.mit-license.org
 * @copyright      2011-2015, Robin Radic
 * @link           http://robin.radic.nl/blade-extensions
 *
 */
class BladeExtensionsServiceProvider extends ServiceProvider
{
    /** {@inheritDoc} */
    protected $configFiles = [ 'blade_extensions' ];
    /**
     * {@inheritDoc}
     */
    protected $dir = __DIR__;
    protected $providers = [ \Caffeinated\Beverage\BeverageServiceProvider::class ];
    protected $provides = [ 'blade.helpers', 'blade.string' ];
    protected $bindings = [
        'blade.string' => BladeStringRenderer::class
    ];
    protected $singletons = [
        'blade.helpers' => Helpers\HelperRepository::class
    ];
    /** {@inheritDoc} */
    public function boot()
    {
        /** @var \Illuminate\Foundation\Application $app */
        $app = parent::boot();
        $config = array_dot($this->app['config']['blade_extensions']);
        if ($config['markdown.enabled']) {
            $view     = $app->make('view');
            $compiler = $app->make('markdown.compiler');
            $markdown = $app->make('markdown');
            $blade    = $app->make('blade.compiler');
            $view->getEngineResolver()->register('md', function () use ($compiler) {
                return new CompilerEngine($compiler);
            });
            $view->addExtension('md', 'md');
            $view->getEngineResolver()->register('phpmd', function () use ($markdown) {
                return new PhpMarkdownEngine($markdown);
            });
            $view->addExtension('md.php', 'phpmd');
            $view->getEngineResolver()->register('blademd', function () use ($blade, $markdown) {
                return new BladeMarkdownEngine($blade, $markdown);
            });
            $view->addExtension('md.blade.php', 'blademd');
        }
    }
    /** {@inheritDoc} */
    public function register()
    {
        /** @var \Illuminate\Foundation\Application $app */
        $app = parent::register();
        $config = array_dot($this->app['config']['blade_extensions']);
        if ($config['example_views'] === true) {
            $this->viewDirs = [ 'views' => 'blade-ext' ];
        }
        AssignmentDirectives::attach($app);
        DebugDirectives::attach($app);
        ForeachDirectives::attach($app);
        EmbeddingDirectives::attach($app);
        MacroDirectives::attach($app);
        MinifyDirectives::attach($app);
        # Optional markdown compiler, engines and directives
        if ($config['markdown.enabled']) {
            if (! class_exists($config['markdown.renderer'])) {
                throw new Exception('The configured markdown renderer class does not exist');
            }
            $app->bind('Radic\BladeExtensions\Contracts\MarkdownRenderer', $config['markdown.renderer']);
            $app->singleton('markdown', function (Application $app) {
                return $app->make('Radic\BladeExtensions\Contracts\MarkdownRenderer');
            });
            $app->singleton('markdown.compiler', function (Application $app) {
                $markdownRenderer = $app->make('markdown');
                $files            = $app->make('files');
                $storagePath      = $app['config']->get('view.compiled');
                return new MarkdownCompiler($markdownRenderer, $files, $storagePath);
            });
            MarkdownDirectives::attach($app);
        }
    }
    /**
     * @inheritDoc
     */
    public function provides()
    {
        $p = parent::provides();
        if ($this->app['config']['blade_extensions.markdown.enabled']) {
            $p = array_merge($p, [ 'markdown', 'markdown.compiler' ]);
        }
        return $p;
    }
}