<?php /* SVN FILE: $Id: SassCompressedRenderer.php 118 2010-09-21 09:45:11Z chris.l.yates@gmail.com $ */ /**

* SassCompressedRenderer class file.
* @author                      Chris Yates <chris.l.yates@gmail.com>
* @copyright   Copyright (c) 2010 PBM Web Development
* @license                     http://phamlp.googlecode.com/files/license.txt
* @package                     PHamlP
* @subpackage  Sass.renderers
*/

/**

* SassCompressedRenderer class.
* Compressed style takes up the minimum amount of space possible, having no
* whitespace except that necessary to separate selectors and a newline at the
* end of the file. It's not meant to be human-readable
* @package                     PHamlP
* @subpackage  Sass.renderers
*/

class SassCompressedRenderer extends SassRenderer {

/**
 * Renders the brace between the selectors and the properties
 * @return string the brace between the selectors and the properties
 */
protected function between() {
  return '{';
}

/**
 * Renders the brace at the end of the rule
 * @return string the brace between the rule and its properties
 */
protected function end() {
  return '}';
}

/**
 * Returns the indent string for the node
 * @param SassNode the node to return the indent string for
 * @return string the indent string for this SassNode
 */
protected function getIndent($node) {
        return '';
}

/**
 * Renders a comment.
 * @param SassNode the node being rendered
 * @return string the rendered comment
 */
public function renderComment($node) {
  return '';
}

/**
 * Renders a directive.
 * @param SassNode the node being rendered
 * @param array properties of the directive
 * @return string the rendered directive
 */
public function renderDirective($node, $properties) {
        return $node->directive . $this->between() . $this->renderProperties($node, $properties) . $this->end();
}

/**
 * Renders properties.
 * @param SassNode the node being rendered
 * @param array properties to render
 * @return string the rendered properties
 */
public function renderProperties($node, $properties) {
        return join('', $properties);
}

/**
 * Renders a property.
 * @param SassNode the node being rendered
 * @return string the rendered property
 */
public function renderProperty($node) {
        return "{$node->name}:{$node->value};";
}

/**
 * Renders a rule.
 * @param SassNode the node being rendered
 * @param array rule properties
 * @param string rendered rules
 * @return string the rendered directive
 */
public function renderRule($node, $properties, $rules) {
        return (!empty($properties) ? $this->renderSelectors($node) . $this->between() . $this->renderProperties($node, $properties) . $this->end() : '') . $rules;
}

/**
 * Renders the rule's selectors
 * @param SassNode the node being rendered
 * @return string the rendered selectors
 */
protected function renderSelectors($node) {
        return join(',', $node->selectors);
}

}