left = $l; $this->middle = $m; $this->right = $r; $this->format = $f; } function getLeft() { return $this->left; } function getMiddle() { return $this->middle; } function getRight() { return $this->right; } function hasFormat($format) { return ($this->format & $format); } function getHtml() { if ($this->hasFormat($this::LINEFORMAT_HR)) { return "
"; } if ($this->hasFormat($this::LINEFORMAT_BLANK)) { return "
"; } $html = ""; if (!empty($this->left) || $this->left === 0 || $this->left === "0") { $html .= '' . htmlspecialchars($this->left) . ' '; } if (!empty($this->middle) || $this->middle === 0 || $this->middle === "0") { $html .= '' . htmlspecialchars($this->middle) . ' '; } if (!empty($this->right) || $this->right === 0 || $this->right === "0") { $html .= '' . htmlspecialchars($this->right) . ''; } $classes = ["flex"]; if ($this->hasFormat($this::LINEFORMAT_BOLD)) { $classes[] = "bold"; } if ($this->hasFormat($this::LINEFORMAT_CENTER)) { $classes[] = "centered"; } $classstr = implode(" ", $classes); return "
$html
"; } function getPlainText($width) { if ($this->hasFormat($this::LINEFORMAT_HR)) { return str_repeat("-", $width); } if ($this->hasFormat($this::LINEFORMAT_BLANK)) { return str_repeat(" ", $width); } $left = $this->left; $middle = $this->middle; $right = $this->right; $leftln = strlen($left); $middleln = strlen($middle); $rightln = strlen($right); if ($middleln > 0) { $middleln++; $middle = " " . $middle; } if ($rightln > 0) { $rightln++; $right = " " . $right; } $strln = $leftln + $middleln + $rightln; if ($strln < $width) { if ($this->hasFormat($this::LINEFORMAT_CENTER)) { return str_pad($left . $middle . $right, $width, " ", STR_PAD_BOTH); } else { $middle = str_pad($middle, $width - $leftln - $rightln, " ", STR_PAD_BOTH); } } else if ($strln > $width) { $loseln = $strln - $width; $left = substr($this->left, 0, $leftln - $loseln); } return $left . $middle . $right; } function getArray($width = 64) { $data = [ "left" => $this->left, "middle" => $this->middle, "right" => $this->right, "text" => $this->getPlainText($width), "format" => [] ]; if ($this->hasFormat($this::LINEFORMAT_PLAIN)) { $data['format'][] = "plain"; } if ($this->hasFormat($this::LINEFORMAT_BOLD)) { $data['format'][] = "bold"; } if ($this->hasFormat($this::LINEFORMAT_HR)) { $data['format'][] = "hr"; } if ($this->hasFormat($this::LINEFORMAT_CENTER)) { $data['format'][] = "center"; } if ($this->hasFormat($this::LINEFORMAT_BLANK)) { $data['format'][] = "blank"; } return $data; } }