You are here

class SassDebugNode in Sassy 7

Same name and namespace in other branches
  1. 7.3 phpsass/tree/SassDebugNode.php \SassDebugNode

SassDebugNode class. Represents a Sass @debug or @warn directive. @package PHamlP @subpackage Sass.tree

Hierarchy

Expanded class hierarchy of SassDebugNode

File

phamlp/sass/tree/SassDebugNode.php, line 18

View source
class SassDebugNode extends SassNode {
  const IDENTIFIER = '@';
  const MATCH = '/^@(?:debug|warn)\\s+(.+?)\\s*;?$/';
  const MESSAGE = 1;

  /**
   * @var string the debug/warning message
   */
  private $message;

  /**
   * @var array parameters for the message;
   * only used by internal warning messages
   */
  private $params;

  /**
   * @var boolean true if this is a warning
   */
  private $warning;

  /**
   * SassDebugNode.
   * @param object source token
   * @param mixed string: an internally generated warning message about the
   * source
   * boolean: the source token is a @debug or @warn directive containing the
   * message; True if this is a @warn directive
   * @param array parameters for the message
   * @return SassDebugNode
   */
  public function __construct($token, $message = false, $params = array()) {
    parent::__construct($token);
    if (is_string($message)) {
      $this->message = $message;
      $this->warning = true;
    }
    else {
      preg_match(self::MATCH, $token->source, $matches);
      $this->message = $matches[self::MESSAGE];
      $this->warning = $message;
    }
    $this->params = $params;
  }

  /**
   * Parse this node.
   * This raises an error.
   * @return array An empty array
   */
  public function parse($context) {
    if (!$this->warning || $this->root->parser->quiet === false) {
      set_error_handler(array(
        $this,
        'errorHandler',
      ));
      trigger_error($this->warning ? $this
        ->interpolate(Phamlp::t('sass', $this->message, $this->params), $context) : $this
        ->evaluate(Phamlp::t('sass', $this->message, $this->params), $context)
        ->toString());
      restore_error_handler();
    }
    return array();
  }

  /**
   * Error handler for degug and warning statements.
   * @param int Error number
   * @param string Message
   */
  public function errorHandler($errno, $message) {
    echo '<div style="background-color:#ce4dd6;border-bottom:1px dashed #88338d;color:white;font:10pt verdana;margin:0;padding:0.5em 2%;width:96%;"><p style="height:auto;margin:0.25em 0;padding:0;width:100%;"><span style="font-weight:bold;">SASS ' . ($this->warning ? 'WARNING' : 'DEBUG') . ":</span> {$message}</p><p style=\"margin:0.1em;padding:0;padding-left:0.5em;width:100%;\">{$this->filename}::{$this->line}</p><p style=\"margin:0.1em;padding:0;padding-left:0.5em;width:100%;\">Source: {$this->source}</p></div>";
  }

}

Members

Namesort descending Modifiers Type Description Overrides
SassDebugNode::$message private property *
SassDebugNode::$params private property * * only used by internal warning messages
SassDebugNode::$warning private property *
SassDebugNode::errorHandler public function * Error handler for degug and warning statements. *
SassDebugNode::IDENTIFIER constant
SassDebugNode::MATCH constant
SassDebugNode::MESSAGE constant
SassDebugNode::parse public function * Parse this node. * This raises an error. *
SassDebugNode::__construct public function * SassDebugNode. * Overrides SassNode::__construct
SassNode::$children protected property *
SassNode::$parent protected property *
SassNode::$root protected property *
SassNode::$token protected property *
SassNode::addChild public function * Adds a child to this node. *
SassNode::addWarning public function * Adds a warning to the node. *
SassNode::evaluate protected function * Evaluates a SassScript expression. *
SassNode::getChildren public function * Returns the node's children *
SassNode::getDebug_info private function * Returns the debug_info option setting for this node *
SassNode::getFilename private function * Returns the filename for this node *
SassNode::getLastChild public function * Returns the last child node of this node. *
SassNode::getLevel private function * Returns the level of this node. *
SassNode::getLine private function * Returns the line number for this node *
SassNode::getLine_numbers private function * Returns the line_numbers option setting for this node *
SassNode::getParent public function * Returns the node's parent *
SassNode::getParser public function * Returns the Sass parser. *
SassNode::getPropertySyntax public function * Returns the property syntax being used. *
SassNode::getRenderer public function * Returns the renderer. *
SassNode::getScript public function * Returns the SassScript parser. *
SassNode::getSource private function * Returns the source for this node *
SassNode::getStyle public function * Returns the render style of the document tree. *
SassNode::getVendor_properties private function * Returns vendor specific properties *
SassNode::hasChildren public function * Returns a value indicating if this node has children *
SassNode::hasParent public function * Return a value indicating if this node has a parent *
SassNode::inDirective public function * Returns a value indicating whether this node is in a directive *
SassNode::inSassScriptDirective public function * Returns a value indicating whether this node is in a SassScript directive *
SassNode::interpolate protected function * Replace interpolated SassScript contained in '#{}' with the parsed value. *
SassNode::isa public static function * Returns a value indicating if the token represents this type of node. * 7
SassNode::isChildOf public function * Returns a value indicating if this node is a child of the passed node. * This just checks the levels of the nodes. If this node is at a greater * level than the passed node if is a child of it. *
SassNode::parseChildren protected function * Parse the children of the node. *
SassNode::__clone public function * Resets children when cloned *
SassNode::__get public function * Getter. *
SassNode::__set public function * Setter. *