Ejemplo n.º 1
0
 /**
  * Parses a given block (for internal use)
  *
  * @param  \stdClass  $json the json bit retrieved from the API that represents a block.
  *
  * @return \Prismic\Fragment\Block\BlockInterface  the manipulable object for that block.
  */
 public static function parseBlock($json)
 {
     $label = NULL;
     if (property_exists($json, "label")) {
         $label = $json->label;
     }
     if (preg_match('/heading(\\d)/', $json->type, $level)) {
         $p = StructuredText::parseText($json);
         return new HeadingBlock($p->getText(), $p->getSpans(), $level[1], $label);
     }
     if ($json->type == 'paragraph') {
         $p = StructuredText::parseText($json);
         return new ParagraphBlock($p->getText(), $p->getSpans(), $label);
     }
     if ($json->type == 'list-item') {
         $p = StructuredText::parseText($json);
         return new ListItemBlock($p->getText(), $p->getSpans(), false, $label);
     }
     if ($json->type == 'o-list-item') {
         $p = StructuredText::parseText($json);
         return new ListItemBlock($p->getText(), $p->getSpans(), true, $label);
     }
     if ($json->type == 'image') {
         $view = ImageView::parse($json);
         return new ImageBlock($view, $label);
     }
     if ($json->type == 'embed') {
         return new EmbedBlock(Embed::parse($json), $label);
     }
     if ($json->type == 'preformatted') {
         $p = StructuredText::parseText($json);
         return new PreformattedBlock($p->getText(), $p->getSpans(), $label);
     }
     return null;
 }
Ejemplo n.º 2
0
 /**
  * Parses a given fragment. For internal usage.
  *
  * @param  \stdClass                           $json the json bit retrieved from the API that represents any fragment.
  * @return \Prismic\Fragment\FragmentInterface the manipulable object for that fragment.
  */
 public static function parseFragment($json)
 {
     if (is_object($json) && property_exists($json, "type")) {
         if ($json->type === "Image") {
             $data = $json->value;
             $views = array();
             foreach ($json->value->views as $key => $jsonView) {
                 $views[$key] = ImageView::parse($jsonView);
             }
             $mainView = ImageView::parse($data->main, $views);
             return new Image($mainView, $views);
         }
         if ($json->type === "Color") {
             return new Color($json->value);
         }
         if ($json->type === "GeoPoint") {
             return new GeoPoint($json->value->latitude, $json->value->longitude);
         }
         if ($json->type === "Number") {
             return new Number($json->value);
         }
         if ($json->type === "Date") {
             return new Date($json->value);
         }
         if ($json->type === "Timestamp") {
             return new Timestamp($json->value);
         }
         if ($json->type === "Text") {
             return new Text($json->value);
         }
         if ($json->type === "Select") {
             return new Text($json->value);
         }
         if ($json->type === "Embed") {
             return Embed::parse($json->value);
         }
         if ($json->type === "Link.web") {
             return WebLink::parse($json->value);
         }
         if ($json->type === "Link.document") {
             return DocumentLink::parse($json->value);
         }
         if ($json->type === "Link.file") {
             return FileLink::parse($json->value);
         }
         if ($json->type === "Link.image") {
             return ImageLink::parse($json->value);
         }
         if ($json->type === "StructuredText") {
             return StructuredText::parse($json->value);
         }
         if ($json->type === "Group") {
             return Group::parse($json->value);
         }
         if ($json->type === "SliceZone") {
             return SliceZone::parse($json->value);
         }
         return null;
     }
 }