You are here

SassNestedRenderer.php in Sassy 7.3

File

phpsass/renderers/SassNestedRenderer.php
View source
<?php

/* SVN FILE: $Id$ */

/**
 * SassNestedRenderer 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
 */
require_once 'SassExpandedRenderer.php';

/**
 * SassNestedRenderer class.
 * Nested style is the default Sass style, because it reflects the structure of
 * the document in much the same way Sass does. Each rule is indented based on
 * how deeply it's nested. Each property has its own line and is indented
 * within the rule. 
 * @package      PHamlP
 * @subpackage  Sass.renderers
 */
class SassNestedRenderer extends SassExpandedRenderer {

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

  /**
   * Returns the indent string for the node
   * @param SassNode the node being rendered
   * @return string the indent string for this SassNode
   */
  protected function getIndent($node) {
    return str_repeat(self::INDENT, $node->level);
  }

  /**
   * 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) {
    $directive = $this
      ->getIndent($node) . $node->directive . $this
      ->between() . $this
      ->renderProperties($node, $properties);
    return preg_replace('/(.*})\\n$/', '\\1', $directive) . $this
      ->end();
  }

  /**
   * Renders rule selectors.
   * @param SassNode the node being rendered
   * @return string the rendered selectors
   */
  protected function renderSelectors($node) {
    $indent = $this
      ->getIndent($node);
    return $indent . join(",\n{$indent}", $node->selectors);
  }

}

Classes

Namesort descending Description
SassNestedRenderer SassNestedRenderer class. Nested style is the default Sass style, because it reflects the structure of the document in much the same way Sass does. Each rule is indented based on how deeply it's nested. Each property has its own line and is…