diff --git a/lib/Sabberworm/CSS/CSSList/AtRuleBlockList.php b/lib/Sabberworm/CSS/CSSList/AtRuleBlockList.php index 24e79f02..dbcc99c6 100644 --- a/lib/Sabberworm/CSS/CSSList/AtRuleBlockList.php +++ b/lib/Sabberworm/CSS/CSSList/AtRuleBlockList.php @@ -8,20 +8,37 @@ * A BlockList constructed by an unknown @-rule. @media rules are rendered into AtRuleBlockList objects. */ class AtRuleBlockList extends CSSBlockList implements AtRule { - + /** + * @var string + */ private $sType; + + /** + * @var string + */ private $sArgs; + /** + * @param string $sType + * @param string $sArgs + * @param int $iLineNo + */ public function __construct($sType, $sArgs = '', $iLineNo = 0) { parent::__construct($iLineNo); $this->sType = $sType; $this->sArgs = $sArgs; } + /** + * @return string + */ public function atRuleName() { return $this->sType; } + /** + * @return string + */ public function atRuleArgs() { return $this->sArgs; } @@ -30,6 +47,9 @@ public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { $sArgs = $this->sArgs; if($sArgs) { diff --git a/lib/Sabberworm/CSS/CSSList/CSSList.php b/lib/Sabberworm/CSS/CSSList/CSSList.php index 74336383..a58fda50 100644 --- a/lib/Sabberworm/CSS/CSSList/CSSList.php +++ b/lib/Sabberworm/CSS/CSSList/CSSList.php @@ -25,11 +25,24 @@ * Also, it may contain Import and Charset objects stemming from @-rules. */ abstract class CSSList implements Renderable, Commentable { - + /** + * @var array + */ protected $aComments; + + /** + * @var array + */ protected $aContents; + + /** + * @var int + */ protected $iLineNo; + /** + * @param int $iLineNo + */ public function __construct($iLineNo = 0) { $this->aComments = array(); $this->aContents = array(); @@ -195,7 +208,7 @@ public function getLineNo() { /** * Prepend item to list of contents. * - * @param object $oItem Item. + * @param RuleSet|Import|Charset|CSSList $oItem Item. */ public function prepend($oItem) { array_unshift($this->aContents, $oItem); @@ -204,7 +217,7 @@ public function prepend($oItem) { /** * Append item to list of contents. * - * @param object $oItem Item. + * @param RuleSet|Import|Charset|CSSList $oItem Item. */ public function append($oItem) { $this->aContents[] = $oItem; @@ -237,6 +250,7 @@ public function remove($oItemToRemove) { /** * Replaces an item from the CSS list. + * * @param RuleSet|Import|Charset|CSSList $oItemToRemove May be a RuleSet (most likely a DeclarationBlock), a Import, a Charset or another CSSList (most likely a MediaQuery) */ public function replace($oOldItem, $mNewItem) { @@ -254,7 +268,7 @@ public function replace($oOldItem, $mNewItem) { /** * Set the contents. - * @param array $aContents Objects to set as content. + * @param array $aContents Objects to set as content. */ public function setContents(array $aContents) { $this->aContents = array(); @@ -300,6 +314,9 @@ public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { $sResult = ''; $bIsFirst = true; @@ -330,12 +347,15 @@ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { return $sResult; } - + /** * Return true if the list can not be further outdented. Only important when rendering. */ public abstract function isRootList(); + /** + * @return array + */ public function getContents() { return $this->aContents; } diff --git a/lib/Sabberworm/CSS/CSSList/Document.php b/lib/Sabberworm/CSS/CSSList/Document.php index 1658aee8..8abcb358 100644 --- a/lib/Sabberworm/CSS/CSSList/Document.php +++ b/lib/Sabberworm/CSS/CSSList/Document.php @@ -16,6 +16,13 @@ public function __construct($iLineNo = 0) { parent::__construct($iLineNo); } + /** + * @param ParserState $oParserState + * + * @return Document + * + * @throws \Sabberworm\CSS\Parsing\SourceException + */ public static function parse(ParserState $oParserState) { $oDocument = new Document($oParserState->currentLine()); CSSList::parseList($oParserState, $oDocument); @@ -95,7 +102,14 @@ public function createShorthands() { } } - // Override render() to make format argument optional + + /** + * Override render() to make format argument optional + * + * @param \Sabberworm\CSS\OutputFormat|null $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat = null) { if($oOutputFormat === null) { $oOutputFormat = new \Sabberworm\CSS\OutputFormat(); diff --git a/lib/Sabberworm/CSS/CSSList/KeyFrame.php b/lib/Sabberworm/CSS/CSSList/KeyFrame.php index 0334b1b3..d788be98 100644 --- a/lib/Sabberworm/CSS/CSSList/KeyFrame.php +++ b/lib/Sabberworm/CSS/CSSList/KeyFrame.php @@ -5,8 +5,14 @@ use Sabberworm\CSS\Property\AtRule; class KeyFrame extends CSSList implements AtRule { - + /** + * @var string|null + */ private $vendorKeyFrame; + + /** + * @var string|null + */ private $animationName; public function __construct($iLineNo = 0) { @@ -35,6 +41,11 @@ public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @param \Sabberworm\CSS\OutputFormat $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { $sResult = "@{$this->vendorKeyFrame} {$this->animationName}{$oOutputFormat->spaceBeforeOpeningBrace()}{"; $sResult .= parent::render($oOutputFormat); @@ -46,10 +57,16 @@ public function isRootList() { return false; } + /** + * @return string|null + */ public function atRuleName() { return $this->vendorKeyFrame; } + /** + * @return string|null + */ public function atRuleArgs() { return $this->animationName; } diff --git a/lib/Sabberworm/CSS/Parser.php b/lib/Sabberworm/CSS/Parser.php index 2520cb34..7714a31e 100644 --- a/lib/Sabberworm/CSS/Parser.php +++ b/lib/Sabberworm/CSS/Parser.php @@ -9,6 +9,9 @@ * Parser class parses CSS from text into a data structure. */ class Parser { + /** + * @var ParserState + */ private $oParserState; /** @@ -34,8 +37,12 @@ public function getCharset() { $this->oParserState->getCharset(); } + /** + * @return Document + * + * @throws Parsing\SourceException + */ public function parse() { return Document::parse($this->oParserState); } - } diff --git a/lib/Sabberworm/CSS/Property/AtRule.php b/lib/Sabberworm/CSS/Property/AtRule.php index b20c8c6e..aaeadb33 100644 --- a/lib/Sabberworm/CSS/Property/AtRule.php +++ b/lib/Sabberworm/CSS/Property/AtRule.php @@ -10,7 +10,14 @@ interface AtRule extends Renderable, Commentable { const BLOCK_RULES = 'media/document/supports/region-style/font-feature-values'; // …and more font-specific ones (to be used inside font-feature-values) const SET_RULES = 'font-face/counter-style/page/swash/styleset/annotation'; - + + /** + * @return string|null + */ public function atRuleName(); + + /** + * @return string|null + */ public function atRuleArgs(); } \ No newline at end of file diff --git a/lib/Sabberworm/CSS/Property/CSSNamespace.php b/lib/Sabberworm/CSS/Property/CSSNamespace.php index 7c0dee15..cf75de2e 100644 --- a/lib/Sabberworm/CSS/Property/CSSNamespace.php +++ b/lib/Sabberworm/CSS/Property/CSSNamespace.php @@ -10,7 +10,7 @@ class CSSNamespace implements AtRule { private $sPrefix; private $iLineNo; protected $aComments; - + public function __construct($mUrl, $sPrefix = null, $iLineNo = 0) { $this->mUrl = $mUrl; $this->sPrefix = $sPrefix; @@ -29,10 +29,15 @@ public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @param \Sabberworm\CSS\OutputFormat $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { return '@namespace '.($this->sPrefix === null ? '' : $this->sPrefix.' ').$this->mUrl->render($oOutputFormat).';'; } - + public function getUrl() { return $this->mUrl; } @@ -49,10 +54,16 @@ public function setPrefix($sPrefix) { $this->sPrefix = $sPrefix; } + /** + * @return string + */ public function atRuleName() { return 'namespace'; } + /** + * @return array + */ public function atRuleArgs() { $aResult = array($this->mUrl); if($this->sPrefix) { diff --git a/lib/Sabberworm/CSS/Property/Charset.php b/lib/Sabberworm/CSS/Property/Charset.php index 61c6ebc5..65dabc8a 100644 --- a/lib/Sabberworm/CSS/Property/Charset.php +++ b/lib/Sabberworm/CSS/Property/Charset.php @@ -10,11 +10,25 @@ * • Must not appear more than once. */ class Charset implements AtRule { - + /** + * @var string + */ private $sCharset; + + /** + * @var int + */ protected $iLineNo; + + /** + * @var array + */ protected $aComment; + /** + * @param string $sCharset + * @param int $iLineNo + */ public function __construct($sCharset, $iLineNo = 0) { $this->sCharset = $sCharset; $this->iLineNo = $iLineNo; @@ -40,14 +54,25 @@ public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @param \Sabberworm\CSS\OutputFormat $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { return "@charset {$this->sCharset->render($oOutputFormat)};"; } + /** + * @return string + */ public function atRuleName() { return 'charset'; } + /** + * @return string + */ public function atRuleArgs() { return $this->sCharset; } @@ -63,4 +88,4 @@ public function getComments() { public function setComments(array $aComments) { $this->aComments = $aComments; } -} \ No newline at end of file +} diff --git a/lib/Sabberworm/CSS/Property/Import.php b/lib/Sabberworm/CSS/Property/Import.php index 4d40f5a0..162ba206 100644 --- a/lib/Sabberworm/CSS/Property/Import.php +++ b/lib/Sabberworm/CSS/Property/Import.php @@ -8,11 +8,31 @@ * Class representing an @import rule. */ class Import implements AtRule { + /** + * @var URL + */ private $oLocation; + + /** + * @var string + */ private $sMediaQuery; + + /** + * @var int + */ protected $iLineNo; + + /** + * @var array + */ protected $aComments; - + + /** + * @param URL $oLocation + * @param string $sMediaQuery + * @param int $iLineNo + */ public function __construct(URL $oLocation, $sMediaQuery, $iLineNo = 0) { $this->oLocation = $oLocation; $this->sMediaQuery = $sMediaQuery; @@ -27,26 +47,37 @@ public function getLineNo() { return $this->iLineNo; } - public function setLocation($oLocation) { + public function setLocation($oLocation) { $this->oLocation = $oLocation; } public function getLocation() { return $this->oLocation; } - + public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @param \Sabberworm\CSS\OutputFormat $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { return "@import ".$this->oLocation->render($oOutputFormat).($this->sMediaQuery === null ? '' : ' '.$this->sMediaQuery).';'; } + /** + * @return string + */ public function atRuleName() { return 'import'; } + /** + * @return array + */ public function atRuleArgs() { $aResult = array($this->oLocation); if($this->sMediaQuery) { diff --git a/lib/Sabberworm/CSS/Renderable.php b/lib/Sabberworm/CSS/Renderable.php index 3ac06652..862580c5 100644 --- a/lib/Sabberworm/CSS/Renderable.php +++ b/lib/Sabberworm/CSS/Renderable.php @@ -4,6 +4,13 @@ interface Renderable { public function __toString(); + + /** + * @param OutputFormat $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat); + public function getLineNo(); } \ No newline at end of file diff --git a/lib/Sabberworm/CSS/Rule/Rule.php b/lib/Sabberworm/CSS/Rule/Rule.php index 306bd35d..55f89c11 100644 --- a/lib/Sabberworm/CSS/Rule/Rule.php +++ b/lib/Sabberworm/CSS/Rule/Rule.php @@ -209,6 +209,11 @@ public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @param \Sabberworm\CSS\OutputFormat $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { $sResult = "{$this->sRule}:{$oOutputFormat->spaceAfterRuleName()}"; if ($this->mValue instanceof Value) { //Can also be a ValueList diff --git a/lib/Sabberworm/CSS/RuleSet/AtRuleSet.php b/lib/Sabberworm/CSS/RuleSet/AtRuleSet.php index a1042a95..9b892ae3 100644 --- a/lib/Sabberworm/CSS/RuleSet/AtRuleSet.php +++ b/lib/Sabberworm/CSS/RuleSet/AtRuleSet.php @@ -8,20 +8,37 @@ * A RuleSet constructed by an unknown @-rule. @font-face rules are rendered into AtRuleSet objects. */ class AtRuleSet extends RuleSet implements AtRule { - + /** + * @var string + */ private $sType; + + /** + * @var string + */ private $sArgs; + /** + * @param string $sType + * @param string $sArgs + * @param int $iLineNo + */ public function __construct($sType, $sArgs = '', $iLineNo = 0) { parent::__construct($iLineNo); $this->sType = $sType; $this->sArgs = $sArgs; } + /** + * @return string + */ public function atRuleName() { return $this->sType; } + /** + * @return string + */ public function atRuleArgs() { return $this->sArgs; } @@ -30,6 +47,11 @@ public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @param \Sabberworm\CSS\OutputFormat $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { $sArgs = $this->sArgs; if($sArgs) { diff --git a/lib/Sabberworm/CSS/RuleSet/DeclarationBlock.php b/lib/Sabberworm/CSS/RuleSet/DeclarationBlock.php index 20fab0d9..c3bcdd07 100644 --- a/lib/Sabberworm/CSS/RuleSet/DeclarationBlock.php +++ b/lib/Sabberworm/CSS/RuleSet/DeclarationBlock.php @@ -20,7 +20,9 @@ * Declaration blocks usually appear directly inside a Document or another CSSList (mostly a MediaQuery). */ class DeclarationBlock extends RuleSet { - + /** + * @var array + */ private $aSelectors; public function __construct($iLineNo = 0) { @@ -118,7 +120,7 @@ public function setSelector($mSelector, $oList = NULL) { /** * Get selectors. * - * @return Selector[] Selectors. + * @return array Selectors. */ public function getSelectors() { return $this->aSelectors; @@ -142,7 +144,7 @@ public function expandShorthands() { public function createShorthands() { $this->createBackgroundShorthand(); $this->createDimensionsShorthand(); - // border must be shortened after dimensions + // border must be shortened after dimensions $this->createBorderShorthand(); $this->createFontShorthand(); $this->createListStyleShorthand(); @@ -501,7 +503,7 @@ public function createBorderShorthand() { /* * Looks for long format CSS dimensional properties - * (margin, padding, border-color, border-style and border-width) + * (margin, padding, border-color, border-style and border-width) * and converts them into shorthand CSS properties. * */ @@ -556,7 +558,7 @@ public function createDimensionsShorthand() { $oNewRule->addValue($aValues['bottom']); } } else { - // No sides are equal + // No sides are equal $oNewRule->addValue($aValues['top']); $oNewRule->addValue($aValues['left']); $oNewRule->addValue($aValues['bottom']); @@ -571,8 +573,8 @@ public function createDimensionsShorthand() { } /** - * Looks for long format CSS font properties (e.g. font-weight) and - * tries to convert them into a shorthand CSS font property. + * Looks for long format CSS font properties (e.g. font-weight) and + * tries to convert them into a shorthand CSS font property. * At least font-size AND font-family must be present in order to create a shorthand declaration. * */ public function createFontShorthand() { @@ -651,6 +653,13 @@ public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @param \Sabberworm\CSS\OutputFormat $oOutputFormat + * + * @return string + * + * @throws OutputException + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { if(count($this->aSelectors) === 0) { // If all the selectors have been removed, this declaration block becomes invalid diff --git a/lib/Sabberworm/CSS/RuleSet/RuleSet.php b/lib/Sabberworm/CSS/RuleSet/RuleSet.php index f63a3f16..79bfcd04 100644 --- a/lib/Sabberworm/CSS/RuleSet/RuleSet.php +++ b/lib/Sabberworm/CSS/RuleSet/RuleSet.php @@ -96,10 +96,13 @@ public function addRule(Rule $oRule, Rule $oSibling = null) { /** * Returns all rules matching the given rule name - * @param (null|string|Rule) $mRule pattern to search for. If null, returns all rules. if the pattern ends with a dash, all rules starting with the pattern are returned as well as one matching the pattern with the dash excluded. passing a Rule behaves like calling getRules($mRule->getRule()). + * + * @param null|string|Rule $mRule pattern to search for. If null, returns all rules. if the pattern ends with a dash, all rules starting with the pattern are returned as well as one matching the pattern with the dash excluded. passing a Rule behaves like calling getRules($mRule->getRule()). + * * @example $oRuleSet->getRules('font-') //returns an array of all rules either beginning with font- or matching font. * @example $oRuleSet->getRules('font') //returns array(0 => $oRule, …) or array(). - * @return Rule[] Rules. + * + * @return array Rules. */ public function getRules($mRule = null) { if ($mRule instanceof Rule) { @@ -175,6 +178,11 @@ public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @param \Sabberworm\CSS\OutputFormat $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { $sResult = ''; $bIsFirst = true; @@ -195,7 +203,7 @@ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { $sResult .= $sRendered; } } - + if(!$bIsFirst) { // Had some output $sResult .= $oOutputFormat->spaceAfterRules(); diff --git a/lib/Sabberworm/CSS/Value/CSSFunction.php b/lib/Sabberworm/CSS/Value/CSSFunction.php index 941df236..28775505 100644 --- a/lib/Sabberworm/CSS/Value/CSSFunction.php +++ b/lib/Sabberworm/CSS/Value/CSSFunction.php @@ -32,6 +32,11 @@ public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @param \Sabberworm\CSS\OutputFormat $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { $aArguments = parent::render($oOutputFormat); return "{$this->sName}({$aArguments})"; diff --git a/lib/Sabberworm/CSS/Value/CSSString.php b/lib/Sabberworm/CSS/Value/CSSString.php index 9f9c050e..8ab5b7d8 100644 --- a/lib/Sabberworm/CSS/Value/CSSString.php +++ b/lib/Sabberworm/CSS/Value/CSSString.php @@ -57,6 +57,11 @@ public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @param \Sabberworm\CSS\OutputFormat $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { $sString = addslashes($this->sString); $sString = str_replace("\n", '\A', $sString); diff --git a/lib/Sabberworm/CSS/Value/CalcRuleValueList.php b/lib/Sabberworm/CSS/Value/CalcRuleValueList.php index bde8a9d3..512ee546 100644 --- a/lib/Sabberworm/CSS/Value/CalcRuleValueList.php +++ b/lib/Sabberworm/CSS/Value/CalcRuleValueList.php @@ -7,6 +7,11 @@ public function __construct($iLineNo = 0) { parent::__construct(array(), ',', $iLineNo); } + /** + * @param \Sabberworm\CSS\OutputFormat $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { return $oOutputFormat->implode(' ', $this->aComponents); } diff --git a/lib/Sabberworm/CSS/Value/Color.php b/lib/Sabberworm/CSS/Value/Color.php index 5ff44699..0c21665c 100644 --- a/lib/Sabberworm/CSS/Value/Color.php +++ b/lib/Sabberworm/CSS/Value/Color.php @@ -96,6 +96,11 @@ public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @param \Sabberworm\CSS\OutputFormat $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { // Shorthand RGB color values if($oOutputFormat->getRGBHashNotation() && implode('', array_keys($this->aComponents)) === 'rgb') { diff --git a/lib/Sabberworm/CSS/Value/LineName.php b/lib/Sabberworm/CSS/Value/LineName.php index 5376a9be..677e80e8 100644 --- a/lib/Sabberworm/CSS/Value/LineName.php +++ b/lib/Sabberworm/CSS/Value/LineName.php @@ -36,6 +36,11 @@ public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @param \Sabberworm\CSS\OutputFormat $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { return '[' . parent::render(\Sabberworm\CSS\OutputFormat::createCompact()) . ']'; } diff --git a/lib/Sabberworm/CSS/Value/Size.php b/lib/Sabberworm/CSS/Value/Size.php index 8490cc35..730f2dd4 100644 --- a/lib/Sabberworm/CSS/Value/Size.php +++ b/lib/Sabberworm/CSS/Value/Size.php @@ -112,6 +112,11 @@ public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @param \Sabberworm\CSS\OutputFormat $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { $l = localeconv(); $sPoint = preg_quote($l['decimal_point'], '/'); diff --git a/lib/Sabberworm/CSS/Value/URL.php b/lib/Sabberworm/CSS/Value/URL.php index b4f37e16..00a741ee 100644 --- a/lib/Sabberworm/CSS/Value/URL.php +++ b/lib/Sabberworm/CSS/Value/URL.php @@ -42,6 +42,11 @@ public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @param \Sabberworm\CSS\OutputFormat $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { return "url({$this->oURL->render($oOutputFormat)})"; } diff --git a/lib/Sabberworm/CSS/Value/ValueList.php b/lib/Sabberworm/CSS/Value/ValueList.php index 5c3d0e4f..5bfc0ba9 100644 --- a/lib/Sabberworm/CSS/Value/ValueList.php +++ b/lib/Sabberworm/CSS/Value/ValueList.php @@ -40,6 +40,11 @@ public function __toString() { return $this->render(new \Sabberworm\CSS\OutputFormat()); } + /** + * @param \Sabberworm\CSS\OutputFormat $oOutputFormat + * + * @return string + */ public function render(\Sabberworm\CSS\OutputFormat $oOutputFormat) { return $oOutputFormat->implode($oOutputFormat->spaceBeforeListArgumentSeparator($this->sSeparator) . $this->sSeparator . $oOutputFormat->spaceAfterListArgumentSeparator($this->sSeparator), $this->aComponents); }