Open Journal Systems  3.3.0
Macro.php
1 <?php
2 /*
3  * citeproc-php
4  *
5  * @link http://github.com/seboettg/citeproc-php for the source repository
6  * @copyright Copyright (c) 2016 Sebastian Böttger.
7  * @license https://opensource.org/licenses/MIT
8  */
9 
10 namespace Seboettg\CiteProc\Style;
11 
20 use SimpleXMLElement;
21 
37 class Macro implements Rendering, HasParent
38 {
39  use ConsecutivePunctuationCharacterTrait;
40 
44  private $children;
45 
49  private $name;
50 
54  private $parent;
61  public function __construct(SimpleXMLElement $node, $parent)
62  {
63  $this->parent = $parent;
64  $attr = $node->attributes();
65  if (!isset($attr['name'])) {
66  throw new CiteProcException("Attribute \"name\" needed.");
67  }
68  $this->name = (string) $attr['name'];
69 
70  $this->children = new ArrayList();
71  foreach ($node->children() as $child) {
72  $this->children->append(Factory::create($child, $this));
73  }
74  }
75 
81  public function render($data, $citationNumber = null)
82  {
83  $ret = [];
85  foreach ($this->children as $child) {
86  $res = $child->render($data, $citationNumber);
87  $this->getChildsAffixesAndDelimiter($child);
88  if (!empty($res)) {
89  $ret[] = $res;
90  }
91  }
92  $res = implode("", $ret);
93  if (!empty($res)) {
94  $res = $this->removeConsecutiveChars($res);
95  }
96  return $res;
97  }
98 
102  public function getName()
103  {
104  return $this->name;
105  }
106 
110  public function getParent()
111  {
112  return $this->parent;
113  }
114 }
Seboettg\CiteProc\Style\Macro
Definition: Macro.php:37
Seboettg\CiteProc\Style\Macro\__construct
__construct(SimpleXMLElement $node, $parent)
Definition: Macro.php:70
Seboettg\CiteProc\Rendering\HasParent
Definition: HasParent.php:17
Seboettg\CiteProc\Root\Root
Definition: Root.php:19
Seboettg\CiteProc\Style\Macro\getName
getName()
Definition: Macro.php:111
Seboettg\CiteProc\Exception\CiteProcException
Definition: CiteProcException.php:20
Seboettg\CiteProc\Style\Macro\render
render($data, $citationNumber=null)
Definition: Macro.php:90
Seboettg\CiteProc\Data\DataList
Definition: DataList.php:22
Seboettg\CiteProc\Style\Macro\getParent
getParent()
Definition: Macro.php:119
Seboettg\CiteProc\Style
Definition: Bibliography.php:10
Seboettg\CiteProc\Styles\ConsecutivePunctuationCharacterTrait
trait ConsecutivePunctuationCharacterTrait
Definition: ConsecutivePunctuationCharacterTrait.php:18
Seboettg\CiteProc\Rendering\Rendering
Definition: Rendering.php:22
Seboettg\Collection\ArrayList
Definition: ArrayList.php:20
Seboettg\CiteProc\Util\Factory
Definition: Util/Factory.php:21
Seboettg\CiteProc\Util\Factory\create
static create($node, $param=null)
Definition: Util/Factory.php:55