/** * Parse Java-Properties * * @param string|null $string The string to parse * * @return array The parsed data * @since 0.2.6 * @codeCoverageIgnore */ private function parseProperties($string = null) { $result = []; $lines = preg_split('/\\n\\t|\\n/', $string); $key = ''; static $isWaitingForOtherLine = false; foreach ($lines as $k => $line) { if (empty($line) || !$isWaitingForOtherLine && strpos($line, '#') === 0) { continue; } if (!strpos($line, '=') && !$isWaitingForOtherLine) { return []; } if (!$isWaitingForOtherLine) { $key = substr($line, 0, strpos($line, '=')); $key = trim($key); $value = substr($line, strpos($line, '=') + 1, strlen($line)); } else { $value .= $line; } // Trim unnecessary white spaces $value = trim($value); $value = Utils::trimWhitespace($value); // Remove unnecessary double/single qoutes $value = Utils::removeQuotes($value); if (strpos($value, '\\') === strlen($value) - strlen('\\')) { $value = substr($value, 0, strlen($value) - 1); $isWaitingForOtherLine = true; } else { $isWaitingForOtherLine = false; } $result[$key] = empty($value) ? '' : $value; unset($lines[$k]); } Utils::unescapeProperties($result); Utils::trimArrayElements($result); Utils::stripBackslashes($result); Utils::fixArrayValues($result); // Fix for dotted properties $data = []; foreach ($result as $k => $v) { Arr::set($data, $k, $v); } return $data; }
/** * {@inheritdoc} * * @param string $key Configuration item key name * * @return bool * @codeCoverageIgnore */ public function delete($key) { if (isset($this->cache[$key])) { // unset($this->cache[$key]); Arr::delete($this->cache, $key); } return Arr::delete($this->data, $key); }