From 102854060019b32b000c75717f83179e763f98c7 Mon Sep 17 00:00:00 2001
From: Martynas Sudintas <martynas.sudintas@ongr.io>
Date: Wed, 1 Apr 2015 13:02:38 +0300
Subject: [PATCH] Highlight is now implementing builder interface

---
 Highlight/Highlight.php | 30 +++++++++++++++++++++++++-----
 1 file changed, 25 insertions(+), 5 deletions(-)

diff --git a/Highlight/Highlight.php b/Highlight/Highlight.php
index cee68ee..68601de 100644
--- a/Highlight/Highlight.php
+++ b/Highlight/Highlight.php
@@ -11,13 +11,14 @@
 
 namespace ONGR\ElasticsearchBundle\DSL\Highlight;
 
+use ONGR\ElasticsearchBundle\DSL\BuilderInterface;
 use ONGR\ElasticsearchBundle\DSL\NamedBuilderBag;
 use ONGR\ElasticsearchBundle\DSL\NamedBuilderInterface;
 
 /**
  * Data holder for highlight api.
  */
-class Highlight extends NamedBuilderBag
+class Highlight extends NamedBuilderBag implements BuilderInterface
 {
     const TYPE_PLAIN = 'plain';
     const TYPE_POSTINGS = 'postings';
@@ -170,6 +171,14 @@ class Highlight extends NamedBuilderBag
         return $this;
     }
 
+    /**
+     * {@inheritdoc}
+     */
+    public function getType()
+    {
+        return 'highlight';
+    }
+
     /**
      * {@inheritdoc}
      */
@@ -182,6 +191,7 @@ class Highlight extends NamedBuilderBag
                 'fragment_size' => $this->fragmentSize,
                 'number_of_fragments' => $this->numberOfFragments,
                 'tags_schema' => $this->tagsSchema,
+                'fields' => $this->getFields(),
             ]
         );
 
@@ -197,11 +207,21 @@ class Highlight extends NamedBuilderBag
             }
         }
 
-        /** @var NamedBuilderInterface $field */
-        foreach ($this->all() as $field) {
-            $highlight['fields'][$field->getName()] = $field->toArray();
+        return $highlight;
+    }
+
+    /**
+     * Returns fields as array.
+     *
+     * @return array
+     */
+    private function getFields()
+    {
+        $out = [];
+        foreach ($this->all() as $builder) {
+            $out = array_merge($out, [$builder->getName() => $builder->toArray()]);
         }
 
-        return $highlight;
+        return $out;
     }
 }
-- 
GitLab