Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / consolidation / config / src / Util / ConfigGroup.php
diff --git a/vendor/consolidation/config/src/Util/ConfigGroup.php b/vendor/consolidation/config/src/Util/ConfigGroup.php
new file mode 100644 (file)
index 0000000..24b29dd
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+namespace Consolidation\Config\Util;
+
+/**
+ * Fetch a configuration value from a configuration group. If the
+ * desired configuration value is not found in the most specific
+ * group named, keep stepping up to the next parent group until a
+ * value is located.
+ *
+ * Given the following constructor inputs:
+ *   - $prefix  = "command."
+ *   - $group   = "foo.bar.baz"
+ *   - $postfix = ".options."
+ * Then the `get` method will then consider, in order:
+ *   - command.foo.bar.baz.options
+ *   - command.foo.bar.options
+ *   - command.foo.options
+ * If any of these contain an option for "$key", then return its value.
+ */
+abstract class ConfigGroup
+{
+    protected $config;
+    protected $group;
+    protected $prefix;
+    protected $postfix;
+
+    public function __construct($config, $group, $prefix = '', $postfix = '.')
+    {
+        $this->config = $config;
+        $this->group = $group;
+        $this->prefix = $prefix;
+        $this->postfix = $postfix;
+    }
+
+    /**
+     * Return a description of the configuration group (with prefix and postfix).
+     */
+    public function describe($property)
+    {
+        return $this->prefix . $this->group . $this->postfix . $property;
+    }
+
+    /**
+     * Get the requested configuration key from the most specific configuration
+     * group that contains it.
+     */
+    abstract public function get($key);
+
+    /**
+     * Given a group name, such as "foo.bar.baz", return the next configuration
+     * group in the fallback hierarchy, e.g. "foo.bar".
+     */
+    protected function moreGeneralGroupName($group)
+    {
+        $result = preg_replace('#\.[^.]*$#', '', $group);
+        if ($result != $group) {
+            return $result;
+        }
+        return false;
+    }
+}