/** * 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; }
/** * 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; } }