You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
1.8 KiB

<?php namespace Sensory5\Shortcode\Classes;
class ProcessedShortcode implements ShortcodeInterface
{
private $attributes;
private $content;
private $name;
private function __construct()
{
}
/**
* Create from shortcode data
*/
public static function create($attributes, $content, $tagName)
{
$self = new self();
$self->attributes = $attributes;
$self->content = $content;
$self->name = $tagName;
return $self;
}
/**
* Returns new instance of given shortcode with changed content
*
* @param string $content
*
* @return self
*/
public function withContent($content)
{
$self = clone $this;
return $self->content = $content;
}
/**
* Returns shortcode name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Returns associative array(name => value) of shortcode parameters
*
* @return array
*/
public function getParameters()
{
return $this->attributes;
}
/**
* Returns parameter value using its name, will return null for parameter
* without value
*
* @param string $name Parameter name
* @param null $default Value returned if there is no parameter with given name
*
* @return mixed
*/
public function getParameter($name, $default = null)
{
return array_get($this->attributes, $name, $default);
}
/**
* Returns shortcode content (data between opening and closing tag). Null
* means that shortcode had no content (was self closing), do not confuse
* that with empty string (hint: use strict comparison operator ===).
*
* @return string|null
*/
public function getContent()
{
return $this->content;
}
}