summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/vendor/nojimage/twitter-text-php/lib/Twitter/Text/ParseResults.php')
-rw-r--r--plugins/jetpack/vendor/nojimage/twitter-text-php/lib/Twitter/Text/ParseResults.php203
1 files changed, 203 insertions, 0 deletions
diff --git a/plugins/jetpack/vendor/nojimage/twitter-text-php/lib/Twitter/Text/ParseResults.php b/plugins/jetpack/vendor/nojimage/twitter-text-php/lib/Twitter/Text/ParseResults.php
new file mode 100644
index 00000000..c24f985c
--- /dev/null
+++ b/plugins/jetpack/vendor/nojimage/twitter-text-php/lib/Twitter/Text/ParseResults.php
@@ -0,0 +1,203 @@
+<?php
+
+/**
+ * @author Takashi Nojima
+ * @copyright Copyright 2018, Takashi Nojima
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License v2.0
+ * @package Twitter.Text
+ */
+
+namespace Twitter\Text;
+
+/**
+ * Twitter Text ParseResults
+ *
+ * @author Takashi Nojima
+ * @copyright Copyright 2018, Takashi Nojima
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License v2.0
+ * @package Twitter.Text
+ *
+ * @property int $weightedLength The overall length of the tweet with code points weighted per the ranges defined
+ * in the configuration file.
+ * @property int $permillage Indicates the proportion (per thousand) of the weighted length in comparison to
+ * the max weighted length. A value > 1000 indicates input text that is longer than
+ * the allowable maximum.
+ * @property bool $valid Indicates if input text length corresponds to a valid result.
+ * @property int $displayRangeStart
+ * @property int $displayRangeEnd
+ * @property int $validRangeStart
+ * @property int $validRangeEnd
+ */
+class ParseResults
+{
+
+ /**
+ * A pair of unicode code point indices identifying the inclusive start and exclusive end of
+ * the displayable content of the Tweet.
+ *
+ * @var array
+ * @link https://developer.twitter.com/en/docs/tweets/tweet-updates
+ */
+ protected $displayTextRange = array(0, 0);
+
+ /**
+ * A pair of unicode code point indices identifying the inclusive start and exclusive end of
+ * the valid content of the Tweet.
+ *
+ * @var array
+ * @link https://developer.twitter.com/en/docs/tweets/tweet-updates
+ */
+ protected $validTextRange = array(0, 0);
+
+ /**
+ * @var array
+ */
+ protected $result = array(
+ 'weightedLength' => 0,
+ 'valid' => false,
+ 'permillage' => 0,
+ );
+
+ /**
+ * Tweet parsed results
+ *
+ * @param int $weightedLength
+ * @param int $permillage
+ * @param bool $isValid
+ * @param array $displayTextRange
+ * @param array $validTextRange
+ */
+ public function __construct(
+ $weightedLength = 0,
+ $permillage = 0,
+ $isValid = false,
+ array $displayTextRange = array(0, 0),
+ array $validTextRange = array(0, 0)
+ ) {
+ $this->weightedLength = $weightedLength;
+ $this->permillage = $permillage;
+ $this->valid = $isValid;
+ $this->displayRangeEnd = $displayTextRange[1];
+ $this->displayRangeStart = $displayTextRange[0];
+ $this->validRangeEnd = $validTextRange[1];
+ $this->validRangeStart = $validTextRange[0];
+ }
+
+ /**
+ * property accessor
+ *
+ * @param string $name
+ * @return mixed
+ */
+ public function __get($name)
+ {
+ if ($name === 'displayRangeStart') {
+ return $this->displayTextRange[0];
+ }
+
+ if ($name === 'displayRangeEnd') {
+ return $this->displayTextRange[1];
+ }
+
+ if ($name === 'validRangeStart') {
+ return $this->validTextRange[0];
+ }
+
+ if ($name === 'validRangeEnd') {
+ return $this->validTextRange[1];
+ }
+
+ return isset($this->result[$name]) ? $this->result[$name] : null;
+ }
+
+ /**
+ * property setter
+ *
+ * @param string $name
+ * @param mixed $value
+ * @return void
+ */
+ public function __set($name, $value)
+ {
+ if (
+ $name === 'displayRangeStart'
+ && $this->lte($value, $this->displayTextRange[1], $name, 'displayRangeEnd')
+ ) {
+ $this->displayTextRange[0] = (int)$value;
+ } elseif (
+ $name === 'displayRangeEnd'
+ && $this->gte($value, $this->displayTextRange[0], $name, 'displayRangeStart')
+ ) {
+ $this->displayTextRange[1] = (int)$value;
+ } elseif (
+ $name === 'validRangeStart'
+ && $this->lte($value, $this->validTextRange[1], $name, 'validRangeEnd')
+ ) {
+ $this->validTextRange[0] = (int)$value;
+ } elseif (
+ $name === 'validRangeEnd'
+ && $this->gte($value, $this->validTextRange[0], $name, 'validRangeStart')
+ ) {
+ $this->validTextRange[1] = (int)$value;
+ } elseif ($name === 'valid') {
+ $this->result[$name] = (bool)$value;
+ } elseif (isset($this->result[$name])) {
+ $this->result[$name] = (int)$value;
+ }
+ }
+
+ /**
+ * check value less than equals
+ *
+ * @param int $lessValue
+ * @param int $greaterValue
+ * @param string $lessValueLabel
+ * @param string $greaterValueLabel
+ * @return bool
+ * @throws \RangeException
+ */
+ private function lte($lessValue, $greaterValue, $lessValueLabel, $greaterValueLabel)
+ {
+ if ($lessValue > $greaterValue) {
+ throw new \RangeException("$lessValueLabel should be less than equals $greaterValueLabel: "
+ . "[$lessValue, $greaterValue]");
+ }
+
+ return true;
+ }
+
+ /**
+ * check value less than equals
+ *
+ * @param int $greaterValue
+ * @param int $lessValue
+ * @param string $greaterValueLabel
+ * @param string $lessValueLabel
+ * @return bool
+ * @throws \RangeException
+ */
+ private function gte($greaterValue, $lessValue, $greaterValueLabel, $lessValueLabel)
+ {
+ if ($lessValue > $greaterValue) {
+ throw new \RangeException("$greaterValueLabel should be greater than equals $lessValueLabel: "
+ . "[$lessValue, $greaterValue]");
+ }
+
+ return true;
+ }
+
+ /**
+ * convert to array
+ *
+ * @return array
+ */
+ public function toArray()
+ {
+ return array_merge($this->result, array(
+ 'displayRangeStart' => $this->displayRangeStart,
+ 'displayRangeEnd' => $this->displayRangeEnd,
+ 'validRangeStart' => $this->validRangeStart,
+ 'validRangeEnd' => $this->validRangeEnd,
+ ));
+ }
+}