Example #1
0
 /**
  * Parses a string.
  *
  * @param string $string The string to parse
  * @param string $filename The filename for reference (will be visible in the source map) or path to a fake file which directory will be used for imports
  * @param bool $returnRuleset Return the ruleset?
  *
  * @return $this
  */
 public function parseString($string, $filename = '__string_to_parse__', $returnRuleset = false)
 {
     $string = Util::normalizeString((string) $string);
     // we need unique key
     $key = sprintf('%s[__%s__]', $filename, md5($string));
     // create a dummy information, since we are not parsing a real file,
     // but a string coming from outside
     $this->context->setCurrentFile($filename);
     $importedFile = new ImportedFile($key, $string, time());
     // save information, so the exceptions can handle errors in the string
     // and source map is generated for the string
     $this->context->currentFileInfo->importedFile = $importedFile;
     $this->importer->setImportedFile($key, $importedFile, $key, $this->context->currentFileInfo);
     if ($this->context->sourceMap) {
         $this->context->setFileContent($key, $string);
     }
     $importedFile->setRuleset($ruleset = new RulesetNode([], $this->parse($string)));
     if ($returnRuleset) {
         return $ruleset;
     }
     $this->rules = array_merge($this->rules, $ruleset->rules);
     return $this;
 }