Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
28 / 28
TwbBundleFontAwesome
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
9
100.00% covered (success)
100.00%
28 / 28
 __invoke($sFontAwesome = null, array $aFontAwesomeAttributes = null)
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
3 / 3
 render($sFontAwesome, array $aFontAwesomeAttributes = null)
100.00% covered (success)
100.00%
1 / 1
7
100.00% covered (success)
100.00%
25 / 25
<?php
/**
 * Project: zf2-twb-bundle, File: TwbBundleFontAwesome.php
 * @author Michael Schakulat <michael@fetchit.de>
 * @package zf2-twb-bundle
 */
namespace TwbBundle\View\Helper;
use Zend\Form\View\Helper\AbstractHelper;
/**
 * Class TwbBundleFontAwesome
 * @package TwbBundle\View\Helper
 */
class TwbBundleFontAwesome extends AbstractHelper
{
    /**
     * @var string
     */
    private static $faFormat = '<span %s></span>';
    /**
     * Invoke helper as functor, proxies to {@link render()}.
     * @param string $sFontAwesome
     * @param array $aFontAwesomeAttributes : [optionnal]
     * @return string|\TwbBundle\View\Helper\TwbBundleFontAwesome
     */
    public function __invoke($sFontAwesome = null, array $aFontAwesomeAttributes = null)
    {
        if (!$sFontAwesome) {
            return $this;
        }
        return $this->render($sFontAwesome, $aFontAwesomeAttributes);
    }
    /**
     * Retrieve fontAwesome markup
     * @param string $sFontAwesome
     * @param  array $aFontAwesomeAttributes : [optionnal]
     * @throws \InvalidArgumentException
     * @return string
     */
    public function render($sFontAwesome, array $aFontAwesomeAttributes = null)
    {
        if (!is_scalar($sFontAwesome)) {
            throw new \InvalidArgumentException(
                sprintf(
                    'FontAwesome expects a scalar value, "%s" given',
                    gettype($sFontAwesome)
                )
            );
        }
        if (empty($aFontAwesomeAttributes)) {
            $aFontAwesomeAttributes = array('class' => 'fa');
        } else {
            if (empty($aFontAwesomeAttributes['class'])) {
                $aFontAwesomeAttributes['class'] = 'fa';
            } elseif (!preg_match('/(\s|^)fa(\s|$)/', $aFontAwesomeAttributes['class'])) {
                $aFontAwesomeAttributes['class'] .= ' fa';
            }
        }
        if (strpos('fa-', $sFontAwesome) !== 0) {
            $sFontAwesome = 'fa-' . $sFontAwesome;
        }
        if (!preg_match('/(\s|^)' . preg_quote($sFontAwesome, '/') . '(\s|$)/', $aFontAwesomeAttributes['class'])) {
            $aFontAwesomeAttributes['class'] .= ' ' . $sFontAwesome;
        }
        return sprintf(
            self::$faFormat,
            $this->createAttributesString($aFontAwesomeAttributes)
        );
    }
}