Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
66.67% covered (warning)
66.67%
2 / 3
CRAP
84.21% covered (warning)
84.21%
16 / 19
Markdown
0.00% covered (danger)
0.00%
0 / 1
66.67% covered (warning)
66.67%
2 / 3
5.10
84.21% covered (warning)
84.21%
16 / 19
 __construct
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
4 / 4
 transform
0.00% covered (danger)
0.00%
0 / 1
3.14
75.00% covered (warning)
75.00%
9 / 12
 parse
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
3 / 3
<?php
/**
 * Markdown transformer Helpers
 */
namespace Radic\BladeExtensions\Helpers;
use Caffeinated\Beverage\Str;
use Illuminate\Contracts\Container\Container;
/**
 * Markdown transformer Helpers
 *
 * @package                 Radic\BladeExtensions
 * @subpackage              Helpers
 * @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 Markdown
{
    protected $container;
    protected $renderer;
    /**
     * Markdown constructor.
     *
     * @param \Illuminate\Contracts\Container\Container $container
     */
    public function __construct(Container $container)
    {
        $this->container = $container;
        $class           = $this->container->make('config')->get('blade_extensions.markdown.renderer');
        $this->renderer  = $this->container->make($class);
    }
    /**
     * Removes indentation
     *
     * @param string $text The markdown text
     * @return mixed
     */
    protected function transform($text)
    {
        $firstLine = explode("\n", $text, 1);
        $firstLine = Str::toSpaces($firstLine[ 0 ], 4);
        preg_match('/([\s]*).*/', $firstLine, $firstLineSpacesMatches);
        if (isset($firstLineSpacesMatches[ 1 ])) {
            $spaceMatcher = "";
            for ($i = 0; $i < strlen($firstLineSpacesMatches[ 1 ]); $i++) {
                $spaceMatcher .= "\s";
            }
            $spaceMatcher = '/^' . $spaceMatcher . '(.*)/m';
            $newText      = preg_replace($spaceMatcher, '$1', $text);
            return $newText;
        }
        return $text;
    }
    /**
     * Parses markdown text into html
     *
     * @param string $text the markdown text
     * @return string $newText html
     */
    public function parse($text)
    {
        $text     = $this->transform($text);
        $newText  = $this->renderer->render($text);
        return $newText;
    }
}