Open Journal Systems  3.3.0
DateRangeRenderer.php
1 <?php
2 /*
3  * citeproc-php: DateRangeParser.php
4  * User: Sebastian Böttger <sebastian.boettger@thomascook.de>
5  * created at 03.11.19, 20:00
6  */
7 
9 
14 
20 abstract class DateRangeRenderer
21 {
22 
26  protected $parentDateObject;
27 
33  public static function factory(Date $dateObject, $toRender)
34  {
35  $className = self::getRenderer($toRender);
36  return new $className($dateObject);
37  }
38 
44  public function __construct(Date $parentDateObject)
45  {
46  $this->parentDateObject = $parentDateObject;
47  }
48 
49  private static function getRenderer($toRender)
50  {
51  $className = "";
52  switch ($toRender) {
54  $className = "DayRenderer";
55  break;
57  $className = "MonthRenderer";
58  break;
60  $className = "YearRenderer";
61  break;
63  $className = "MonthDayRenderer";
64  break;
66  $className = "YearDayRenderer";
67  break;
69  $className = "YearMonthRenderer";
70  break;
72  $className = "YearMonthDayRenderer";
73  break;
74  }
75  return __NAMESPACE__ . "\\" . $className;
76  }
77 
85  abstract public function parseDateRange(ArrayList $dateParts, DateTime $from, DateTime $to, $delimiter);
86 
94  protected function renderOneRangePart(DatePart $datePart, DateTime $from, DateTime $to, $delimiter)
95  {
96  $prefix = $datePart->renderPrefix();
97  $from = $datePart->renderWithoutAffixes($from, $this->parentDateObject);
98  $to = $datePart->renderWithoutAffixes($to, $this->parentDateObject);
99  $suffix = !empty($to) ? $datePart->renderSuffix() : "";
100  return $prefix . $from . $delimiter . $to . $suffix;
101  }
102 
103  protected function renderDateParts($dateParts, $from, $to, $delimiter)
104  {
105  $ret = "";
106  foreach ($dateParts as $datePart) {
107  if (is_array($datePart)) {
108  $renderedFrom = $datePart[0]->render($from, $this->parentDateObject);
109  $renderedFrom .= $datePart[1]->renderPrefix();
110  $renderedFrom .= $datePart[1]->renderWithoutAffixes($from, $this->parentDateObject);
111  $renderedTo = $datePart[0]->renderWithoutAffixes($to, $this->parentDateObject);
112  $renderedTo .= $datePart[0]->renderSuffix();
113  $renderedTo .= $datePart[1]->render($to, $this->parentDateObject);
114  $ret .= $renderedFrom . $delimiter . $renderedTo;
115  } else {
116  $ret .= $datePart->render($from, $this->parentDateObject);
117  }
118  }
119  return $ret;
120  }
121 }
Seboettg\CiteProc\Rendering\Date\Date\DATE_RANGE_STATE_DAY
const DATE_RANGE_STATE_DAY
Definition: Date.php:40
Seboettg\CiteProc\Rendering\Date\DateRange\DateRangeRenderer\factory
static factory(Date $dateObject, $toRender)
Definition: DateRangeRenderer.php:36
Seboettg\CiteProc\Rendering\Date\Date\DATE_RANGE_STATE_YEARMONTHDAY
const DATE_RANGE_STATE_YEARMONTHDAY
Definition: Date.php:46
Seboettg\CiteProc\Rendering\Date\DateRange
Definition: DateRangeRenderer.php:8
Seboettg\CiteProc\Rendering\Date\DateRange\DateRangeRenderer\__construct
__construct(Date $parentDateObject)
Definition: DateRangeRenderer.php:47
Seboettg\CiteProc\Rendering\Date\DateRange\DateRangeRenderer\renderOneRangePart
renderOneRangePart(DatePart $datePart, DateTime $from, DateTime $to, $delimiter)
Definition: DateRangeRenderer.php:97
Seboettg\CiteProc\Rendering\Date\DateRange\DateRangeRenderer\renderDateParts
renderDateParts($dateParts, $from, $to, $delimiter)
Definition: DateRangeRenderer.php:106
Seboettg\CiteProc\Rendering\Date\DatePart
Definition: DatePart.php:27
Seboettg\CiteProc\Rendering\Date\DateRange\DateRangeRenderer\$parentDateObject
$parentDateObject
Definition: DateRangeRenderer.php:29
Seboettg\CiteProc\Rendering\Date\Date
Definition: Date.php:31
Seboettg\CiteProc\Rendering\Date\DateRange\DateRangeRenderer\parseDateRange
parseDateRange(ArrayList $dateParts, DateTime $from, DateTime $to, $delimiter)
Seboettg\CiteProc\Rendering\Date\Date\DATE_RANGE_STATE_MONTH
const DATE_RANGE_STATE_MONTH
Definition: Date.php:41
Seboettg\CiteProc\Rendering\Date\Date\DATE_RANGE_STATE_YEAR
const DATE_RANGE_STATE_YEAR
Definition: Date.php:43
Seboettg\CiteProc\Rendering\Date\DateTime
Definition: DateTime.php:16
Seboettg\CiteProc\Rendering\Date\DateRange\DateRangeRenderer
Definition: DateRangeRenderer.php:20
Seboettg\CiteProc\Rendering\Date\Date\DATE_RANGE_STATE_MONTHDAY
const DATE_RANGE_STATE_MONTHDAY
Definition: Date.php:42
Seboettg\CiteProc\Rendering\Date\Date\DATE_RANGE_STATE_YEARDAY
const DATE_RANGE_STATE_YEARDAY
Definition: Date.php:44
Seboettg\CiteProc\Rendering\Date\Date\DATE_RANGE_STATE_YEARMONTH
const DATE_RANGE_STATE_YEARMONTH
Definition: Date.php:45
Seboettg\CiteProc\Rendering\Date\DatePart\renderWithoutAffixes
renderWithoutAffixes(DateTime $date, Date $parent=null)
Definition: DatePart.php:110
Seboettg\Collection\ArrayList
Definition: ArrayList.php:20