SassList::_build_list PHP Метод

_build_list() публичный статический Метод

public static _build_list ( $list, $separator = ',' )
    public static function _build_list($list, $separator = ',')
    {
        if (is_object($list)) {
            $list = $list->value;
        }
        if (is_array($list)) {
            $newlist = array();
            foreach ($list as $listlet) {
                list($newlist, $separator) = array_merge($newlist, self::_parse_list($listlet, $separator, false));
            }
            $list = implode(', ', $newlist);
        }
        $out = array();
        $size = 0;
        $braces = 0;
        $quotes = false;
        $stack = '';
        $listCount = strlen($list);
        for ($i = 0; $i < $listCount; $i++) {
            $char = substr($list, $i, 1);
            switch ($char) {
                case '"':
                case "'":
                    if (!$quotes) {
                        $quotes = $char;
                    } elseif ($quotes && $quotes == $char) {
                        $quotes = false;
                    }
                    $stack .= $char;
                    break;
                case '(':
                    $braces++;
                    $stack .= $char;
                    break;
                case ')':
                    $braces--;
                    $stack .= $char;
                    break;
                case $separator:
                    if ($braces === 0 && !$quotes) {
                        $out[] = $stack;
                        $stack = '';
                        $size++;
                        break;
                    }
                default:
                    $stack .= $char;
            }
        }
        if (strlen($stack)) {
            if (($braces || $quotes) && count($out)) {
                $out[count($out) - 1] .= $stack;
            } else {
                $out[] = $stack;
            }
        }
        foreach ($out as $k => $v) {
            $out[$k] = trim($v, ', ');
        }
        return $out;
    }

Usage Example

 /**
  * SassImportNode.
  *
  * @param object source token
  *
  * @return SassImportNode
  */
 public function __construct($token, $parent)
 {
     parent::__construct($token, $parent);
     preg_match(self::MATCH, $token->source, $matches);
     foreach (SassList::_build_list($matches[self::FILES]) as $file) {
         $this->files[] = trim($file, '"\'; ');
     }
 }
All Usage Examples Of SassList::_build_list