From 202077000d84632f310e2b526c1cae785c1696c5 Mon Sep 17 00:00:00 2001
From: Antonio De Marco <antonio@nuvole.org>
Date: Mon, 24 Apr 2017 17:41:49 +0200
Subject: [PATCH] #91: Add methods to interface and remove obsolete manager
 method.

---
 src/Plugin/PatternInterface.php            | 20 ++++++++++++++++++++
 src/UiPatternsManager.php                  | 17 +----------------
 tests/src/Kernel/UiPatternsManagerTest.php |  6 +++---
 3 files changed, 24 insertions(+), 19 deletions(-)

diff --git a/src/Plugin/PatternInterface.php b/src/Plugin/PatternInterface.php
index be8898a39..3658c4206 100644
--- a/src/Plugin/PatternInterface.php
+++ b/src/Plugin/PatternInterface.php
@@ -9,4 +9,24 @@ namespace Drupal\ui_patterns\Plugin;
  */
 interface PatternInterface {
 
+  /**
+   * Get theme implementation for current pattern.
+   *
+   * @see ui_patterns_theme()
+   *
+   * @return array
+   *    Theme implementation array.
+   */
+  public function getThemeImplementation();
+
+  /**
+   * Get library definitions for current pattern.
+   *
+   * @see ui_patterns_library_info_build()
+   *
+   * @return array
+   *    Library definitions array.
+   */
+  public function getLibraryDefinitions();
+
 }
diff --git a/src/UiPatternsManager.php b/src/UiPatternsManager.php
index 5a9091ab6..254f8a259 100644
--- a/src/UiPatternsManager.php
+++ b/src/UiPatternsManager.php
@@ -37,20 +37,6 @@ class UiPatternsManager extends DefaultPluginManager implements PluginManagerInt
     $this->setCacheBackend($cache_backend, 'ui_patterns', ['ui_patterns']);
   }
 
-  /**
-   * Get pattern object.
-   *
-   * @param string $id
-   *    Pattern ID.
-   *
-   * @return \Drupal\ui_patterns\Plugin\PatternBase
-   *    Pattern object.
-   */
-  public function getPattern($id) {
-    // @todo should we statically cache this?
-    return $this->getFactory()->createInstance($id);
-  }
-
   /**
    * Get pattern objects.
    *
@@ -58,10 +44,9 @@ class UiPatternsManager extends DefaultPluginManager implements PluginManagerInt
    *    Pattern objects.
    */
   public function getPatterns() {
-    // @todo should we statically cache this?
     $patterns = [];
     foreach ($this->getDefinitions() as $definition) {
-      $patterns[] = $this->getPattern($definition->id());
+      $patterns[] = $this->getFactory()->createInstance($definition->id());
     }
     return $patterns;
   }
diff --git a/tests/src/Kernel/UiPatternsManagerTest.php b/tests/src/Kernel/UiPatternsManagerTest.php
index 75023c3b2..f22b0c16b 100644
--- a/tests/src/Kernel/UiPatternsManagerTest.php
+++ b/tests/src/Kernel/UiPatternsManagerTest.php
@@ -20,10 +20,10 @@ class UiPatternsManagerTest extends AbstractUiPatternsTest {
    */
   public function testGetPattern() {
     $manager = UiPatterns::getManager();
+    $definitions = $manager->getDefinitions();
 
-    foreach ($manager->getDefinitions() as $definition) {
-      $pattern = $manager->getPattern($definition->id());
-      assert($pattern->getBaseId(), equals($definition->id()));
+    foreach ($manager->getPatterns() as $pattern) {
+      assert($pattern->getBaseId(), equals($definitions[$pattern->getPluginId()]->id()));
     }
   }
 
-- 
GitLab