From cbca156450f3dbd31e4d99c8522bea61809bb781 Mon Sep 17 00:00:00 2001 From: liuggio Date: Sun, 29 Jun 2014 16:19:52 +0200 Subject: [PATCH] fixed composer dep --- README.md | 4 ++ composer.json | 2 +- spec/PUGX/Poser/PoserSpec.php | 12 ++--- spec/PUGX/Poser/Render/SvgRenderSpec.php | 11 +--- src/Image.php | 69 ++++++++++++++++++++++++ src/Poser.php | 4 +- src/Render/RenderInterface.php | 2 +- src/Render/SvgRender.php | 21 ++++---- 8 files changed, 92 insertions(+), 33 deletions(-) create mode 100644 src/Image.php diff --git a/README.md b/README.md index c29123e..8a4bbd3 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,10 @@ Flush an image echo $poser->generate('license', 'MIT', '428F7E', 'svg'); // or echo $poser->generateFromURI('license-MIT-428F7E.svg'); + // or + $image = $poser->generate('license', 'MIT', '428F7E', 'svg'); + + echo $image->getFormat(); ``` ## Encoding diff --git a/composer.json b/composer.json index 8f72a94..e49df93 100644 --- a/composer.json +++ b/composer.json @@ -23,7 +23,7 @@ "psr-4": { "PUGX\\Poser\\": "src/" } }, "require": { - "symfony/console": "dev-master" + "symfony/console": "~2" }, "require-dev": { "phpspec/phpspec": "dev-master", diff --git a/spec/PUGX/Poser/PoserSpec.php b/spec/PUGX/Poser/PoserSpec.php index 10ee472..7f91da4 100644 --- a/spec/PUGX/Poser/PoserSpec.php +++ b/spec/PUGX/Poser/PoserSpec.php @@ -40,20 +40,14 @@ function it_should_be_able_to_generate_an_svg_image_from_URI() public function getMatchers() { return array( - 'beAValidSVGImage' => function($subject) { - - $regex = '/^$/'; - $matches = array(); - - return preg_match($regex, $subject, $matches, PREG_OFFSET_CAPTURE, 0); - }, - 'beAValidSVGImageContaining' => function($object, $subject, $status) { + 'beAValidSVGImageContaining' => function($object, $subject, $status) + { $regex = '/^$/'; $matches = array(); return preg_match($regex, $object, $matches, PREG_OFFSET_CAPTURE, 0); - }, + }, ); } } diff --git a/spec/PUGX/Poser/Render/SvgRenderSpec.php b/spec/PUGX/Poser/Render/SvgRenderSpec.php index 4f9f560..d813024 100644 --- a/spec/PUGX/Poser/Render/SvgRenderSpec.php +++ b/spec/PUGX/Poser/Render/SvgRenderSpec.php @@ -30,15 +30,8 @@ public function getMatchers() $regex = '/^$/'; $matches = array(); - return preg_match($regex, $subject, $matches, PREG_OFFSET_CAPTURE, 0); - }, - 'beAValidSVGImageContaining' => function($object, $subject, $status) { - - $regex = '/^$/'; - $matches = array(); - - return preg_match($regex, $object, $matches, PREG_OFFSET_CAPTURE, 0); - }, + return preg_match($regex, (string) $subject, $matches, PREG_OFFSET_CAPTURE, 0); + } ); } } \ No newline at end of file diff --git a/src/Image.php b/src/Image.php new file mode 100644 index 0000000..517478a --- /dev/null +++ b/src/Image.php @@ -0,0 +1,69 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace PUGX\Poser; + +/** + * Class Image, an Image value Object + * + * @author Claudio D'Alicandro + * @author Giulio De Donato + */ +class Image +{ + /** + * @var string $content + */ + private $content; + /** + * @var string $format + */ + private $format; + + /** + * @param string $content + * @param string $format + */ + private function __construct($content, $format) + { + $this->content = $content; + $this->format = $format; + } + + /** + * Returns the image content as binary string + */ + public function __toString() + { + return $this->content; + } + + /** + * Factory method + * + * @param string $content + * @param string $format + * + * @return Image + */ + public static function createFromString($content, $format) + { + return new self($content, $format); + } + + /** + * @return string + */ + public function getFormat() + { + return $this->format; + } +} diff --git a/src/Poser.php b/src/Poser.php index 977c57b..ed1ec5e 100644 --- a/src/Poser.php +++ b/src/Poser.php @@ -33,7 +33,7 @@ public function __construct($renders) * @param $color * @param $format * - * @return string + * @return Image */ public function generate($subject, $status, $color, $format) { @@ -47,7 +47,7 @@ public function generate($subject, $status, $color, $format) * eg license-MIT-blue.svg or I_m-liuggio-yellow.svg. * * @param $string - * @return mixed + * @return Image */ public function generateFromURI($string) { diff --git a/src/Render/RenderInterface.php b/src/Render/RenderInterface.php index 60d104a..b27d78e 100644 --- a/src/Render/RenderInterface.php +++ b/src/Render/RenderInterface.php @@ -20,7 +20,7 @@ interface RenderInterface * * @param Badge $badge * - * @return string + * @return \PUGX\Poser\Image */ public function render(Badge $badge); diff --git a/src/Render/SvgRender.php b/src/Render/SvgRender.php index f4bd987..bc04a04 100644 --- a/src/Render/SvgRender.php +++ b/src/Render/SvgRender.php @@ -14,7 +14,7 @@ use PUGX\Poser\Badge; use PUGX\Poser\Calculator\TextSizeCalculatorInterface; use PUGX\Poser\Calculator\GDTextSizeCalculator; - +use PUGX\Poser\Image; /** * Class SvgGenerator * @@ -24,9 +24,9 @@ class SvgRender implements RenderInterface { const VENDOR_COLOR = '#555'; - private $textSizeCalculator; - private static $template = ' + private static $template = << @@ -43,7 +43,8 @@ class SvgRender implements RenderInterface {{ value }} {{ value }} -'; + +EOF; /** * Constructor. @@ -78,15 +79,13 @@ public function render(Badge $badge) $parameters['vendorStartPosition'] = round($parameters['vendorWidth'] / 2, 1) + 1; $parameters['valueStartPosition'] = $parameters['vendorWidth'] + round($parameters['valueWidth'] / 2, 1) - 1; - return $this->renderSvg(self::$template, $parameters); + return $this->renderSvg(self::$template, $parameters, $badge->getFormat()); } /** - * Render a badge. - * - * @param Badge $badge + * A list of all supported formats. * - * @return string + * @return array */ public function supportedFormats() { @@ -98,12 +97,12 @@ private function stringWidth($text) return $this->textSizeCalculator->calculateWidth($text); } - private function renderSvg($render, $parameters) + private function renderSvg($render, $parameters, $format) { foreach ($parameters as $key => $variable) { $render = str_replace(sprintf('{{ %s }}', $key), $variable, $render); } - return $render; + return Image::createFromString($render, $format); } }