Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.2.x will end 22 April 2024 (12 months).
  • Bug fixes for security issues in 4.2.x will end 7 October 2024 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.1.x is supported too.

Differences Between: [Versions 310 and 402] [Versions 311 and 402] [Versions 39 and 402] [Versions 400 and 402]

   1  <?php
   2  
   3  /**
   4   * SCSSPHP
   5   *
   6   * @copyright 2012-2020 Leaf Corcoran
   7   *
   8   * @license http://opensource.org/licenses/MIT MIT
   9   *
  10   * @link http://scssphp.github.io/scssphp
  11   */
  12  
  13  namespace ScssPhp\ScssPhp\Formatter;
  14  
  15  use ScssPhp\ScssPhp\Formatter;
  16  
  17  /**
  18   * Expanded formatter
  19   *
  20   * @author Leaf Corcoran <leafot@gmail.com>
  21   *
  22   * @internal
  23   */
  24  class Expanded extends Formatter
  25  {
  26      /**
  27       * {@inheritdoc}
  28       */
  29      public function __construct()
  30      {
  31          $this->indentLevel = 0;
  32          $this->indentChar = '  ';
  33          $this->break = "\n";
  34          $this->open = ' {';
  35          $this->close = '}';
  36          $this->tagSeparator = ', ';
  37          $this->assignSeparator = ': ';
  38          $this->keepSemicolons = true;
  39      }
  40  
  41      /**
  42       * {@inheritdoc}
  43       */
  44      protected function indentStr()
  45      {
  46          return str_repeat($this->indentChar, $this->indentLevel);
  47      }
  48  
  49      /**
  50       * {@inheritdoc}
  51       */
  52      protected function blockLines(OutputBlock $block)
  53      {
  54          $inner = $this->indentStr();
  55  
  56          $glue = $this->break . $inner;
  57  
  58          foreach ($block->lines as $index => $line) {
  59              if (substr($line, 0, 2) === '/*') {
  60                  $replacedLine = preg_replace('/\r\n?|\n|\f/', $this->break, $line);
  61                  assert($replacedLine !== null);
  62                  $block->lines[$index] = $replacedLine;
  63              }
  64          }
  65  
  66          $this->write($inner . implode($glue, $block->lines));
  67  
  68          if (empty($block->selectors) || ! empty($block->children)) {
  69              $this->write($this->break);
  70          }
  71      }
  72  }