From bf68b89c0b1eb530602f8592f54f540382b824b8 Mon Sep 17 00:00:00 2001 From: liuggio Date: Sun, 29 Jun 2014 15:48:58 +0200 Subject: [PATCH] changed the Poser signature --- README.md | 51 ++++++++++++---------------------- spec/PUGX/Poser/PoserSpec.php | 2 +- src/Poser.php | 13 ++++++--- src/Render/RenderInterface.php | 12 ++++++++ src/Render/SvgRender.php | 12 ++++++++ 5 files changed, 52 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index d1b35e9..9f129a9 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,29 @@ PHP badges poser ================ -This is a php library that creates badges, +This is a php library that creates badges like ![badge-poser](badge-poser.svg) and ![I'm a badge](i_m-badge.svg) and ![dark](today-dark.svg), according to [Shields specification](https://github.com/badges/shields#specification). -``` bash - ________________ - |_ _ _| _ _ | _ _ _ _ _ | - |_)(_|(_|(_|(/_ | |_)(_)_\(/_| | - _| |_|______________| +This library is used by https://poser.pugx.org. + +## Use as command +#### 1. Create a project + +``` bash +$ composer create-project badges/poser ~0.1 +$ ln -s poser/bin/poser /usr/local/bin/poser ``` -This library create this: ![badge-poser](badge-poser.svg) and ![I'm a badge](i_m-badge.svg) and ![dark](today-dark.svg)... +#### 2. lunch the command + +Create an image -This library is used by the most used badge creator in php https://poser.pugx.org/ +`$ poser license MIT blue -p "license.svg"` + +Flush an image + +`$ poser license MIT blue` ## Usage as library @@ -29,37 +38,13 @@ This library is used by the most used badge creator in php https://poser.pugx.or use PUGX\Poser\Poser; $render = new SvgRender(); - $poser = new Poser(array('svg' => $render)); + $poser = new Poser(array($render)); echo $poser->generate('license', 'MIT', '428F7E', 'svg'); // or echo $poser->generateFromURI('license-MIT-428F7E.svg'); ``` -## Use in your project as command - -#### 1. Add to composer - -`$ composer require badges/poser ~0.1` - -or create a project - -`$ composer create-project badges/poser ~0.1` - -and make the link - -`$ ln -s poser/bin/poser /usr/local/bin/poser` - -#### 2. lunch the command - -Creating an image - -`$ poser license MIT blue -p "license.svg"` - -Flushing the image - -`$ poser license MIT blue` - ## Encoding Dashes `--` → `-` Dash diff --git a/spec/PUGX/Poser/PoserSpec.php b/spec/PUGX/Poser/PoserSpec.php index d578933..65dfff1 100644 --- a/spec/PUGX/Poser/PoserSpec.php +++ b/spec/PUGX/Poser/PoserSpec.php @@ -11,7 +11,7 @@ class PoserSpec extends ObjectBehavior function let() { $render = new SvgRender(); - $this->beConstructedWith(array('svg' => $render)); + $this->beConstructedWith(array($render)); } function it_is_initializable() diff --git a/src/Poser.php b/src/Poser.php index de4261c..977c57b 100644 --- a/src/Poser.php +++ b/src/Poser.php @@ -16,9 +16,12 @@ class Poser public function __construct($renders) { $this->renders = array(); + if (!is_array($renders)) { + $renders = array($renders); + } - foreach ($renders as $format => $render) { - $this->addFormatRender($format, $render); + foreach ($renders as $render) { + $this->addFormatRender($render); } } @@ -63,9 +66,11 @@ public function validFormats() return array_keys($this->renders); } - private function addFormatRender($format, RenderInterface $render) + private function addFormatRender(RenderInterface $render) { - $this->renders[$format] = $render; + foreach ($render->supportedFormats() as $format) { + $this->renders[$format] = $render; + } } private function getRenderFor($format) diff --git a/src/Render/RenderInterface.php b/src/Render/RenderInterface.php index 65f18d2..60d104a 100644 --- a/src/Render/RenderInterface.php +++ b/src/Render/RenderInterface.php @@ -15,5 +15,17 @@ interface RenderInterface { + /** + * Render a badge. + * + * @param Badge $badge + * + * @return string + */ public function render(Badge $badge); + + /** + * @return array the list of the supported format eg array('svg') + */ + public function supportedFormats(); } diff --git a/src/Render/SvgRender.php b/src/Render/SvgRender.php index 2407ecc..f4bd987 100644 --- a/src/Render/SvgRender.php +++ b/src/Render/SvgRender.php @@ -81,6 +81,18 @@ public function render(Badge $badge) return $this->renderSvg(self::$template, $parameters); } + /** + * Render a badge. + * + * @param Badge $badge + * + * @return string + */ + public function supportedFormats() + { + return array('svg'); + } + private function stringWidth($text) { return $this->textSizeCalculator->calculateWidth($text);